NIPs — Nostr Implementation Possibilities Catalog
- NIPs — Nostr Implementation Possibilities
NIPs — Nostr Implementation Possibilities
Complete catalog of published NIPs. Statuses: final (stable), draft (in development), deprecated (replaced).
Core Protocol
NIP-01 — Basic Protocol
draft mandatory
The foundation. Defines the event object, secp256k1/Schnorr signatures, WebSocket communication between clients and relays, REQ/EVENT/CLOSE/OK messages, tag conventions, and kind ranges (0, 1, regular/replaceable/ephemeral/addressable).
NIP-04 — Encrypted Direct Messages (deprecated)
unrecommended
Original DM spec. Encrypts content with shared-secret AES using ECDH. No forward secrecy, no metadata privacy. Use NIP-17 instead.
NIP-17 — Private Direct Messages
final
Modern DM spec using NIP-44 v2 encryption wrapped inside NIP-59 gift-wrapped seals. Randomized timestamps, no pubkey tag, recipient-signed pubkey hiding. Kind 14 for text, kind 15 for files.
Your DM → NIP-44 encrypt → NIP-59 gift wrap (kind 1059) → relay broadcast
NIP-59 — Gift Wraps
final
Encrypted wrapper event (kind 1059) that contains another event. Like stuffing a signed-encrypted letter inside a sealed outer envelope. Randomizes timestamps, eliminates metadata leakage.
Encryption & Authentication
NIP-44 — Encrypted Payloads (Versioned)
final
The encryption standard. Replaces NIP-04. Uses:
- ChaCha20-Poly1305 authenticated encryption
- ECDH shared secret (secp256k1)
- HKDF-SHA256 key derivation
- Versioned format (v2)
- Two conversation modes:
nip44-v2-1andnip44-v2-2
NIP-42 — Client Authentication
draft
Challenge-response to prove you control a pubkey without signing every REQ. Relay sends challenge → client signs → authenticated access.
NIP-98 — HTTP Auth
draft
HTTP-based authentication using signed Nostr events (kind 27235). AUTH header is a base64-encoded signed event.
Identity
NIP-05 — DNS-based Verification
final
Human-readable identity: username@domain.com. The domain serves a JSON file at /.well-known/nostr.json mapping names to pubkeys.
{
"names": {
"bob": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9"
}
}
NIP-19 — bech32-encoded Entities
final
Human-friendly encoding for Nostr entities:
npub1...— public keysnsec1...— private keysnote1...— event IDsnevent1...— event with relay hintsnaddr1...— addressable eventsnprofile1...— profile with relay hints
NIP-21 — nostr: URI Scheme
draft
Deep links: nostr:npub1..., nostr:note1..., etc. Opens in Nostr client.
Social Features
NIP-02 — Contact List and Petnames
draft
Kind 3 (follow list). Your social graph. Tags encode follow relationships with optional petnames:
["p", "<pubkey>", "<optional-relay>", "<optional-petname>"]
NIP-10 — Text Notes (Kind 1)
final
The tweet/note. Content conventions, threading with e tags:
- Root:
["e", "<root-id>", "", "root"] - Reply:
["e", "<parent-id>", "", "reply"]
NIP-18 — Reposts
final
Kind 6 (ordinary repost), Kind 16 (generic repost). Two types:
- Kind 6: basic repost, share an event
- Kind 16: generic repost with type differentiation (
application,article,graphic)
Quote repost = kind 1 with embedded nostr:nevent reference.
NIP-25 — Reactions
final
Kind 7. content is the emoji (or +/- for like/dislike). Tags reference the reacted-to event.
NIP-51 — Lists
draft
Parameterized replaceable events for user-curated lists. All are kind 300xx with d tags.
| Kind | List Type |
|---|---|
| 10000 | Mute list |
| 10001 | Pin list |
| 10002 | Relay list |
| 10003 | Bookmarks |
| 10004 | Communities |
| 10030 | Emoji list |
Long-Form & Media
NIP-23 — Long-form Content
draft
Kind 30023. Articles/blog posts using Markdown content. Addressable by d tag. Supports title, summary, image, published_at tags.
NIP-68 — Picture References
draft
Kind 20. Image-only events with imeta (image metadata) tags.
NIP-71 — Video Events
draft
Kind 21 (horizontal), Kind 22 (vertical shorts). Video content events.
Lightning & Payments
NIP-57 — Lightning Zaps
final
Value-for-value payments over Lightning. Two-event flow:
- Kind 9734 — Zap Request: Sent to LNURL-pay endpoint
- Kind 9735 — Zap Receipt: Published by wallet after payment
Includes split payments with weight-based zap tags.
NIP-47 — Nostr Wallet Connect
final
Wallet service on Nostr. Events:
- Kind 13194: Wallet info (replaceable)
- Kind 23194: Request (ephemeral, encrypted)
- Kind 23195: Response (ephemeral, encrypted)
Commands: pay_invoice, get_balance, make_invoice, lookup_invoice, list_transactions, multi_pay_invoice, multi_pay_keysend.
NIP-60 — Cashu Wallet
draft
Ecash tokens on Nostr. Kinds: 7374 (reserved), 7375 (tokens), 7376 (history). Moon people fly here.
NIP-61 — Nutzaps
draft
Zap-style payments using ecash/Cashu instead of Lightning.
Networking
NIP-65 — Relay List Metadata
draft
Kind 10002. Declares read/write relays:
["r", "wss://my.relay", "write"]
["r", "wss://their.relay", "read"]
NIP-11 — Relay Information
draft
Relay metadata served at wss://<relay> with HTTP headers and NIP-11 doc: name, description, contact, supported NIPs, limitations, fees.
NIP-13 — Proof of Work
draft
Require computational effort to combat spam. Nonce tag with leading zeros in event ID.
Agent & Compute
NIP-46 — Nostr Connect
final
Remote signing (bunker). Separate key management from application. Uses NIP-44 encrypted communication.
NIP-89 — Handler Information
draft
Announces an app/handler service. Kind 31990 (handler info), Kind 31989 (recommendation).
NIP-90 — Data Vending Machines
draft
Marketplace for computation: request jobs, get results, pay. Kinds:
- 5000-5999: Job Request
- 6000-6999: Job Result
- 7000: Job Feedback
Moderation & Community
NIP-28 — Public Chat
final
Channels with kinds 40-44. Create, join, message, mute.
NIP-29 — Groups
draft
Permissioned groups. Kinds 9000-9030 for control events (add/remove/edit user/meta).
NIP-43 — Memberships
draft
Private, restricted access groups. Join requests, invites, role management.
NIP-56 — Reporting
draft
Kind 1984. Content reporting with reason classifications: nudity, malware, spam, impersonation, illegal.
NIP-58 — Badges
draft
Profile badge definitions and awards. Kind 30009 for badge definition, Kind 8 for award.
Miscellaneous
| NIP | Name | Status | Description |
|---|---|---|---|
| 06 | Key Delegation (NIP-26) | see 26 | Moved to 26 |
| 07 | window.nostr | draft |
Browser extension API |
| 09 | Event Deletion | final |
Kind 5, request deletion |
| 15 | Marketplace | draft |
Bids and listings |
| 22 | Comments | draft |
Kind 1111 threaded comments |
| 26 | Delegation | draft |
Delegate signing to another key |
| 32 | Labels | draft |
Kind 1985, labeling system |
| 33 | Param. Replaceable | draft |
Kind 30000+ system |
| 34 | Git on Nostr | draft |
Patches, PRs, issues |
| 35 | Torrents | draft |
Decentralized file sharing |
| 39 | External Identities | draft |
GitHub, Twitter, etc. on profile |
| 50 | Search | draft |
Relay search capability |
| 52 | Calendar | final |
Events, RSVPs, time-based |
| 53 | Live Activities | draft |
Live streaming metadata |
| 54 | Wiki | draft |
DeezNutz Wiki |
| 62 | Vanish | draft |
Ephemeral disappearing messages |
| 72 | Communities | draft |
Moderation with post approval |
| 75 | Zap Goals | draft |
Crowdfunding targets |
| 84 | Highlights | draft |
Highlighted text snippets |
| 88 | Polls | draft |
Voting/opinion polls |
| 94 | File Metadata | draft |
File header info |
| 96 | File Storage | draft |
Blossom file storage |
| 64 | Chess | draft |
PGN chess games |
Status Summary
| Status | Count | Description |
|---|---|---|
| Final | ~15 | Battle-tested, widely deployed |
| Draft | ~60+ | In development, may change |
| Deprecated | ~5 | Replaced by newer specs |
Write a comment