NIP-51: Lists
NIP-51 defines list events for organizing users, events, relays, hashtags, and other references. It is the main protocol for bookmarks, mute lists, follow sets, relay sets, and several other user-curated collections.
Standard Lists and Sets
- Standard lists use replaceable event kinds such as kind
10000mute lists, kind10003bookmarks, and kind10007search relays. - Sets use addressable kinds with
dtags, such as kind30000follow sets, kind30003bookmark sets, and kind30030emoji sets.
The distinction matters in client behavior. Standard lists imply one canonical list per user and kind. Sets imply many named collections, so clients must preserve each list’s d tag.
Structure
Lists use tags to reference content:
ptags for pubkeysetags for eventsatags for addressable eventsttags for hashtagswordtags for muted wordsrelaytags for relay URLs in relay-oriented list kinds
Some list kinds have narrower allowed tag shapes than others. For example, relay-oriented lists use relay tags, while bookmarks are expected to point to notes or addressable events. Clients that treat every NIP-51 list as arbitrary free-form tags will lose interoperability.
Public vs Private
Lists can have public tags and private items. Private items are serialized as a JSON array that mirrors the tags structure, encrypted, and stored in the event content. The current spec uses NIP-44 for this self-encryption model, with NIP-04 only as legacy compatibility.
That split lets users publish a visible list shell while hiding some entries. A bookmark list can stay public while private notes or private bookmarks remain in encrypted content.
Useful Kinds
- Kind 10000: mute list for pubkeys, threads, hashtags, and muted words
- Kind 10003: bookmarks for notes and addressable content
- Kind 10007: preferred search relays
- Kind 30002: relay sets for named relay groups
- Kind 30006: picture curation sets
- Kind 39089: starter packs for shareable follow bundles
Recent spec changes moved hashtags out of generic bookmarks and into interest sets, and added kind 30006 for picture curation. Both changes reduce ambiguity in how clients interpret list contents.
Primary sources:
Mentioned in:
- Newsletter #1: NIP Updates
- Newsletter #2: NIP Updates
- Newsletter #5: NIP Deep Dive
- Newsletter #8: njump Adds NIP-51 Support
See also: