Skip to content

Text Encrypt & Decrypt

Encrypts a message with AES-GCM from a passphrase and produces a self-contained Base64 blob.

Encrypts a message with a passphrase into a single Base64 string you can paste anywhere, and decrypts it back. AES-GCM with a PBKDF2-derived key; the salt and nonce ride inside the output, so the string is the whole ciphertext and there is nothing else to keep.

🔒 Runs entirely in your browserencryptaescryptotext
Mode

There is no recovery. A forgotten passphrase is the message gone; a weak one is the message public.

Message

Encrypted (paste-anywhere Base64)

AES-256-GCM with a key derived by PBKDF2 with HMAC-SHA-256 at 600,000 iterations; a fresh 16-byte salt and 12-byte nonce travel inside the output, so the Base64 string is the whole ciphertext — nothing else to keep. It is the same container as the file encryptor, everything runs in this tab, and tampering is detected rather than decrypted. PBKDF2 is used instead of Argon2id because it is what the browser itself implements; the iteration count is the OWASP floor for it.

How to use it

  1. Choose a passphrase you will not lose

    There is no recovery of any kind. A forgotten passphrase is the message gone, and a guessable one is the message public.

  2. Encrypt and copy the Base64

    It survives email, chat and a text file — no attachment, no key file, nothing to store beside it.

  3. Send the passphrase by another route

    The whole point is lost if the passphrase travels next to the ciphertext. Different channel, ideally a different day.

Common questions

Why PBKDF2 rather than Argon2id?

Because PBKDF2 is what the browser itself implements, in code the platform maintains. Argon2 would mean shipping a WebAssembly build, and a crypto primitive you cannot audit is worse than a well-understood one at the OWASP-recommended iteration count, which is what is used here.

Would a wrong passphrase give me garbled text?

No — it fails outright. AES-GCM authenticates the ciphertext, so a wrong passphrase or a single altered character produces an error rather than plausible-looking nonsense. Tampering is detected, not decrypted.

Is this end-to-end encryption?

It is encryption you do yourself, in your browser, with a key nobody else has. What it is not is a messaging protocol — there is no forward secrecy, no identity, no key exchange. For an ongoing conversation, use a tool built for that.

Can the file encryptor open this?

Yes — deliberately the same container, so the two tools decrypt each other’s output. One construction to audit rather than two.

Feed it from

Next

These accept what this tool produces, so the result can go straight in.