Encrypt text with a password

Type a message, choose a password, and get back a block of text only that password can open. The encryption is done by your browser’s own Web Crypto, using AES-256-GCM with the key stretched by PBKDF2, and neither the message nor the password is sent anywhere. The format is written out below along with a short Python script that reads it, so a message you encrypt today can be opened in ten years whether or not this site still exists.

What to do

There is no way to recover this. If the password is forgotten, the message is gone for good. That is not a policy: nobody, including us, holds a copy of the key.

Key length
How hard to guess

This is how long it takes to turn your password into a key. The wait is the point: somebody guessing passwords pays it once per guess. Normal is 600,000 rounds, which is roughly a second on a laptop and several on a phone.

Output as

Frequently asked questions

Is my message uploaded?

No. The encryption happens in this tab using your browser’s built-in Web Crypto. The site’s security policy sets connect-src ‘none’, so the browser blocks network requests from these pages, meaning neither the message nor the password could be sent even if the code tried.

What exactly is it doing?

Your password is stretched into a key with PBKDF2-HMAC-SHA256 and a random 16-byte salt, then the message is encrypted with AES-GCM and a random 12-byte nonce. AES-GCM is authenticated, which means a message altered in transit fails to decrypt rather than quietly producing different text. None of that is written here: every step is a call to the browser’s own implementation.

Why is there no choice of algorithm?

Because the choice would be a way to get it wrong. Web Crypto also offers AES-CBC and AES-CTR, and neither authenticates on its own: somebody could change the message in transit and decryption would hand back plausible rubbish with no complaint. Key length and work factor are adjustable because every option there is safe.

What if I forget the password?

The message is gone. There is no reset link and no back door, because there is nothing to reset: the key exists only for the moment it is being used, and no copy of it is stored anywhere, here or elsewhere. Write the password down somewhere you trust before you rely on this.

What if this site disappears?

Your messages still open. The container format is published in full below and holds everything a reader needs at fixed byte positions, so the Python script on this page will decrypt anything this tool produced. That is the whole reason it is written down.

Should I use this for something that really matters?

For sending a password or a document to a colleague, yes: it is standard cryptography, done by your browser, with the parameters stated. For protecting something against a determined attacker with time and money, understand what it does and does not do. It protects the message. It does not hide that you sent one, and it is only ever as strong as the password you chose.