NIPs

June 16, 2026 ยท View on GitHub

NIPs stand for Nostr Implementation Possibilities.

They exist to document what may be implemented by Nostr-compatible relay and client software.

NIPs listed here are not a protocol checklist. Nothing forces any software to implement any NIP. Each app picks the subset relevant to its use case. Don't implement something just because it exists in this repo. Other standards and NIPs may exist outside this repository (e.g. as pull requests) and may already be deployed in the wild -- they should also be considered for implementation.



List

Event Kinds

This table is not exhaustive. For a machine-readable registry of all known event kinds prefer https://github.com/nostr-protocol/registry-of-kinds (or alternative registries following the same YAML schema).

kinddescriptionNIP
0User Metadata01
1Short Text Note10
3Follows02
4Encrypted Direct Messages04
5Event Deletion Request09
6Repost18
7Reaction25
8Badge Award58
9Chat MessageC7
11Thread7D
13Seal59
14Direct Message17
15File Message17
16Generic Repost18
17Reaction to a website25
20Picture68
21Video Event71
22Short-form Portrait Video Event71
24Public MessageA4
30internal referenceNKBIP-03
31external web referenceNKBIP-03
32hardcopy referenceNKBIP-03
33prompt referenceNKBIP-03
40Channel Creation28
41Channel Metadata28
42Channel Message28
43Channel Hide Message28
44Channel Mute User28
54Podcast EpisodeF4
62Request to Vanish62
64Chess (PGN)64
78Application-specific Data78
443KeyPackageMarmot
444Welcome MessageMarmot
445Group EventMarmot
818Merge Requests54
1018Poll Response88
1021Bid15
1022Bid confirmation15
1234Draft Checkpoint37
1040OpenTimestamps03
1059Gift Wrap59
1063File Metadata94
1068Poll88
1111Comment22
1222Voice MessageA0
1244Voice Message CommentA0
1311Live Chat Message53
1337Code SnippetC0
1617Patches34
1618Pull Requests34
1619Pull Request Updates34
1621Issues34
1622Git Replies (deprecated)34
1630-1633Status34
1971Problem Trackernostrocket
1984Reporting56
1985Label32
1987AI Embeddings / Vector listsNKBIP-02
2003Torrent35
2004Torrent Comment35
2022Coinjoin Pooljoinstr
4550Community Post Approval72
7374Reserved Cashu Wallet Tokens60
7375Cashu Wallet Tokens60
7376Cashu Wallet History60
7516Geocache logCC
7517Geocache proof of findCC
8000Add User43
8001Remove User43
9000-9030Group Control Events29
9041Zap Goal75
9321Nutzap61
9734Zap Request57
9735Zap57
9802Highlights84
10000Mute list51
10001Pin list51
10002Relay List Metadata65, 51
10003Bookmark list51
10004Communities list51
10005Public chats list51
10006Blocked relays list51
10007Search relays list51
10008Profile Badges51, 58
10009User groups51, 29
10011External Identities39
10012Favorite relays list51
10013Private event relay list37
10015Interests list51
10019Nutzap Mint Recommendation61
10020Media follows51
10030User emoji list51
10050Relay list to receive DMs51, 17
10051KeyPackage Relays ListMarmot
10054Favorite podcasts list51
10063User server listB7
10064Authored podcasts list51
10096File storage server list96 (deprecated)
10154Podcast MetadataF4
10166Relay Monitor Announcement66
10312Room Presence53
13194Wallet Info47
13534Membership Lists43
5128nsite manifest snapshot5A
15128Root nsite manifest5A
17375Cashu Wallet Event60
22242Client Authentication42
23194Wallet Request47
23195Wallet Response47
24133Nostr Connect46
24242Blobs stored on mediaserversB7
27235HTTP Auth98
28934Join Request43
28935Invite Request43
28936Leave Request43
30000Follow sets51
30002Relay sets51
30003Bookmark sets51
30004Curation sets51
30005Video sets51
30006Picture sets51
30007Kind mute sets51
30008Badge sets51, 58
30009Badge Definition58
30015Interest sets51
30017Create or update a stall15
30018Create or update a product15
30019Marketplace UI/UX15
30020Product sold as an auction15
30023Long-form Content23
30024Draft Long-form Content23
30030Emoji sets51
30040Curated Publication IndexNKBIP-01
30041Curated Publication ContentNKBIP-01
30063Release artifact sets51
30078Application-specific Data78
30166Relay Discovery66
30267App curation sets51
30311Live Event53
30312Interactive Room53
30313Conference Event53
30315User Statuses38
30382User Trusted Assertion85
30383Event Trusted Assertion85
30384Addressable Trusted Assertion85
30402Classified Listing99
30403Draft Classified Listing99
30617Repository announcements34
30618Repository state announcements34
30818Wiki article54
30819Redirects54
31234Draft Event37
31922Date-Based Calendar Event52
31923Time-Based Calendar Event52
31924Calendar52
31925Calendar Event RSVP52
31989Handler recommendation89
31990Handler information89
32267Software Application
34235Addressable Video Event71
34236Addressable Short Video Event71
34550Community Definition72
34128Legacy nsite manifest5A (deprecated)
35128Named nsite manifest5A
38172Cashu Mint Announcement87
38173Fedimint Announcement87
37516Geocache ListingCC
37517Geocache Curation ListCC
38383Peer-to-peer Order events69
39000-9Group metadata events29
39089Starter packs51
39092Media starter packs51
39701Web bookmarksB0

