Community

Nostr archive

Nostr Events and Event Kinds

The event model behind Nostr: ids, pubkeys, timestamps, kinds, tags, content and signatures.

Nostr Events and Event Kinds visual
Route Under the hood Events, NIPs, relay behavior and the shared formats apps can trust.
Protocol route

Protocol and NIPs guide

This shelf turns standards into plain consequences: what becomes portable, what gets safer, what clients must support and what still needs product judgment.

NIPs All NIPs pages 242 pages in this routeNIP explainer pages, NIP reference pages, Protocol orientation Browse pagesClose shelf

NIP explainer pages

NIP reference pages

Android Signer Application Basic key derivation from mnemonic seed phrase Basic protocol flow bech32-encoded entities BLE Communications Blossom Bridged Events Calendar Events Chats Chess Classified Listings Code Snippets Comments Complete NIP Archive Index Crays NIP Strategy Custom Emoji Data Vending Machines Dealing with Unknown Events Delegated Event Signing Draft Events E2EE Messaging using MLS Ecash Mint Discoverability Encrypted Direct Message Event Deletion Request Expiration Timestamp External Content IDs External Identities Extra metadata fields and tags File Metadata Follow List Forum Threads Geocaching Gift Wrap git stuff Handling Mentions HTTP Auth HTTP File Storage Integration Labeling Lists Live Activities Mapping Nostr keys to DNS-based identifiers Moderated Communities Negentropy Syncing NIP and standards research NIP-01: Basic protocol flow NIP-01: NIP-01 NIP-02: Follow List NIP-02: NIP-02 NIP-03: NIP-03 NIP-03: OpenTimestamps Attestations NIP-04: Encrypted Direct Message NIP-04: NIP-04 NIP-05: Mapping Nostr keys to DNS-based identifiers NIP-05: NIP-05 NIP-06: Basic key derivation from mnemonic seed phrase NIP-06: NIP-06 NIP-07: NIP-07 NIP-07: window.nostr capability for web browsers NIP-08: Handling Mentions NIP-08: NIP-08 NIP-09: Event Deletion Request NIP-09: NIP-09 NIP-10: NIP-10 NIP-10: Text Notes and Threads NIP-12: NIP-12 NIP-13: NIP-13 NIP-13: Proof of Work NIP-14: NIP-14 NIP-14: Subject tag NIP-15: NIP-15 NIP-16: NIP-16 NIP-17: NIP-17 NIP-17: Private Direct Messages NIP-18: NIP-18 NIP-18: Reposts NIP-19: bech32-encoded entities NIP-19: NIP-19 NIP-20: NIP-20 NIP-21: NIP-21 NIP-21: nostr: URI scheme NIP-22: Comments NIP-22: NIP-22 NIP-23: NIP-23 NIP-24: Extra metadata fields and tags NIP-24: NIP-24 NIP-25: NIP-25 NIP-25: Reactions NIP-26: Delegated Event Signing NIP-26: Delegator: NIP-27: NIP-27 NIP-27: Text Note References NIP-28: NIP-28 NIP-28: Public Chat NIP-29: NIP-29 NIP-30: Custom Emoji NIP-30: NIP-30 NIP-31: Dealing with Unknown Events NIP-31: NIP-31 NIP-32: Labeling NIP-32: NIP-32 NIP-33: NIP-33 NIP-34: git stuff NIP-34: NIP-34 NIP-35: NIP-35 NIP-35: Torrents NIP-36: NIP-36 NIP-36: Sensitive Content NIP-37: Draft Events NIP-37: NIP-37 NIP-38: NIP-38 NIP-38: User Statuses NIP-39: External Identities NIP-39: NIP-39 NIP-40: Expiration Timestamp NIP-40: NIP-40 NIP-42: NIP-42 NIP-43: NIP-43 NIP-44: Calculates length of the padded byte array. NIP-44: Versioned Encryption NIP-45: Counting Results NIP-45: NIP-45 NIP-46: NIP-46 NIP-46: Nostr Remote Signing NIP-47: NIP-47 NIP-48: Bridged Events NIP-48: NIP-48 NIP-49: NIP-49 NIP-49: Private Key Encryption NIP-50: Search Capability NIP-51: Lists NIP-51: NIP-51 NIP-52: Calendar Events NIP-52: NIP-52 NIP-53: Live Activities NIP-53: NIP-53 NIP-54: NIP-54 NIP-54: Wiki NIP-55: Android Signer Application NIP-55: NIP-55 NIP-56: NIP-56 NIP-56: Reporting NIP-57: NIP-57 NIP-58: NIP-58 NIP-59: Gift Wrap NIP-59: NIP-59 NIP-5A: Static Websites / nsites NIP-60: NIP-60 NIP-61: NIP-61 NIP-62: NIP-62 NIP-62: Request to Vanish NIP-64: Chess NIP-64: NIP-64 NIP-65: NIP-65 NIP-68: NIP-68 NIP-68: Picture-first feeds NIP-69: NIP-69 NIP-69: Peer-to-peer Order events NIP-70: NIP-70 NIP-70: Protected Events NIP-71: NIP-71 NIP-72: Moderated Communities NIP-72: NIP-72 NIP-73: External Content IDs NIP-73: NIP-73 NIP-75: NIP-75 NIP-77: Negentropy Syncing NIP-77: NIP-77 NIP-78: Application-specific data NIP-78: NIP-78 NIP-7D: Forum Threads NIP-84: Highlights NIP-84: NIP-84 NIP-85: NIP-85 NIP-85: Trusted Assertions NIP-86: NIP-86 NIP-87: Ecash Mint Discoverability NIP-87: NIP-87 NIP-88: NIP-88 NIP-88: Polls NIP-89: NIP-89 NIP-89: Recommended Application Handlers NIP-90: Data Vending Machines NIP-90: NIP-90 NIP-92: NIP-92 NIP-94: File Metadata NIP-94: NIP-94 NIP-96: HTTP File Storage Integration NIP-96: NIP-96 NIP-98: HTTP Auth NIP-98: NIP-98 NIP-99: Classified Listings NIP-99: NIP-99 NIP-A0: Voice Messages NIP-A4: Public Messages NIP-B0: Web Bookmarks NIP-B7: Blossom NIP-BE: BLE Communications NIP-C0: Code Snippets NIP-C7: Chats NIP-CC: Geocaching NIP-EE: E2EE Messaging using MLS NIP-F4: Podcasts NIPs mirror Nostr NIPs Nostr Remote Signing nostr-protocol/nips nostr: URI scheme OpenTimestamps Attestations Peer-to-peer Order events Picture-first feeds Podcasts Polls Private Direct Messages Private Key Encryption Proof of Work Protected Events Public Chat Public Messages Reactions Reporting Reposts Request to Vanish Search Capability Sensitive Content Static Websites / nsites Subject tag Text Note References Text Notes and Threads Torrents Trusted Assertions User Statuses Versioned Encryption Voice Messages Web Bookmarks Wiki window.nostr capability for web browsers

