Community

NIPs

NIP-A4: Public Messages

NIP-A4 defines kind 24 as a plaintext public message addressed to one or more users, meant for notification-style replies rather than feeds, private DMs or persistent chat threads.

NIP-A4: Public Messages 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-A4: Public MessagesNIP-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-A4: Public MessagesNIP-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
Messaging and privacydraftoptionalpublic messages

NIP-A4: Public Messages

NIP-A4 defines kind 24 as a plaintext public message addressed to one or more users, meant for notification-style replies rather than feeds, private DMs or persistent chat threads.

The quick readNIP-A4 defines kind 24 as a plaintext public message addressed to one or more users, meant for notification-style replies rather than feeds, private DMs or persistent chat threads.
NIPA4Event kind24Recipientsp tagsRelay rulesend to NIP-65 inbox relays and sender outboxPrivacynoneNot a chatno e tags, no thread root

Sometimes you want a public ping, not a DM thread

Nostr already has several message-like shapes: public notes, old encrypted DMs, NIP-17 private messages, comments, chats and group protocols. NIP-A4 carves out a smaller use case: a simple public plaintext message to one or more users.

The official text is blunt about the boundary. There is no expectation of privacy. Kind 24 is signed and designed for public consumption. It is not a NIP-17 rumor, not a private DM and not a chatroom.

The product use case is notification screens. A client can show a direct public message and let someone reply without reconstructing a long thread or chat history.

Plaintext content and recipient p tags

A kind 24 event puts the message in content and identifies receivers with one or more p tags. Messages must be sent to the NIP-65 inbox relays of each receiver and the outbox relay of the sender.

The NIP deliberately forbids e tags. There is no thread root, no chatroom and no syntactic chain. That keeps the object lightweight, but it also means clients should not pretend kind 24 is a full conversation model.

Advanced support references several adjacent NIPs: expiration tags from NIP-40, quote repost tags from NIP-18, reactions from NIP-25, zaps from NIP-57, NIP-21 links and NIP-92 media metadata.

Vitor Pamplona added the public-message primitive in late 2025

Vitor Pamplona added Public Messages in December 2025 through PR #1988. fiatjaf later converted examples to YAML style in the broader 2026 cleanup. That short history explains why the NIP reads like a focused product primitive rather than a long security design.

The warning language is the main thing to preserve: anyone can see and reply to messages that may not be for them. The message is addressed, not private.

A good Crays page should therefore keep the use case narrow. NIP-A4 is useful when public notification semantics are desired. It is dangerous when users think it hides anything.

First visible addition2025-12 by Vitor PamplonaEvent kind24Open Git history

The UI should say public in the right way

A client should render kind 24 near mentions or notifications, not in the main feed by default. It should show the addressed recipients and avoid UI language that sounds private.

Expiration tags are recommended because public pings can become stale quickly. A message about meeting now, responding today or reacting to a live context may not make sense months later.

Replies, reactions and zaps should include the kind information expected by the NIP so other clients can render them correctly.

24Public plaintext message.
p tagsOne or more addressed users.
NIP-65Inbox/outbox relay routing.
NIP-40Recommended expiration support.

Addressed does not mean private

The biggest user risk is confusion. A message can be directed at you and still be public. Clients need to make that obvious at compose time, not only in documentation.

Because anyone can see these messages, spam and harassment filtering will matter if kind 24 adoption grows.

Direct sources

Use the official file first, then the commit history, implementation references and adjacent standards. NIPs move, and product guidance gets weaker when those source trails are hidden.

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.