Community

NIPs

NIP-5A: Static Websites (nsites)

NIP-5A turns a Nostr key into a static website publisher: signed site manifests map URL paths to Blossom content hashes, while named sites, snapshots and aggregate hashes make the site portable.

NIP-5A: Static Websites (nsites) visual
NIPs Under the hood Events, NIPs, relay behavior and the shared formats apps can trust.
Back to Nostr
NIPs

NIPs shelf

NIP pages connect standards to product behavior, event kinds, relay rules, wallets, media, privacy and implementation risk.

NIPs All NIPs pages NIPs route archiveNIP explainer pages, NIP reference pages, Protocol orientation Browse pagesClose shelf

Protocol orientation

Field guides

Awesome Nostr branches

NIP reference pages

Android Signer ApplicationBasic key derivation from mnemonic seed phraseBasic protocol flowbech32-encoded entitiesBLE CommunicationsBlossomBridged EventsCalendar EventsChatsChessClassified ListingsCode SnippetsCommentsComplete NIP Archive IndexCrays NIP StrategyCustom EmojiData Vending MachinesDealing with Unknown EventsDelegated Event SigningDraft EventsE2EE Messaging using MLSEcash Mint DiscoverabilityEncrypted Direct MessageEvent Deletion RequestExpiration TimestampExternal Content IDsExternal IdentitiesExtra metadata fields and tagsFile MetadataFollow ListForum ThreadsGeocachingGift Wrapgit stuffHandling MentionsHTTP AuthHTTP File Storage IntegrationLabelingListsLive ActivitiesMapping Nostr keys to DNS-based identifiersModerated CommunitiesNegentropy SyncingNIP and standards researchNIP-5A: Static Websites (nsites)NIP-02: Follow ListNIP-03: OpenTimestamps AttestationsNIP-04: Encrypted Direct MessageNIP-05: Mapping Nostr keys to DNS-based identifiersNIP-5A: Static Websites / nsitesNIP-06: Basic key derivation from mnemonic seed phraseNIP-07: window.nostr capability for web browsersNIP-7D: Forum ThreadsNIP-08: Handling MentionsNIP-09: Event Deletion RequestNIP-10: Text Notes and ThreadsNIP-12: Generic tag queriesNIP-13: Proof of WorkNIP-14: Subject tagNIP-15: Nostr MarketplaceNIP-16: Event treatmentNIP-17: Private Direct MessagesNIP-18: RepostsNIP-19: bech32-encoded entitiesNIP-20: Command resultsNIP-21: nostr: URI schemeNIP-22: CommentsNIP-23: Long-form ContentNIP-24: Extra metadata fields and tagsNIP-25: ReactionsNIP-26: Delegated Event SigningNIP-27: Text Note ReferencesNIP-28: Public ChatNIP-29: Relay-based GroupsNIP-30: Custom EmojiNIP-31: Dealing with Unknown EventsNIP-32: LabelingNIP-33: Parameterized replaceable eventsNIP-34: git stuffNIP-35: TorrentsNIP-36: Sensitive ContentNIP-37: Draft EventsNIP-38: User StatusesNIP-39: External IdentitiesNIP-40: Expiration TimestampNIP-42: Authentication of clients to relaysNIP-43: Relay Access Metadata and RequestsNIP-44: Versioned EncryptionNIP-45: Counting ResultsNIP-46: Nostr Remote SigningNIP-5A: Static Websites (nsites)NIP-48: Bridged EventsNIP-49: Private Key EncryptionNIP-50: Search CapabilityNIP-51: ListsNIP-52: Calendar EventsNIP-53: Live ActivitiesNIP-54: WikiNIP-55: Android Signer ApplicationNIP-56: ReportingNIP-57: Lightning ZapsNIP-58: BadgesNIP-59: Gift WrapNIP-60: Cashu WalletNIP-61: NutzapsNIP-62: Request to VanishNIP-64: ChessNIP-65: Relay List MetadataNIP-68: Picture-first feedsNIP-69: Peer-to-peer Order eventsNIP-70: Protected EventsNIP-71: Video EventsNIP-72: Moderated CommunitiesNIP-73: External Content IDsNIP-75: Zap GoalsNIP-77: Negentropy SyncingNIP-78: Application-specific dataNIP-84: HighlightsNIP-85: Trusted AssertionsNIP-86: Relay Management APINIP-87: Ecash Mint DiscoverabilityNIP-88: PollsNIP-89: Recommended Application HandlersNIP-90: Data Vending MachinesNIP-92: Media Attachments MetadataNIP-94: File MetadataNIP-96: HTTP File Storage IntegrationNIP-98: HTTP AuthNIP-99: Classified ListingsNIP-A0: Voice MessagesNIP-A4: Public MessagesNIP-B0: Web BookmarksNIP-B7: BlossomNIP-BE: BLE CommunicationsNIP-C0: Code SnippetsNIP-C7: ChatsNIP-CC: GeocachingNIP-EE: E2EE Messaging using MLSNIP-F4: PodcastsNIPs mirrorNostr NIPsNostr Remote Signingnostr-protocol/nipsnostr: URI schemeOpenTimestamps AttestationsPeer-to-peer Order eventsPicture-first feedsPodcastsPollsPrivate Direct MessagesPrivate Key EncryptionProof of WorkProtected EventsPublic ChatPublic MessagesReactionsReportingRepostsRequest to VanishSearch CapabilitySensitive ContentStatic Websites / nsitesSubject tagText Note ReferencesText Notes and ThreadsTorrentsTrusted AssertionsUser StatusesVersioned EncryptionVoice MessagesWeb BookmarksWikiwindow.nostr capability for web browsers