Protocol orientation

NIPs8 min readNostr archive

Nostr Events and Event Kinds

The event model behind Nostr: ids, pubkeys, timestamps, kinds, tags, content and signatures.

Nostr has one basic object: the event. The event is signed, identified, timestamped and tagged. Different event kinds let clients understand profiles, notes, reactions, long-form content, badges, wallet requests and many other formats.

The quick readThe event model behind Nostr: ids, pubkeys, timestamps, kinds, tags, content and signatures.
The protocol shelf works when a reader can see the decision path.
The protocol shelf works when a reader can see the decision path.
Common standards let independent products act like one larger culture.
Common standards let independent products act like one larger culture.

The event object

NIP-01 defines the basic flow. An event includes an id, a public key, creation time, kind, tags, content and signature. The signature proves that the holder of the private key authorized the event content.

  • id. A hash of the serialized event data.
  • pubkey. The author identity.
  • created_at. Unix timestamp.
  • kind. The category of event.
  • tags. References, metadata, relay hints and structured context.
  • content. The payload, often text but not always.
  • sig. The Schnorr signature.

Why kinds matter

Kinds let clients interpret the same event structure differently. A short note, profile metadata, reaction, badge, long-form article, zap receipt or relay list can all use the event model while carrying different meaning.

Tags are the connective tissue

Tags connect events to people, events, relays, addresses, hashtags, geographies, communities, payments and external references. A strong product often depends more on tag design and indexing than on raw posting.

Crays event thinking

For us, event kinds and tags can represent profile context, follows, content access, status, award votes, venue signals, membership proof and governance participation. The design challenge is to make that useful without exposing users to protocol clutter.

What this standard changes

Nostr Events and Event Kinds belongs to the protocol standards layer. The page should help you answer one concrete question instead of forcing you through a generic Nostr essay.

The short version is: The event model behind Nostr: ids, pubkeys, timestamps, kinds, tags, content and signatures. The deeper version is to see which concept, standard, product surface or human decision actually changes because of it.

Who has to implement it

The useful machinery around Nostr Events and Event Kinds is keys, clients, relays, signed events, NIPs, wallets, media and search layers. Name those moving parts directly, because vague protocol language is where confusion starts.

In the events-and-kinds chapter, A strong page gives you enough context to recognize the term in another client, NIP, relay policy, wallet prompt or source document without pretending every reader is already a protocol engineer.

  • Status. Is the NIP mandatory, optional, draft, final or unrecommended?
  • Layer. Client, relay, signer, wallet, media server or indexer?
  • Adoption. Where can you verify support?

Event, tag or service surface

Test Nostr Events and Event Kinds by asking what is signed, where it is stored, who renders it, which relays or services are involved and what survives when the first app or server is unavailable.