Message types

Client to Relay

typedescriptionNIP
EVENTused to publish events01
REQused to request events and subscribe to new updates01
CLOSEused to stop previous subscriptions01
AUTHused to send authentication events42
COUNTused to request event counts45

Relay to Client

typedescriptionNIP
EOSEused to notify clients all stored events have been sent01
EVENTused to send events requested to clients01
NOTICEused to send human-readable messages to clients01
OKused to notify clients if an EVENT was successful01
CLOSEDused to notify clients that a REQ was ended and why01
AUTHused to send authentication challenges42
COUNTused to send requested event counts to clients45

Criteria for acceptance in this repository

  1. They should be fully implemented in at least two clients and one relay -- when applicable.
  2. They should make sense.
  3. They should be optional and backwards-compatible: care must be taken such that clients and relays that choose to not implement them do not stop working when interacting with the ones that choose to.
  4. There should be no more than one way of doing the same thing.
  5. Other rules will be made up when necessary.

Is this repository a centralizing factor?

To promote interoperability, we need standards that everybody can follow, and we need them to define a single way of doing each thing without ever hurting backwards-compatibility, and for that purpose there is no way around getting everybody to agree on the same thing and keep a centralized index of these standards. However the fact that such an index exists doesn't hurt the decentralization of Nostr. At any point the central index can be challenged if it is failing to fulfill the needs of the protocol and it can migrate to other places and be maintained by other people.

It can even fork into multiple versions, and then some clients would go one way, others would go another way, and some clients would adhere to both competing standards. This would hurt the simplicity, openness and interoperability of Nostr a little, but everything would still work in the short term.

There is a list of notable Nostr software developers who have commit access to this repository, but that exists mostly for practical reasons, as by the nature of the thing we're dealing with the repository owner can revoke membership and rewrite history as they want -- and if these actions are unjustified or perceived as bad or evil the community must react.

How this repository works

Standards may emerge in two ways: the first way is that someone starts doing something, then others copy it; the second way is that someone has an idea of a new standard that could benefit multiple clients and the protocol in general without breaking backwards-compatibility and the principle of having a single way of doing things, then they write that idea and submit it to this repository, other interested parties read it and give their feedback, then once most people reasonably agree we codify that in a NIP which client and relay developers that are interested in the feature can proceed to implement.

These two ways of standardizing things are supported by this repository. Although the second is preferred, an effort will be made to codify standards emerged outside this repository into NIPs that can be later referenced and easily understood and implemented by others -- but obviously as in any human system discretion may be applied when standards are considered harmful.

License

All NIPs are public domain.

Contributors