Encrypt text and decrypt ciphertext locally
Choose an algorithm, enter a secret key, and copy results instantly — all in your browser

The Encrypt / Decrypt Text tool helps you turn readable text (plaintext) into an unreadable string (ciphertext), and back again — using a secret key that only you know. Everything runs locally in your browser, so your input is not sent to a server.
What problems does it solve?
Practical note: for real security, the secret key matters as much as (or more than) the algorithm. A short or predictable key makes encryption easy to guess.
If your goal is to generate a one-way fingerprint (so you can compare without revealing the original), try our Hash Text tool. If you need password hashing specifically (designed for password storage, not reversible encryption), use Bcrypt.
Encrypt (plaintext → ciphertext)
Decrypt (ciphertext → plaintext)
Sharing configs (optional)
The Share button can generate a link that includes configuration values. If you enable “include results”, be careful — plaintext and ciphertext can be sensitive.
Example 1: Encrypt a short note and decrypt it back
How to interpret the result
Ciphertext is expected to look random. Even a tiny change in plaintext (or key) should produce a very different ciphertext.
Example 2: Quick key-strength sanity check (using entropy)
This tool doesn’t compute key strength for you, but you can estimate how hard a key is to guess. A common back-of-the-napkin model is: , where is the length and is the size of the character set.
In this example, a 12-character key using letters + digits (about ) lands around bits. If your key is something like a common phrase or a short word, the real strength can be much lower.
Sharing a temporary identifier
Background: you need to send an internal ticket ID over chat.
Inputs: plaintext “TICKET-483920”, algorithm AES, key “TeamKey-2026”.
Result: ciphertext string (copy from the tool).
How to use it: send ciphertext; share the key via a separate channel.
Encrypting a short config snippet
Background: you want to paste a snippet into an issue without exposing it.
Inputs: plaintext “API_KEY=…”, algorithm AES, key with high entropy.
Result: ciphertext you can paste publicly.
How to use it: decrypt later when you need the original value.
Debugging “can’t decrypt” issues
Background: ciphertext decrypts in one app but not in another.
Inputs: same ciphertext, test multiple algorithms, verify the exact key.
Result: quickly find a mismatch (algorithm vs key vs corrupted ciphertext).
Tip: if you only need a stable fingerprint, use Hash Text instead.
Teaching / learning crypto basics
Background: you want to demonstrate that encryption is reversible.
Inputs: small plaintext, consistent key, algorithm AES.
Result: ciphertext changes dramatically with tiny input changes.
How to use it: illustrate why key choice and integrity matter.
Share ciphertext over chat
Useful when you can send the key separately.
Protect short notes locally
Good for quick personal workflows.
Recover text from ciphertext
As long as algorithm + key match exactly.
Test key / algorithm compatibility
Fast checks during development and QA.
Need a non-reversible fingerprint?
Better fit: Hash Text
Password storage?
Use Bcrypt instead of reversible encryption.
When it might not be a good fit
This calculator performs symmetric encryption/decryption. While the cryptographic details depend on the algorithm, the key security idea is that the key defines a huge search space.
Keyspace size (very simplified)
If a key has length and each position has possible characters, then the number of possible keys is:
Entropy (in bits) is often expressed as:
These formulas are a rough model, but they are useful for intuition.
Worked estimate: brute-force time (rule of thumb)
If an attacker can try keys per second, and there are keys, a rough upper bound is:
The takeaway: adding a few characters to a strong key can change feasibility dramatically.
Symmetric encryption
“Symmetric” means the same secret key is used to encrypt and decrypt. If you lose the key, you can’t recover the plaintext.
Hashing vs encryption
Hashing is one-way (not reversible), encryption is two-way (reversible with the key). If you’re verifying integrity or comparing values, hashing is often the better fit.
Key management
The safest ciphertext is useless if the key is sent alongside it. Share the key through a different channel, and consider rotating it if you suspect it was exposed.
In almost every case, either the algorithm or the secret key doesn’t match the original encryption settings. Also check that the ciphertext is not truncated or modified.
AES is widely used and generally the default recommendation for modern symmetric encryption. For quick utility workflows, it’s a sensible first pick.
You won’t be able to recover the plaintext. Symmetric encryption relies on the key — there’s no “reset” option.
It’s better not to. Password storage typically uses slow, one-way hashing (KDFs). Use Bcrypt instead.
A quick estimate is entropy . Longer keys and larger character sets increase .
Many encryption schemes include randomness (like a salt or IV) so the same plaintext doesn’t always encrypt to the same ciphertext. That’s typically a good thing.
If you never need to get the original back, use hashing. See Hash Text for MD5/SHA variants.
Authoritative AES specification.
Good high-level background and terminology.
Background for interpreting bit-strength estimates.
Use a simple chronometer (stopwatch) to track elapsed time down to milliseconds. Runs locally in your browser.
Normalize email addresses to a standard format for easier comparison. Useful for deduplication and data cleaning. Runs locally in your browser.
Estimate the time needed to consume a total amount at a constant rate, and get an expected end time. Runs locally in your browser.
Parse and decode your JSON Web Token (JWT) and display its content. All computation runs locally in your browser.
Know which file extensions are associated to a MIME type, and which MIME type is associated to a file extension. Includes a full MIME types table.
Generate random Lorem Ipsum placeholder text with customizable paragraphs, sentences, and word counts. Runs locally in your browser.