sendnote

How it works

Back to sending

Encrypted before it leaves your browser

When you write a note, your browser generates a random AES-256 key and encrypts the text locally using the Web Crypto API. Only the resulting ciphertext is sent to the server — the plaintext never leaves your device.

The link has two parts

https://sendnote.example/n/<id>#<key>

This is called fragment identifier and is a standard part of URLs.

Opening the link makes your browser fetch the ciphertext for that id, then decrypt it locally using the key from the fragment. The server only ever handles ciphertext — it can't read your note even if it wanted to.

Optional password instead

If you protect a note with a password, the key is derived from that password (PBKDF2, 250,000 iterations) instead of being generated randomly — so it isn't carried in the URL at all. The link becomes /n/<id>?p=1, and whoever opens it needs the password you shared separately to decrypt the note.

Notes don't stick around

Every note has an expiry you choose when you create it: read once (deleted the moment it's opened), or 1 hour / 1 day / 7 days (deleted automatically after that time, whether or not it was read). Notes are stored in Redis with a TTL matching the expiry, so nothing lingers past its own expiration and nothing is ever written to disk in plaintext.

Back to sending