NIP-05 associates Nostr public keys with human-readable internet identifiers like user@example.com. Clients compare a signed profile claim with an HTTPS name-to-key mapping hosted by the named domain.

How It Works

A user claims an identifier by adding a nip05 field to their profile metadata. The identifier follows the format name@domain. Clients verify the claim by fetching https://domain/.well-known/nostr.json?name=user and checking that the name maps to the signed profile author’s lowercase hexadecimal key. The endpoint must not redirect; clients must ignore redirects.

The JSON file at the well-known path contains a names object mapping local names to hex pubkeys:

{
  "names": {
    "alice": "abc123...",
    "bob": "def456..."
  }
}

When verification succeeds, clients can display the identifier instead of or alongside the npub. Some clients show a verification indicator, while others show the identifier as plain text and leave trust decisions to the reader.

Trust Model

NIP-05 is not a global username registry. A successful lookup establishes that the domain’s mapping matches the profile author’s claim at lookup time. It does not establish legal identity or permanent ownership of the identifier. A changed mapping must not replace a followed public key.

That makes NIP-05 useful for discoverability and reputation, but weaker than users often assume. Following an account stays anchored to its public key; the domain-backed name is a mutable association. The server can observe name lookups and their network origins.

Relay Hints

The nostr.json file can optionally include a relays object mapping pubkeys to arrays of relay URLs. This helps clients discover where to find events from a particular user.

Interop Notes

The lowercase requirement matters more than it looks. The identifier local part uses a-z0-9-_., and returned public keys are lowercase hexadecimal. Client parser tolerance is separate from this specified format.

Another practical detail is the special _ name, which lets a domain map the bare identifier form like _@example.com or just example.com in clients that support it. Not every client exposes that form the same way, so users still get the most consistent results with explicit name@domain identifiers.

Implementation Status

Most major clients support NIP-05 verification:

  • Damus, Amethyst, Primal display verified identifiers
  • Many relay services offer NIP-05 identifiers as a feature
  • Numerous free and paid NIP-05 providers exist

Primary sources:

Mentioned in:

See also: