NIP-05 Checker
Check that a NIP-05 identifier — name@domain — actually resolves to the right public key, and see what to fix when it does not.
NIP-05 Checker
Verify NIP-05 identifiers (like user@domain.com). These provide human-readable names on Nostr.
Part of the free Nostr tools collection.
What NIP-05 is
NIP-05 turns an unreadable Nostr public key into a human-readable address like
alice@example.com. It works through a small JSON file
published on the domain: clients fetch it, find your name in it, and confirm the
listed key matches your profile — at which point the identifier shows up as
verified next to your name. That is the whole mechanism: no registry, no
application process, just a file on a web server. The
NIP-05 identity guide
explains it end to end.
Common failures this catches
"Unverified" almost never means your key is wrong — it means the file serving your mapping has one of a handful of well-known problems:
-
File missing or at the wrong path
Clients look for the mapping at https://your-domain/.well-known/nostr.json. If the file lives anywhere else — or the server answers with a 404 or a redirect — verification fails everywhere.
-
Missing CORS header
The file must be served with Access-Control-Allow-Origin: * or browsers refuse to read it. Native apps often fetch it without that restriction — which is why an identifier can look fine in one client and unverified in a web client.
-
Name missing from the file
The "names" object must contain your exact name, and NIP-05 names are lowercase. A typo, a capital letter, or an entry that was never added all produce the same "not found" result.
-
npub where hex should be
The classic hand-editing mistake: the value must be your public key as 64 hexadecimal characters, not the npub1... form. The file can load perfectly and still fail verification in clients because of this.
-
Broken JSON
A trailing comma or a missing quote makes the whole file unparseable. If the checker reports a JSON error, run the file through any JSON validator to find the exact character.
Don't have a NIP-05 address yet?
Setting one up takes a few minutes with a provider, or one small file if you own a domain. The guide covers both routes, the exact JSON format, and the hex-vs-npub detail that trips most people.
Set up NIP-05 from scratchFrequently asked questions
Troubleshooting Why does my NIP-05 show as unverified in my client?
Why does my NIP-05 show as unverified in my client?
Almost always one of four things: the nostr.json file is missing or not at the required path (https://your-domain/.well-known/nostr.json); the server does not send the CORS header (Access-Control-Allow-Origin: *) that web-based clients need to read it; your name is missing from the "names" object in the file — NIP-05 names must be lowercase; or the file maps your name to an npub1... string instead of the 64-character hex public key the spec requires. Run the checker above to narrow it down, then follow the NIP-05 guide for the exact fix.
Basics Does NIP-05 give me a checkmark like Twitter?
Does NIP-05 give me a checkmark like Twitter?
No — and this is the most common misunderstanding about it. Some clients do render a check-style icon next to a verified NIP-05, but all it proves is that whoever controls that domain agreed to map that name to your public key. It is identity, not endorsement: nobody reviews accounts, there is no central verifier, and anyone with a domain can issue identifiers under it. Treat NIP-05 as a human-readable address, like an email address, not as a badge of trustworthiness.
Basics Do I need my own domain?
Do I need my own domain?
No. Plenty of services will host your identifier under their domain, often free or for a small fee, and some clients offer one during onboarding. Using your own domain is the more self-sovereign option — you control the mapping and can change hosting without changing your address — but a provider identifier verifies exactly the same way. The NIP-05 guide walks through both routes.
Want the full picture first? Read the NIP-05 identity guide.