The Nostr Event Model: How NIPs Turn a Signed Object Into a Network
Start here when you want the deep model behind NIP-01, event IDs, tags, filters, replies, deletion requests and the tiny relay messages that make the whole network interoperable.
Why this part of the NIP map matters
The first mistake is to read NIPs like a numbered law book. That makes the repository feel dry and bigger than it needs to be. Read the standards as a set of product promises instead. A NIP says that one piece of behavior can be recognized outside one app: a signed note, a reply, a deletion request, a reaction, a subject tag, a protected event, a count result, a URI, a filter or a command response.
The base idea is simple enough to say in one sentence: a key signs an event, relays carry it, clients decide how to show it. The reason you need the details is that every word in that sentence hides a failure mode. Which key signed it? Which event fields are hashed? Which relay accepted it? Which filter found it? Which client interpreted the tags? Which older event did it replace? Which reply did it point to? If any answer changes from one implementation to another, the network feels less portable than the story promised.
That is why the core NIPs are not beginner trivia. They are the floor. When a post disappears, a thread breaks, a reaction count looks strange or a deleted item still appears somewhere else, the problem often lives in the standards that define event shape, tags and relay conversation. You do not need to become a protocol maintainer to use this knowledge. You need enough of it to know where the product promise ends and where a client is making a local choice.
So begin with the mental model, not with the numbering. Nostr is not a feed. It is a signed-event system with many social and product surfaces on top. Once you see that, NIP-01 is no longer a dry base file. It is the reason the rest of the network can argue, publish, delete, replace, count, relay and rebuild context without one company owning the whole room.
The mental model
The event is the unit of memory. A Nostr event is not just a database row. Its ID is derived from the serialized content, and its signature binds it to a public key. That gives you a portable claim: this key said this thing at this time with these tags and this content.
Tags are the unit of relationship. They are how events point to people, events, addressable objects, topics, relays, URLs and product-specific references. A tag can look like a tiny array in a markdown file, but it is often the difference between a reply that reconstructs cleanly and a conversation that becomes a pile of orphaned posts.
Relays are the unit of delivery. The protocol lets a client publish, request and close subscriptions through WebSocket messages. A relay can accept, reject, store, forget, limit or filter. The standard gives the shared grammar; the relay still has policy.
Replaceability is the unit of state. A profile, relay list, article or app data event may be the latest version of something. A normal note is history. Confusing those two classes is one of the fastest ways to build a client that feels haunted by stale data.
The core standards are therefore not only for implementers. They tell you why a feature is portable, why another feature is only partly portable, and why some failures are healthy disagreement rather than proof that the whole protocol is broken.
Read this topic with one hand on the protocol and one hand on the product. The protocol tells you the shared format. The product tells you what a person actually sees, approves, loses, recovers or can take elsewhere. Both are necessary. One without the other creates either abstract standards talk or a pretty interface with no durable proof underneath.
Use the source links as proof, not as decoration. A useful NIP explanation gives you the mental model first, then sends you to the official markdown when exact fields, status notes, examples or implementation details matter.
The NIP pages in this topic
Basic protocol flow description
NIP-01 is the base contract: event shape, signatures, filters, client-relay messages and the meaning of tags. Everything else inherits its discipline.
Ask what Basic protocol flow description changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 1, kind 10002, relay, event, event.id, kind:1 because these are the terms that usually surface as product behavior. Nearby standards: NIP-10.
Handling Mentions
This document standardizes the treatment given by clients of inline mentions of other events and pubkeys inside the content of textnotes. The official README carries a caution here, so use it as history or compatibility context before you build something new.
Ask what Handling Mentions changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch .tags, .content because these are the terms that usually surface as product behavior. Nearby standards: NIP-27.
Event Deletion Request
A special event with kind 5, meaning "deletion request" is defined as having a list of one or more e or a tags, each referencing an event the author is requesting to be deleted. Deletion requests SHOULD include a k tag for the kind of each event being requested for deletion.
Ask what Event Deletion Request changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch relay, content, pubkey, created_at because these are the terms that usually surface as product behavior.
Text Notes and Threads
["q", "<event-id> or <event-address>", "<relay-url>", "<pubkey-if-a-regular-event>"]
Ask what Text Notes and Threads changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 1, kind:1, .content, ["e", <event-id>, <relay-url>, <marker>, <pubkey>], <event-id>, <relay-url> because these are the terms that usually surface as product behavior. Nearby standards: NIP-21, NIP-22, NIP-01.
Generic Tag Queries
NIP-12 used to define generic tag queries and now lives inside NIP-01. Keep it in the map because tag filters are one of the quiet reasons a relay can answer useful questions instead of dumping a whole feed.
Ask what Generic Tag Queries changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Nearby standards: NIP-01.
Proof of Work
This NIP defines a way to generate and interpret Proof of Work for nostr notes. Proof of Work (PoW) is a way to add a proof of computational work to a note. This is a bearer proof that all relays and clients can universally validate with a small amount of code. This proof can be used as a means of spam deterrence.
Ask what Proof of Work changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch relay, created_at because these are the terms that usually surface as product behavior. Nearby standards: NIP-01.
Subject tag in text events
This NIP defines the use of the "subject" tag in text (kind: 1) events. (implemented in more-speech)
Ask what Subject tag in text events changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 1 because these are the terms that usually surface as product behavior.
Event Treatment
NIP-16 used to describe how clients and relays should treat replaceable, ephemeral and regular events. Its ideas moved into NIP-01, but the old page still explains why event lifetime is part of the base model.
Ask what Event Treatment changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Nearby standards: NIP-01.
Reposts
A repost is a kind 6 event that is used to signal to followers that a kind 1 text note is worth reading.
Ask what Reposts changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 6, kind 1, kind 16, kind 6, kind 1, content because these are the terms that usually surface as product behavior. Nearby standards: NIP-70, NIP-21.
Command Results
NIP-20 defines command results: the small relay response events that tell a client whether publish, close or auth-related actions succeeded, failed or need a clearer explanation.
Ask what Command Results changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Nearby standards: NIP-01.
nostr: URI scheme
This NIP standardizes the usage of a common URI scheme for maximum interoperability and openness in the network.
Ask what nostr: URI scheme changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 30023, nsec, kind:30023, rel="author" because these are the terms that usually surface as product behavior. Nearby standards: NIP-19.
Comment
A comment is a threading note always scoped to a root event or an I-tag.
Ask what Comment changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 1111, kind 1, kind:1111, .content because these are the terms that usually surface as product behavior. Nearby standards: NIP-73, NIP-21, NIP-10, NIP-94.
Extra metadata fields and tags
This NIP keeps track of extra optional fields that can added to events which are not defined anywhere else but have become de facto standards and other minor implementation possibilities that do not deserve their own NIP and do not have a place in other NIPs.
Ask what Extra metadata fields and tags changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 0, kind 3, display_name, name, displayName, username because these are the terms that usually surface as product behavior. Nearby standards: NIP-01, NIP-02, NIP-65, NIP-73, NIP-51.
Reactions
A reaction is a kind 7 event that is used to indicate user reactions to other events. A reaction's content field MUST include user-generated-content indicating the value of the reaction (conventionally +, -, or an emoji).
Ask what Reactions changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 7, kind 17, kind 7, content, id, pubkey because these are the terms that usually surface as product behavior. Nearby standards: NIP-30, NIP-73.
Text Note References
This document standardizes the treatment given by clients of inline references of other events and profiles inside the .content of any event that has readable text in its .content (such as kinds 1 and 30023).
Ask what Text Note References changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 1, kind 30023, .content, nostr:nprofile1qqsw3dy8cpu...6x2argwghx6egsqstvg, nostr:npub1..., nevent1... because these are the terms that usually surface as product behavior. Nearby standards: NIP-21, NIP-18, NIP-19.
Dealing with Unknown Events
When creating a new custom event kind that is part of a custom protocol and isn't meant to be read as text (like kind:1), clients should use an alt tag to write a short human-readable plaintext summary of what that event is about. The official README carries a caution here, so use it as history or compatibility context before you build something new.
Ask what Dealing with Unknown Events changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch kind 1, kind:1 because these are the terms that usually surface as product behavior. Nearby standards: NIP-89.
Parameterized Replaceable Events
NIP-33 introduced parameterized replaceable events, now folded into NIP-01 as addressable events. The important idea is the d tag: one public key can maintain a named object over time without changing its address.
Ask what Parameterized Replaceable Events changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Nearby standards: NIP-01.
Expiration Timestamp
The expiration tag enables users to specify a unix timestamp at which the message SHOULD be considered expired (by relays and clients) and SHOULD be deleted by relays.
Ask what Expiration Timestamp changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch relay, expiration because these are the terms that usually surface as product behavior.
Counting results
Relays may support the verb COUNT, which provides a mechanism for obtaining event counts.
Ask what Counting results changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch relay, COUNT, REQ, {"count": <integer>}, {"count": <integer>, "approximate": <true|false>}, CLOSED because these are the terms that usually surface as product behavior. Nearby standards: NIP-65.
EOSE Completeness Hint
This NIP extends the EOSE message defined in NIP-01 with an optional third element that signals the client that the relay has sent every stored event matching the subscription's filters.
Ask what EOSE Completeness Hint changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch EOSE, limit, REQ, until, created_at, until = oldest received event's created_at because these are the terms that usually surface as product behavior. Nearby standards: NIP-01, NIP-11.
Protected Events
A protected event is an event that can only be published to relays by its author. This is achieved by relays ensuring that the author is authenticated before publishing their own events or by just rejecting events with ["-"] outright.
Ask what Protected Events changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? Watch relay, AUTH because these are the terms that usually surface as product behavior. Nearby standards: NIP-42.
Deep reading: where the details become product behavior
NIP-01: Basic protocol flow description
NIP-01 is the base contract: event shape, signatures, filters, client-relay messages and the meaning of tags. Everything else inherits its discipline.
Ask what Basic protocol flow description changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 1, kind 10002, relay, event, event.id, kind:1, content, pubkey. It also touches NIP-10, so do not read it as an island.
The source structure points you toward Events and signatures, Tags, Kinds, Communication between clients and relays. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-08: Handling Mentions
This document standardizes the treatment given by clients of inline mentions of other events and pubkeys inside the content of textnotes.
Ask what Handling Mentions changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around .tags, .content. It also touches NIP-27, so do not read it as an island.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-09: Event Deletion Request
A special event with kind 5, meaning "deletion request" is defined as having a list of one or more e or a tags, each referencing an event the author is requesting to be deleted. Deletion requests SHOULD include a k tag for the kind of each event being requested for deletion.
Ask what Event Deletion Request changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around relay, content, pubkey, created_at.
The source structure points you toward Client Usage, Relay Usage, Deletion Request of a Deletion Request. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-10: Text Notes and Threads
["q", "<event-id> or <event-address>", "<relay-url>", "<pubkey-if-a-regular-event>"]
Ask what Text Notes and Threads changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 1, kind:1, .content, ["e", <event-id>, <relay-url>, <marker>, <pubkey>], <event-id>, <relay-url>, <pubkey>, <reply-id>. It also touches NIP-21, NIP-22, NIP-01, so do not read it as an island.
The source structure points you toward Abstract, Marked "e" tags (PREFERRED), The "p" tag, Deprecated Positional "e" tags. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-12: Generic Tag Queries
NIP-12 used to define generic tag queries and now lives inside NIP-01. Keep it in the map because tag filters are one of the quiet reasons a relay can answer useful questions instead of dumping a whole feed.
Ask what Generic Tag Queries changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? It also touches NIP-01, so do not read it as an island.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-13: Proof of Work
This NIP defines a way to generate and interpret Proof of Work for nostr notes. Proof of Work (PoW) is a way to add a proof of computational work to a note. This is a bearer proof that all relays and clients can universally validate with a small amount of code. This proof can be used as a means of spam deterrence.
Ask what Proof of Work changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around relay, created_at. It also touches NIP-01, so do not read it as an island.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-14: Subject tag in text events
This NIP defines the use of the "subject" tag in text (kind: 1) events. (implemented in more-speech)
Ask what Subject tag in text events changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 1.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-16: Event Treatment
NIP-16 used to describe how clients and relays should treat replaceable, ephemeral and regular events. Its ideas moved into NIP-01, but the old page still explains why event lifetime is part of the base model.
Ask what Event Treatment changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? It also touches NIP-01, so do not read it as an island.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-18: Reposts
A repost is a kind 6 event that is used to signal to followers that a kind 1 text note is worth reading.
Ask what Reposts changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 6, kind 1, kind 16, kind 6, kind 1, content, id, pubkey. It also touches NIP-70, NIP-21, so do not read it as an island.
The source structure points you toward Quote Reposts, Generic Reposts. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-20: Command Results
NIP-20 defines command results: the small relay response events that tell a client whether publish, close or auth-related actions succeeded, failed or need a clearer explanation.
Ask what Command Results changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? It also touches NIP-01, so do not read it as an island.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-21: nostr: URI scheme
This NIP standardizes the usage of a common URI scheme for maximum interoperability and openness in the network.
Ask what nostr: URI scheme changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 30023, nsec, kind:30023, rel="author". It also touches NIP-19, so do not read it as an island.
The source structure points you toward Linking HTML pages to Nostr entities. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-22: Comment
A comment is a threading note always scoped to a root event or an I-tag.
Ask what Comment changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 1111, kind 1, kind:1111, .content. It also touches NIP-73, NIP-21, NIP-10, NIP-94, so do not read it as an island.
The source structure points you toward Examples. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-24: Extra metadata fields and tags
This NIP keeps track of extra optional fields that can added to events which are not defined anywhere else but have become de facto standards and other minor implementation possibilities that do not deserve their own NIP and do not have a place in other NIPs.
Ask what Extra metadata fields and tags changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 0, kind 3, display_name, name, displayName, username. It also touches NIP-01, NIP-02, NIP-65, NIP-73, NIP-51, NIP-52, so do not read it as an island.
The source structure points you toward kind 0, kind 3, tags. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-25: Reactions
A reaction is a kind 7 event that is used to indicate user reactions to other events. A reaction's content field MUST include user-generated-content indicating the value of the reaction (conventionally +, -, or an emoji).
Ask what Reactions changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 7, kind 17, kind 7, content, id, pubkey, kind:pubkey:d-tag, kind 17. It also touches NIP-30, NIP-73, so do not read it as an island.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-27: Text Note References
This document standardizes the treatment given by clients of inline references of other events and profiles inside the .content of any event that has readable text in its .content (such as kinds 1 and 30023).
Ask what Text Note References changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 1, kind 30023, .content, nostr:nprofile1qqsw3dy8cpu...6x2argwghx6egsqstvg, nostr:npub1..., nevent1..., nostr:nevent1..., kind:1. It also touches NIP-21, NIP-18, NIP-19, so do not read it as an island.
The source structure points you toward Example of a profile mention process, Verbose and probably unnecessary considerations. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-31: Dealing with Unknown Events
When creating a new custom event kind that is part of a custom protocol and isn't meant to be read as text (like kind:1), clients should use an alt tag to write a short human-readable plaintext summary of what that event is about.
Ask what Dealing with Unknown Events changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around kind 1, kind:1. It also touches NIP-89, so do not read it as an island.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-33: Parameterized Replaceable Events
NIP-33 introduced parameterized replaceable events, now folded into NIP-01 as addressable events. The important idea is the d tag: one public key can maintain a named object over time without changing its address.
Ask what Parameterized Replaceable Events changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? It also touches NIP-01, so do not read it as an island.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
NIP-40: Expiration Timestamp
The expiration tag enables users to specify a unix timestamp at which the message SHOULD be considered expired (by relays and clients) and SHOULD be deleted by relays.
Ask what Expiration Timestamp changes in the event model: does it affect IDs, tags, replies, deletion, counts, filters, URI handling or relay responses? In the official file, slow down around relay, expiration.
The source structure points you toward the event fields, examples and edge cases. That is where the useful detail lives: not in the fact that the NIP exists, but in the exact behavior it asks independent software to share. When you test a product claim, open the official file, try another client or relay, and ask whether the visible feature still means the same thing outside the app that introduced it.
What to check before you trust a product claim
Start with the most concrete promise. Does the feature claim portable identity, encrypted messaging, relay discovery, zaps, wallet permissions, long-form publishing, moderation, search or application data? Name the promise before you open the source. Otherwise every NIP starts to look like background reading.
Open the official markdown next. Look for required fields, event kinds, tags, relay messages, status warnings and examples. Do not stop at the title. Many Nostr mistakes happen because a product advertises a NIP number while ignoring the boring edge case that actually protects the user.
Then test another implementation. If the event, payment, list, message, article, badge or relay behavior only works inside one product, the feature may still be useful, but it is not yet a strong portability claim. The second implementation is where the standard stops being a slogan.
Finally, check the risk class. Keys, private messages, money, storage, moderation and identity need more caution than a playful app format. A product can be young and promising, but the page should not ask you to trust it like a mature standard when the source trail is thin.
How this area usually fails
The first failure is overclaiming. A client says it supports a NIP, but it supports only the easiest happy path. That may be enough for a demo and not enough for real use.
The second failure is hidden custody. The app feels convenient because it quietly holds the key, routes the wallet, chooses relays or stores media in a way that makes leaving hard. Nostr is most interesting when those boundaries are visible.
The third failure is stale source material. A guide, blog post or old archive page may describe a version of the ecosystem that changed. The official repository and active implementations matter because Nostr standards are living documents.
The fourth failure is social flattening. Reports, badges, zaps, follows, labels and community events are not neutral numbers. They are signed social signals. You need to know who produced them, who displays them and what the product does with them.
The fifth failure is pretending the protocol solves product judgment. A NIP can define a format. It cannot force a client to explain it well, moderate fairly, store files forever or make a wallet prompt humane. Good pages keep that distinction clear.
Where to go next
The common thread is that a NIP is not a magic wand. It gives independent software a shared object, permission, message, tag, filter or social signal. The product still has to explain what it does with that shared shape.
If you are new to the topic, read the cards first and open only the NIP that matches your immediate question. If you are building, read the official markdown and test against more than one implementation. If you are evaluating a product, ask which parts travel with your key and which parts stay inside the product.
That is the difference between a useful NIP atlas and a numbered archive. The archive tells you that a document exists. The Wissenslexikon tells you why the document changes the way Nostr feels in your hands.
When a NIP touches keys, money, private messages, moderation or storage, slow down. Those are not decorative protocol topics. They decide who can sign, who can pay, who can read, who can hide, who can recover and who can leave.
The best Nostr product writing stays close to those consequences. It does not bury you in acronym soup, and it does not pretend every standard is equally mature. It tells you what you can do next, what you should verify, and where trust enters the room.
Direct sources
Use these sources to verify the text, not as decoration. The official repository is the canonical source; mirrors, guides and project pages help you see how the standard is explained or implemented elsewhere.