Research and library

Source inventory

Deep Research: Standards and NIPsResearch Source: Android Signer ApplicationResearch Source: Application-specific dataResearch Source: Authentication of clients to relaysResearch Source: Basic key derivation from mnemonic seed phraseResearch Source: Basic protocol flowResearch Source: BLE CommunicationsResearch Source: BlossomResearch Source: Bridged EventsResearch Source: Calendar EventsResearch Source: ChatsResearch Source: ChessResearch Source: Classified ListingsResearch Source: Code SnippetsResearch Source: CommentsResearch Source: Counting ResultsResearch Source: Custom EmojiResearch Source: Data Vending MachinesResearch Source: Dealing with Unknown EventsResearch Source: Delegated Event SigningResearch Source: Draft EventsResearch Source: E2EE Messaging using MLSResearch Source: Ecash Mint DiscoverabilityResearch Source: Encrypted Direct MessageResearch Source: Event Deletion RequestResearch Source: Expiration TimestampResearch Source: External Content IDsResearch Source: External IdentitiesResearch Source: Extra metadata fields and tagsResearch Source: File MetadataResearch Source: Follow ListResearch Source: Forum ThreadsResearch Source: GeocachingResearch Source: Gift WrapResearch Source: Groups NIP-29Research Source: Handling MentionsResearch Source: HighlightsResearch Source: HTTP AuthResearch Source: HTTP File Storage IntegrationResearch Source: LabelingResearch Source: ListsResearch Source: Live ActivitiesResearch Source: Mapping Nostr keys to DNS-based identifiersResearch Source: Moderated CommunitiesResearch Source: NIP-03: OpenTimestamps AttestationsResearch Source: NIP-5A: Static Websites / nsitesResearch Source: NIP-07: window.nostr capability for web browsersResearch Source: NIP-10: Text Notes and ThreadsResearch Source: NIP-11: Relay Information DocumentResearch Source: NIP-13: Proof of WorkResearch Source: NIP-14: Subject tagResearch Source: NIP-17: Private Direct MessagesResearch Source: NIP-18: RepostsResearch Source: NIP-19: bech32-encoded entitiesResearch Source: NIP-21: nostr: URI schemeResearch Source: NIP-25: ReactionsResearch Source: NIP-27: Text Note ReferencesResearch Source: NIP-28: Public ChatResearch Source: NIP-29 Groups RelayResearch Source: NIP-29: Relay-based GroupsResearch Source: NIP-34: git stuffResearch Source: NIP-35: TorrentsResearch Source: NIP-36: Sensitive ContentResearch Source: NIP-38: User StatusesResearch Source: NIP-43: Relay Access Metadata and RequestsResearch Source: NIP-44: Versioned EncryptionResearch Source: NIP-46: Nostr Remote SigningResearch Source: NIP-49: Private Key EncryptionResearch Source: NIP-50: Search CapabilityResearch Source: NIP-54: WikiResearch Source: NIP-56: ReportingResearch Source: NIP-62: Request to VanishResearch Source: NIP-65: Relay List MetadataResearch Source: NIP-66 / nostr-watch stackResearch Source: NIP-66: Relay Liveness MonitoringResearch Source: NIP-68: Picture-first feedsResearch Source: NIP-69: Peer-to-peer Order eventsResearch Source: NIP-70: Protected EventsResearch Source: NIP-77: Negentropy SyncingResearch Source: NIP-85: Trusted AssertionsResearch Source: NIP-86: Relay Management APIResearch Source: NIP-88: PollsResearch Source: NIP-89: Recommended Application HandlersResearch Source: NIP-A0: Voice MessagesResearch Source: NIP-A4: Public MessagesResearch Source: NIP-B0: Web BookmarksResearch Source: NIP-F4: PodcastsResearch Source: NIPs mirrorResearch Source: nostr-protocol/nips GitHub
Publishing and mediadraftoptionalnsites

