no server · end-to-end encrypted
📤 I want to send someone a secret Open the invite link they sent you — it brings you right here to encrypt the secret. There’s nothing to paste in. No invite link yet? Copy a request link to send them — they’ll open it and send an invite back.

How it works

Send this invite to whoever has the secret

They'll open it, then send you back a secret link. Open that link in this same browser — your decryption key only exists here, and it's destroyed the moment you read the secret.

Send a secret

A secret was shared with you

Safety number Confirm it matches the number the sender reads to you before you trust this.

How this works & what it can't promise

Burn After Reading hands a secret from one person to another without a server. The secret is encrypted in your browser and travels inside the link’s #fragment, which browsers never send to any host. The app makes no data calls (a strict connect-src policy blocks all fetch/XHR/telemetry), and once installed it runs fully offline.

What protects you

  • End-to-end encryption (P-256 ECDH → HKDF → AES-256-GCM). Anyone who sees the link — your chat app, your email provider — sees only ciphertext.
  • Safety number. Both people see the same 6-digit number; read it to each other over a second channel. If it doesn’t match, someone is intercepting — stop.
  • Key-burn (one-time links). By default a link is one-time: the recipient’s key is destroyed the instant they read it, so it can’t be opened again on that device. You can opt into a reusable link that works until it expires.
  • Signatures (when your device has an identity) prove who sent it.
  • Optional PIN. Require a PIN you share separately; it’s stretched (PBKDF2) and folded into the key, so without it the secret can’t be decrypted at all — even by someone who captures the link.

What it can’t promise

  • It can’t stop a recipient from copying the secret while it’s on screen — no tool can.
  • Expiry is a courtesy, not server-enforced: it’s signed so it can’t be altered, but there’s no server to delete anything.
  • Whoever serves this page is trusted with the code. Run it from a source you trust.
  • Lose your device/keys and there’s no recovery — by design.

Contacts

People whose signing key you’ve saved. A ✓ means you confirmed their safety number (call / in person). Signed secrets from a verified contact are recognized automatically.

Something's off

This app needs a secure context