content: JSON string: {"name":"...","about":"...","picture":"...","nip05":"...","lud16":"..."}
Kind 0 is the user metadata event – the Nostr equivalent of a profile page. Contains name, display name, picture URL, about/bio, NIP-05 identifier, Lightning address (lud16), and banner. Replaceable – only the latest event by each pubkey is kept. Clients fetch kind 0 when they encounter a pubkey for the first time.
Details
Kind 0 (metadata) is a replaceable event – relays store only the most recent kind 0 per public key. Older metadata events are discarded when a newer one arrives with a higher created_at.
The content is a JSON-serialized string (not an object – it is a string containing JSON). This nesting is intentional: the outer event is the signed envelope, the content field is the profile data.
Common content fields: name: short username/handle display_name: longer display name (can include spaces/emoji) picture: avatar image URL banner: profile header/cover image URL about: bio text website: personal website URL nip05: NIP-05 verified identifier ([email protected] format, for domain verification) lud06: LNURL-pay for Lightning tips (older format) lud16: Lightning address ([email protected] format, preferred over lud06)
NIP-05 verification: the nip05 field contains a '[email protected]' style identifier. Clients verify it by fetching https://domain.com/.well-known/nostr.json?name=user and confirming the pubkey is listed. This provides a human-readable, domain-verifiable identity tied to the Nostr pubkey.
Required Event Fields
Examples
{
"kind": 0,
"pubkey": "hex-public-key",
"created_at": 1700000000,
"tags": [],
"content": "{\"name\":\"alice\",\"display_name\":\"Alice\",\"about\":\"Nostr dev\",\"picture\":\"https://example.com/alice.jpg\",\"nip05\":\"[email protected]\",\"lud16\":\"[email protected]\"}",
"id": "...",
"sig": "..."
}# GET https://example.com/.well-known/nostr.json?name=alice
{
"names": {
"alice": "hex-public-key-of-alice"
},
"relays": {
"hex-public-key-of-alice": [
"wss://relay.damus.io",
"wss://nos.lol"
]
}
}