NIP-5A: Static Websites (nsites)

NIP-5A turns a Nostr key into a static website publisher: signed site manifests map URL paths to Blossom content hashes, while named sites, snapshots and aggregate hashes make the site portable.

The quick readNIP-5A turns a Nostr key into a static website publisher: signed site manifests map URL paths to Blossom content hashes, while named sites, snapshots and aggregate hashes make the site portable.
NIP5AStatusdraft / optionalRoot sitekind 15128Named sitekind 35128Snapshotkind 5128Storage layerBlossom assets

A static site can be signed by a person, not only hosted by a domain

NIP-5A is about publishing websites without making DNS and a single web host the only source of truth. The actual files live as Blossom assets. The Nostr event is the signed manifest that says which file hash belongs at which path.

That is a subtle but important shift. A site becomes something a pubkey announces. A client, gateway or host can resolve the manifest, fetch the blobs and serve the same site. If one host disappears, the site identity can survive as long as the manifest and blobs are still discoverable.

The standard fits the larger Nostr pattern: signed identity, replaceable state and content-addressed storage. It is not trying to make relays serve web pages. It lets relays carry the site map and lets Blossom servers carry the files.

Root sites, named sites, path hashes and snapshots

A root site uses kind 15128 and must not include a d tag. It is the one root site for a pubkey. Named sites use kind 35128 and must include a short d tag. Because the canonical name has to fit beside a base36 pubkey inside DNS-label limits, the named-site identifier is limited to 1 to 13 lowercase letters, numbers or hyphens.

The heart of the manifest is the path tag: absolute path, sha256 hash. A manifest can also carry an aggregate x hash, Blossom server hints, title, description and source links. Copied sites use a and A tags to preserve immediate parent and origin lineage.

Manifest snapshots use kind 5128. That gives tools a way to capture a specific site state rather than only the latest replaceable manifest. The June 2026 aggregate-hash and snapshot work is what makes nsites feel more like versioned publishing instead of only a pointer list.

A very new NIP shaped by Blossom and nsite tooling

NIP-5A is young. hzrd149 added the static websites work in March 2026, and the file was renamed for clarity in April. In June 2026, PR #2287 added aggregate hashes and site snapshots, giving the format a stronger versioning story.

The short history is not a weakness. It is a warning label. nsites are promising and already have tooling interest, but the ecosystem is still early compared with notes, relays or zaps.

The awesome-nsite repository is useful because it maps the surrounding tools and specs: the NIP-5A spec, Blossom, nsite versions and host tooling. Nostr Compass also gives a reader-facing explanation of signed manifests and Blossom storage.

First visible addition2026-03 by hzrd149Snapshots and aggregate hashPR #2287 in June 2026Open Git history

The gateway has to verify the manifest, not merely serve files

A correct nsite host or gateway needs to fetch the user's manifest, verify the event signature, resolve the requested path, fetch the blob with the matching sha256 hash and serve it with the right content behavior. If it skips hash verification, the whole integrity story collapses.

The nsite tooling world sits close to Blossom. That means operators have to understand both event resolution and blob availability. A beautiful manifest is not enough if the referenced blobs vanish from every server.

A good product UI should show the site title, pubkey, named-site identifier, manifest version, source link where present and the Blossom servers being used. Readers should be able to tell whether they are seeing a current root site, a named site or a fixed snapshot.

kind 15128Root site for a pubkey.
kind 35128Named site under a pubkey namespace.
path tagsMap absolute URL paths to sha256 file hashes.
kind 5128Manifest snapshot for a fixed site version.

Publishing gets portable, but availability remains physical

NIP-5A can make a site's identity portable, but it cannot force Blossom servers to keep every file forever. Authors still need redundancy, source archives and monitoring.

There is also a phishing risk. A signed pubkey site is not the same thing as a familiar DNS brand. Clients and gateways should display the pubkey and source lineage clearly so readers know what authority they are trusting.

Direct sources

The links below are part of the article, not decoration. Start with the official NIP, then read the file history, implementation references and adjacent standards before treating the page as product guidance.

Back to the NIPs atlas
NIPs route visual cue 1
NIPs route visual cue 2
NIPs route visual cue 3
NIPs route visual cue 4
NIPs route visual cue 5

How to use this page

Use the NIPs route when product behavior needs a standard.

Search NIP numbers, event kinds, signers, media, wallets and moderation standards before a detail turns into confusion.

NIPsThe full NIPs route stays openNIPs route archiveStandards, event kinds, implementation notes and consequences.Browse pages
NIPs route visual cue 1
NIPs route visual cue 2
NIPs route visual cue 3
NIPs route visual cue 4
NIPs route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Ask a question, send a source, suggest a fix, submit a project or nominate a public Nostr account. The page stays stable; your contribution gets reviewed beside it.