1 Overview
Sometimes a user wants to leave the network completely. A NIP-09 deletion request removes single events. This NIP defines a bigger tool: a request to vanish. It asks a relay to reset a key's whole fingerprint on the web.
The request is one event of kind 62. It names the relays that must act. A named relay deletes every event signed by the requesting pubkey, up to the request's created_at. This includes past NIP-09 deletion events.
The request can be legally binding in some jurisdictions. A relay that supports this NIP must therefore truly delete the events from its database. Hiding them is not enough.
A request to vanish is a one-way door. Publishing a kind 5 deletion request against a request to vanish has no effect. Clients and relays are not obliged to support any "unrequest vanish" feature.
2 The Vanish Request Event
Kind 62 requests a specific relay to delete everything from the event's pubkey until the event's created_at. The event has the normal NIP-01 shape:
{
"kind": 62,
"pubkey": <32-byte hex-encoded public key of the event creator>,
"tags": [
["relay", "<relay url>"]
],
"content": "<reason or note>",
// ...other fields
}
| Item | Rule |
|---|---|
| kind | 62. Identifies the event as a request to vanish. |
| pubkey | The key that vanishes. Only this key's own signature can request its erasure. |
| created_at | Upper bound of the purge. The relay deletes the pubkey's events up to this timestamp. |
| relay | Tag. The tag list MUST include at least one relay value. The value is a relay URL, or ALL_RELAYS (see §4). |
| content | MAY include a reason or a legal notice to the relay operator. |
Clients SHOULD send this event to the target relays only. Do not broadcast a targeted request to relays that it does not name.
3 Relay Obligations
A relay acts only when its own service URL is tagged in the event. When it is tagged, these rules apply:
- The relay MUST fully delete any events from the
pubkey. This includes the pubkey's NIP-09 deletion events. - The relay SHOULD delete all NIP-59 gift wraps that p-tagged the
pubkey. This deletes all DMs sent to the pubkey. - The relay MUST ensure the deleted events cannot be re-broadcasted into the relay.
- The relay MAY store the signed request to vanish for bookkeeping.
- Paid relays, and relays that restrict who can post, MUST also follow the request. The user's status does not matter.
Why delete old kind 5 deletion events too? A deletion event names the event IDs it deleted. Those IDs are part of the key's fingerprint. A full reset must remove them as well.
The purge is bounded by the request's created_at, but the re-broadcast ban has no stated time bound or expiry. The spec also gives no rule for matching the tagged relay URL against the relay's own URL (trailing slash, scheme, case). Implementations must decide both points themselves.
4 Global Request to Vanish
A user can ask ALL relays to delete everything. The event MUST then include a relay tag with the value ALL_RELAYS, in uppercase:
{
"kind": 62,
"pubkey": <32-byte hex-encoded public key of the event creator>,
"tags": [
["relay", "ALL_RELAYS"]
],
"content": "<reason>",
// ...other fields
}
Delivery flips for the global form. Clients SHOULD broadcast this event to as many relays as possible. Every supporting relay that receives it applies the rules of §3 to itself.
5 Worked Example
Alice retires her key. She sends a targeted request to her main relay, then a global request everywhere. Orange lines go to the relay. Blue lines come from the relay.
-- targeted vanish, sent to the tagged relay only -- → ["EVENT", {"id":"7fe2ab91cd…","pubkey":"a1ce55aa…","created_at":1750000000, "kind":62,"tags":[["relay","wss://relay.example.com"]], "content":"Please erase my history. Formal notice under local privacy law.", "sig":"c04d1189…"}] ← ["OK", "7fe2ab91cd…", true, ""] -- relay purges every event by a1ce55aa…, plus gift wraps p-tagging her -- -- Bob tries to re-broadcast one of Alice's old notes -- → ["EVENT", {"id":"3b9dd410ef…","pubkey":"a1ce55aa…","kind":1, …}] ← ["OK", "3b9dd410ef…", false, "blocked: this pubkey has vanished"] -- global vanish, broadcast to as many relays as possible -- → ["EVENT", {"id":"911c07be22…","pubkey":"a1ce55aa…","created_at":1750000060, "kind":62,"tags":[["relay","ALL_RELAYS"]], "content":"Goodbye, nostr.","sig":"88af02c1…"}] ← ["OK", "911c07be22…", true, ""]
6 Version History
NIP-62 is a young and stable spec. It arrived in 2025 and has changed little since. Notable changes, newest first:
- 20262026-06Formatting pass by fiatjaf: code fences relabeled from
jsonctoyaml. - 20252025-12The
relaytag became the explicit target selector, withALL_RELAYSfor the global form. - Origin2025-02Vitor Pamplona proposed the spec as "Right to Vanish" and it merged as NIP-62.
Original Proposal - Credits
| Author | Vitor Pamplona |
| First commit | 2025-02-18 — “Right to Vanish” (PR #1256) |
| Status | draft - optional — a relay feature; supporters must truly delete |
| Source | 62.md on GitHub - full change history |
7 See Also
- NIP-01 — the base event format and the
EVENT/OKflow used here. - NIP-09 — kind
5deletion requests for single events; vanish erases these too. - NIP-59 — gift wraps; relays should drop wraps p-tagging a vanished pubkey.
- NIP-11 — the relay information document, where a relay can advertise supported NIPs.