The core of Nostr: one signed JSON object called an event, and the handful of messages clients and relays exchange over a WebSocket to publish and subscribe to events.
Kind 3 is your follow list: one p tag per person you follow, with an optional relay hint and a local nickname (petname). Publishing a new one replaces the old one.
Kind 1040 carries an OpenTimestamps proof that an event existed by a certain Bitcoin block. Marked unrecommended upstream: vulnerable to one specific attack and awaiting an update.
The original encrypted DM: kind 4 with AES-CBC content addressed to one p tag. Deprecated in favor of NIP-17 because it leaks who talks to whom and uses weak cryptography.
Lets you show an email-like name such as alice@alpha.example: the domain serves /.well-known/nostr.json mapping names to public keys, and clients check that it matches.
Kind 5 asks relays and clients to delete your own earlier events, referenced by e or a tags. It is a request: nothing can guarantee deletion everywhere.
Spend CPU to make an event id start with zero bits. A nonce tag records the counter and the committed target, so relays can demand a minimum difficulty against spam.
Stalls, products, auctions and NIP-04 checkout messages for decentralized shops. Unrecommended upstream as too complicated: use NIP-99 classified listings instead.
Private chats that hide who talks to whom: messages are unsigned rumors, sealed with NIP-44 by the sender and gift-wrapped with a throwaway key to each participant's DM relays.
Share someone else's event with your followers: kind 6 reposts a text note, kind 16 reposts anything else, and q tags turn a mention into a quote post.
Human-friendly strings like npub1…, nsec1… and nevent1… for showing and sharing keys, ids and pointers. Only for display and input: events and filters always use hex.
Put "nostr:" in front of a NIP-19 code (npub, nprofile, note, nevent, naddr) and you get a link any Nostr app can open, inside notes, on web pages or in QR codes.
Kind 1111 comments: a reply thread you can hang off anything, an article, a file, a podcast episode or a plain web URL, using upper-case tags for the root and lower-case tags for the parent.
Articles and blog posts as kind 30023: Markdown content plus title, summary, image and hashtag tags. Each article has a d tag, so you can edit it and links keep pointing at the latest version.
A catalogue of widely used extras that no other NIP owns: profile fields like display_name, website, banner, bot and birthday, plus the generic r, i, title and t tags.
Likes, dislikes and emoji reactions as kind 7 events that point at the note you reacted to. "+" is a like, "-" a dislike, anything else an emoji. Kind 17 does the same for web pages and other things outside Nostr.
Unrecommended: use NIP-46 remote signing instead. Let one key publish on behalf of another through a signed delegation tag limited by kind and time window.
How to mention people and quote events inside a note's text: write nostr: links in the content, and add p or q tags when you want the person notified or the quote counted.
Unrecommended: use NIP-29 relay-based groups instead. Open chat channels built from five kinds: create a channel (40), update its info (41), post messages (42), and hide messages (43) or mute users (44) for yourself.
Closed or open groups that a relay enforces: members post with an h tag, admins manage the group with kinds 9000–9020, and the relay publishes the group's metadata, admins and members as kinds 39000–39005.
Use your own images as emoji: write :shortcode: in the text and add an emoji tag that maps the shortcode to an image URL. Works in profiles, notes, comments, reactions and statuses.
Unrecommended, though alt tags are still common. Give custom-kind events an alt tag with a one-line human description, so clients that don't know the kind can still show something sensible.
Attach labels to events, people, relays, URLs or topics with kind 1985: an L tag names the vocabulary, l tags carry the labels. Authors can also label their own events. Used for moderation, licences, languages and classification.
Deprecated: renamed "addressable events" and moved into NIP-01. Kinds 30000–39999 are replaced per author and d tag, so the newest version wins and one address always finds it.
Code collaboration over Nostr: announce git repositories, publish their branch state, and send patches, pull requests, issues and status updates as events, with no central forge.
A searchable torrent index on Nostr: kind 2003 lists a torrent's info hash, files, trackers and catalogue ids (IMDb, TMDB…) so anyone can build the magnet link. No torrent files are stored on Nostr.
Save unfinished posts of any kind on relays without anyone else reading them: the draft is encrypted to yourself with NIP-44 inside a kind 31234 wrap, with optional checkpoints and a private relay list.
Prove you also own accounts elsewhere (GitHub, Mastodon, Bluesky, Telegram, Discord…): list them in a kind 10011 event, each pointing at a public post where that account names your npub.
Adds an expiration tag so an event can say when it stops being relevant. Supporting relays stop serving it after that moment and clients hide it, which suits temporary announcements and time-limited offers.
Lets a relay ask "who are you?" before serving or accepting events. The relay sends a challenge, the client signs a short-lived kind 22242 event that echoes it, and the relay then knows which pubkey is on the other end of the connection.
Gives membership relays a shared vocabulary: the relay publishes who its members are and what roles exist, users ask to join with an invite code or ask to leave, and the relay announces each change as a signed event.
The encryption format Nostr uses today: two keys agree on a shared secret, the text is padded to hide its length, encrypted with ChaCha20, authenticated with HMAC-SHA256 and packed into one base64 string with a version byte. It defines no event kind; other NIPs put the result in an event's content.
Adds a COUNT verb so a client can ask a relay "how many events match?" instead of downloading them all. Relays may return an approximate number and a HyperLogLog sketch that clients can merge across relays.
Keeps your secret key in one place, a "bunker", and lets apps ask it to sign. The app and the bunker talk through encrypted kind 24133 events on relays, using JSON-RPC-style requests such as sign_event, get_public_key and nip44_encrypt.
Lets an app pay and create Lightning invoices through your wallet without holding your funds. The wallet gives the app a connection URI; the app then sends encrypted requests such as pay_invoice over relays and gets encrypted results back.
Marks events that were copied into Nostr by a bridge from ActivityPub, Bluesky, RSS or the web. A proxy tag points back to the original object, so clients can link to it and avoid showing the same post twice.
Defines ncryptsec, a password-protected form of a secret key. The password is stretched with scrypt, the key is encrypted with XChaCha20-Poly1305, and the result is a bech32 string starting with ncryptsec1 that is safe to back up but not to publish.
Adds a search field to REQ filters so clients can ask relays for full-text results, such as "best nostr apps". Relays rank results by relevance instead of date and may support extra key:value options like language:en.
A family of list events: one-per-user standard lists (mutes, pins, bookmarks, search relays…) and named sets you can have many of (follow sets, curation sets, relay sets…). Items go in tags when public, or in encrypted content when private.
Calendar entries as Nostr events: all-day events by date, timed events with time zones, calendars that group them, and RSVPs where people answer accepted, declined or tentative. Recurring events are deliberately left out.
Describes live streams and audio/video rooms as events that update while they run: who is hosting, where to watch, how many people are in. Viewers chat with kind 1311 messages, and listeners in a room signal their presence and raised hands.
An open encyclopedia where anyone can write an article on any topic. Articles are addressable kind 30818 events in Djot, many authors can cover the same topic, and readers choose versions through reactions, follows and trusted relays. Forks, merge requests and redirects are events too.
Lets Android apps (and web pages opened on Android) ask a separate signer app to sign events and encrypt or decrypt messages, so only the signer ever holds the secret key. Requests go through intents, a background content resolver or nostrsigner: links.
A kind 1984 report flags a profile, a note or a media file as objectionable, with a type such as spam, impersonation or malware. Anyone can read reports; clients and relays decide for themselves whether to act on them, typically trusting reports from people you follow.
Zaps are Lightning tips recorded on Nostr. The sender signs a zap request and gives it to the recipient's Lightning wallet instead of publishing it; once the invoice is paid, the wallet publishes a zap receipt so everyone can see who zapped what.
Anyone can design a badge and award it to people. Awards are permanent and cannot be transferred, but each recipient chooses which badges to show on their profile and in what order, and can group them into sets.
Hides who is talking to whom by nesting an event in two encrypted envelopes. An unsigned rumor goes inside a seal signed by the real author, and the seal goes inside a gift wrap signed by a throwaway key, so relays only see a random sender and the recipient.
Host a static website on Nostr: a signed manifest maps each file path to the sha256 of a blob on Blossom servers, and a host server turns that into a normal website.
Dedicated video posts for YouTube- or TikTok-style clients: landscape (kind 21) or short vertical (kind 22), with every resolution and audio track listed in imeta tags.
i and k tags point Nostr events at things outside Nostr (books, web pages, podcasts, places, blockchain transactions) so you can find every comment about them.
A fundraising goal as a kind 9041 event: a target amount and the relays where zaps are counted. Zap the goal to contribute and watch the progress bar fill.
Lets apps store their own private data, such as settings, on your relays in any format they like, as kind 30078 (one record per key) or kind 78 (many records).
Lets heavy calculations like web-of-trust scores or follower counts run on a service you choose, which publishes the results as signed events your client can simply read.
An HTTP API, on the same address as the relay's WebSocket, that lets a relay operator ban pubkeys, allow kinds and moderate events with simple JSON-RPC calls signed through NIP-98.
A poll is a kind 1068 event with a question and options; each vote is a kind 1018 event sent to the relays the poll names, and clients count one vote per person.
When your app meets an event kind it can't show, it can find an app that can: apps announce which kinds they handle (31990) and people recommend them (31989).
A marketplace for paid computation over nostr: you post a job (translate, summarize…), services compete to do it and post the result. Now unrecommended in favour of smaller, use-case-specific specs.
When a note links to an image or video, an imeta tag describes that file (type, size, dimensions, hash, alt text) so clients can show a good preview before downloading it.
Log in to an HTTP API with your nostr key: sign a short-lived kind 27235 event naming the exact URL and method, and send it in the Authorization header.
Kind 30402 is a classified ad: something for sale, rent or free, written in Markdown with a title, price, location and images, and editable because it's addressable.
Use Blossom servers for media: files are stored and found by their sha256 hash, and your kind 10063 server list tells others where to look when a link stops working.
Unrecommended. Two nearby devices sync Nostr events over Bluetooth Low Energy without internet: one acts as a relay, the other as a client, using NIP-77 to work out what is missing.
Geocaching on Nostr: hide a cache as a kind 37516 listing, log finds as kind 7516, prove you were there with a kind 7517 event signed by the cache's own key, and group caches into trails.
Unrecommended, superseded by the Marmot Protocol. Defined end-to-end encrypted direct and group chats on Nostr using MLS (RFC 9420), with forward secrecy and post-compromise security.
Podcasts as Nostr feeds: each show has its own keypair, publishes kind 10154 show info and one kind 54 event per episode, and hosts confirm they author it with kind 10164.