Skip to content

Kind 0: User Metadata

Overview

Kind 0 events represent user metadata in the Nostr protocol. These events contain profile information for Nostr users, allowing them to share details about themselves with the network.

Specification

PropertyValue
Kind Number0
Event RangeReplaceable
Defined inNIP-01, NIP-24, NIP-57

Content Format

The content field must be a stringified JSON object containing user profile information.

Schema

json
{
  "name": "<nickname or full name>",
  "about": "<short bio>",
  "picture": "<URL of profile picture>",
  "display_name": "<alternative, bigger name with richer characters>",
  "website": "<web URL related to the event author>",
  "banner": "<URL to a wide (~1024x768) picture for profile background>",
  "bot": true,
  "birthday": {
    "year": 1990,
    "month": 1,
    "day": 1
  },
  "lud06": "<LNURL pay request (bech32-encoded)>",
  "lud16": "<Lightning Address>"
}

Tags

Kind 0 events typically do not require specific tags, though custom tags may be added.

Client Behavior

Clients should:

  • Parse the JSON content to display user profiles.
  • Store and cache user metadata for known users.
  • Update cached metadata when newer events are received.
  • Use fallback mechanisms when specific fields are missing.

Relay Behavior

Relays should:

  • Only store the latest kind 0 event for each pubkey.
  • Older versions of kind 0 events for the same pubkey may be discarded.
  • When answering requests for kind 0 events, return only the latest one even if multiple versions are stored.

Use Cases

  • Setting up a user profile.
  • Updating profile information.
  • Sharing contact details.
  • Building user directories.
  • Creating discoverable user information.

Example

Basic Example

json
{
  "id": "fa5ed84fc8eeb959fd39ad8e48388cfc33075991ef8e50064cfcecfd918bb91b",
  "pubkey": "79dff8f82963424e0bb02708a22e44b4980893e3a4be0fa3cb60a43b946764e3",
  "created_at": 1672068534,
  "kind": 0,
  "tags": [],
  "content": "{\"name\":\"Alex\",\"about\":\"Nostr enthusiast\",\"picture\":\"https://example.com/profile.jpg\"}",
  "sig": "55c7e9ab1f5c499b984ca78a53a63158771cf9dd516377c7a9726511afcb858144eac63394262d44c5135b9e3c19733835a5d397a725c6aedf73b3895423cda0"
}

Example with NIP-24 Fields

json
{
  "id": "fa5ed84fc8eeb959fd39ad8e48388cfc33075991ef8e50064cfcecfd918bb91b",
  "pubkey": "79dff8f82963424e0bb02708a22e44b4980893e3a4be0fa3cb60a43b946764e3",
  "created_at": 1672068534,
  "kind": 0,
  "tags": [],
  "content": "{\"name\":\"Alex\",\"about\":\"Nostr enthusiast\",\"picture\":\"https://example.com/profile.jpg\",\"display_name\":\"Alexander Smith\",\"website\":\"https://example.com\",\"banner\":\"https://example.com/banner.jpg\",\"bot\":false,\"birthday\":{\"year\":1990,\"month\":1,\"day\":1},\"lud06\":\"lnurl1dp68gurn8ghj7um5v93kketj9ehx2amn9uh8wetvdskkkmn0wahz7mrww4excup0dajx2mrv92x9xp\",\"lud16\":\"[email protected]\"}",
  "sig": "55c7e9ab1f5c499b984ca78a53a63158771cf9dd516377c7a9726511afcb858144eac63394262d44c5135b9e3c19733835a5d397a725c6aedf73b3895423cda0"
}

References

  • Kind 3: Contacts List
  • Kind 10000+: Similar replaceable event kinds

Notes

While the basic fields (name, about, picture) are standard, applications may support additional fields from NIP-24 or custom fields for specialized use cases.

NIP-24 Fields

The following additional fields are defined in NIP-24:

  • display_name: An alternative, bigger name with richer characters than name. The name field should always be set regardless of the presence of display_name.
  • website: A web URL related in any way to the event author.
  • banner: An URL to a wide (~1024x768) picture to be optionally displayed in the background of a profile screen.
  • bot: A boolean to clarify that the content is entirely or partially the result of automation, such as with chatbots or newsfeeds.
  • birthday: An object representing the author's birth date. The format is { "year": number, "month": number, "day": number }. Each field MAY be omitted.

NIP-57 Fields

The following additional fields are defined in NIP-57 for Lightning Zaps:

  • lud06: A bech32-encoded LNURL pay request URL. This is used by clients to request a Lightning invoice for sending zaps.
  • lud16: A Lightning Address (in the format [email protected]). This is an alternative to lud06 that clients can use to generate a Lightning invoice for sending zaps.

Deprecated Fields

The following fields are deprecated according to NIP-24 and should be ignored or removed when found:

  • displayName: Use display_name instead.
  • username: Use name instead.