the mechanics of the burn

How it works

  1. Encrypt. Your browser generates a random 256-bit key and encrypts the secret with AES-256-GCM. Only the encrypted blob is uploaded.
  2. Share. The key rides in the link after the # — browsers never send that part to any server. Send the link to one person.
  3. Burn. The first open destroys the secret on our server. And if nobody ever opens it, it self-destructs on its own after 1 day — or on the date the sender picked, 30 days at most. Nothing to hack, nothing to subpoena.

Add a passphrase and the link alone is not enough — tell it to the recipient through a different channel (a call, in person). The passphrase is checked before anything burns: a typo never destroys the secret, and after 5 wrong attempts the secret locks for 5 minutes. The passphrase itself never travels to the server — only a derived proof does.

The flow, on one napkin

YOU · your browser
┌─────────────────────────────────────┐
│ secret ── AES-256-GCM ──► blob      │
│ random key ──► link  /s/slug#key    │
└────┬───────────────────────┬────────┘
     │ blob (encrypted)      │ link — you send it
     ▼                       ▼
SERVER · sqlite         RECIPIENT · their browser
stores the blob          opens the link
never sees keys    ◄──   fetches the blob
     │                   (#key never travels)
     │ first read
     ▼
DELETE ── burned 🔥      decrypts locally ──► secret

What this actually guarantees

The honest fine print: whoever holds the full link holds the secret — choosing a safe channel to send it is on you (that's what the passphrase is for), and a stolen database still shows how many secrets exist and when they were created. Content, never. The whole link — identifier and key — is generated in your browser with its cryptographic random generator; the server validates it and enforces its uniqueness, but never creates it.

Don't trust us — audit it

The entire service is open source. These five files are everything that touches your secret:

← Share a secret