Skip to content

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.

Runs in your browser Free, no sign-up Works for any name@domain

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 scratch

Frequently asked questions

Troubleshooting

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?

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?

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.