Text becomes a link
Sealed in your browser. We never receive the plaintext.
Share a password or any sensitive text. Encrypted in your browser. Read once. Then gone.
What we never hold
We store sealed bytes we cannot read. The key never leaves the browser. After one view there is nothing left to recover.
Sealed in your browser. We never receive the plaintext.
Send the URL. The key sits after # and is not transmitted.
The recipient reveals. A second open finds it gone.
Read, burned, or expired — the ciphertext is wiped.
On our side
One row in a database. No accounts, no key, no passphrase. Nothing lasts more than seven days.
AES-256-GCM ciphertext. Unreadable without the key after #, which never reaches us. Wiped on read or burn.
A wrapped content key, a nonce, and the salts. On their own they decrypt nothing. They let a wrong passphrase fail before the one-time read is spent.
Created, expires, read, burned, and a coarse size. So the sender's private page can say what happened after the bytes are gone.
/24 or /48 of whoever created it — never a full address. Kept only until the row is swept, only for abuse.
How to use it
Paste the password (or any text), optionally set a lifetime and a passphrase, and press Create link. Send the secret link to one person and keep the private link yourself. They press Reveal secret and see it once. A second open finds it gone.
We cannot. Encryption happens in your browser. We receive ciphertext, never the key — it sits after # in the link, which browsers do not transmit. A copy of our database is sealed bytes. You are still trusting us to serve honest JavaScript; that limit is stated on the Security page.
The flow is the same on purpose: paste, get a link, one view, gone. The difference is the key. Other hosts typically encrypt at rest with a key the server holds, so the operator could read a secret before it is viewed. Here the key never reaches the server, so we cannot.