How it works
The server stores encrypted bytes. The browser creates and keeps the key.
Key generation
Your browser generates a 256-bit AES-GCM key with the Web Crypto API.
Local encryption
Your message is encrypted locally with a random IV before upload.
Ciphertext only on server
The server receives ciphertext, IV, expiry settings, and optional hashed gates — never plaintext.
Key hidden in URL fragment
The generated link puts the decryption key after #. URL fragments are not sent in HTTP requests.
Server-side checks on open
When the recipient unlocks the note, the server returns ciphertext once the expiry, password, and view-limit checks pass.
Local decryption + destruction
The recipient browser decrypts the note locally and the server marks the encrypted row as consumed.