In the events-and-kinds chapter, That test keeps the explanation tied to reality. It also tells us which internal links belong in the body: foundations first, then standards, then practical examples.

Compatibility and adoption

In the events-and-kinds chapter, The main risk is that the page can become a definition instead of an explanation. The page should say that plainly and then show the safer reading: what works today, what is experimental and what needs source verification.

In the events-and-kinds chapter, This is where dense content beats long content. Give the reader facts, constraints, examples and next steps instead of repeating broad claims about openness or decentralization.

Technical trust still needs diligence, review and a clear table.
Technical trust still needs diligence, review and a clear table.
A big archive only works when every shelf has a clear next door.
A big archive only works when every shelf has a clear next door.

Product risk

For us, Nostr Events and Event Kinds matters only when it improves understanding or helps a real flow: identity, publishing, relay choice, signing, payment, media, moderation, commerce, venue context or governance.

In the events-and-kinds chapter, That does not mean every page has to become our product pitch. It means the page should make the connection visible when the topic affects our ecosystem, and stay purely educational when it does not.

Neighboring standards

The best next step from Nostr Events and Event Kinds is not a generic link pile. Connect it to the closest prerequisite, the closest technical standard and the closest practical example.

In the events-and-kinds chapter, A large archive becomes useful when every page behaves like a node in a knowledge graph: this explains one thing, points to what it depends on and shows where the idea is used.

How to place Nostr Events and Event Kinds on the map

Read Nostr Events and Event Kinds as part of the NIPs route, not as an isolated entry. Its main surface is technical standards: event kinds, tags, messages, identity formats, encryption, wallet flows and client-relay agreements. That framing matters because a Nostr page is useful only when you can see which layer it belongs to and which layer it does not solve by itself.

The first question is practical: what changes for you if Nostr Events and Event Kinds works well? Sometimes the answer is safer signing, sometimes better relay discovery, sometimes clearer media storage, sometimes a stronger source trail. Keep that question in front of you and the page becomes easier to judge.

  • Layer. NIPs is the parent route, so the page should send you back to that shelf and sideways into adjacent concepts.
  • Evidence. The current source trail starts with NIP-01, Nostr NIPs, nostr.how, Nostr protocol repository. Treat those as anchors, then compare product behavior and NIP support.

What Nostr Events and Event Kinds should help you decide

A good page about Nostr Events and Event Kinds should leave you with a decision, not just recognition. You should know whether it is a protocol primitive, a client behavior, a relay operation, a product example, a research source or our implementation question. That distinction keeps the archive from becoming a flat glossary.

The common mistake is presenting a NIP as if support were automatic across every app and relay. We avoid that by making the claim, the evidence and the next step visible. If a statement depends on a NIP, the page should point to that NIP. If it depends on a project, the page should show the project source. If it affects user safety, the page should say what can fail.

The working example behind Nostr Events and Event Kinds

Use this page with a concrete mental test: a NIP page should translate the spec into product consequences, failure cases and the reader-visible behavior it enables. That example is more useful than a generic definition because Nostr is not one product. The same signed event can be read by different clients, stored by different relays and interpreted through different product choices.

This is also why internal links matter. When the page mentions keys, clients, relays, events, zaps, Blossom, Cashu, FoundUPS or NIPs, those words should lead to the page that explains the concept more deeply. The goal is not to trap you in tabs; the goal is to let you move with context.

Source discipline for Nostr Events and Event Kinds

The source list is part of the content, not decoration. For Nostr Events and Event Kinds, use primary protocol documents first when the claim is technical, project repositories or product pages when the claim is about an app, and research or directory sources when the claim is about ecosystem position. If the sources disagree, the page should show the uncertainty instead of smoothing it away.

That source discipline is how a large archive stays trustworthy. It also helps learning: you get a short explanation first, then a route to the source that proves or complicates it. The page should feel like a guided chapter, but the evidence should still be close enough to inspect.

Before and after reading Nostr Events and Event Kinds

Before reading Nostr Events and Event Kinds, make sure you know the nearby base concepts: a public key identifies, a private key signs, relays carry signed events, clients render those events, and NIPs describe shared behavior. You do not need to memorize the whole protocol, but those pieces prevent most confusion.

After reading Nostr Events and Event Kinds, the next useful move is to compare it with one neighboring page. If this is an app, compare it with a signer, relay or wallet page. If this is a NIP, compare it with the product behavior it enables. If this is a research source, compare it with the hub that uses it. That is how the archive becomes a learning path instead of a pile.

The navigation job of Nostr Events and Event Kinds

Nostr Events and Event Kinds also has a navigation job. It should help you decide whether to move upward to the NIPs hub, sideways to a related concept, or downward into a more technical source. That sounds simple, but it is the difference between browsing and learning.

When a page does that job well, you do not need to keep the whole archive in your head. The page carries enough context to orient you, enough links to continue, and enough source discipline to show where the claims come from.

Back to the Crays Nostr page