caesar · configurable shift · letters only · live

Apply a Caesar cipher

Shift each letter by any amount from -25 to +25. The classic Roman cipher, also known as the shift cipher. All processing runs locally in your browser.

Caesar Cipher
Input
13 B
1 lines
Output
13 B
1 lines
Status
ready
live
Ratio
1.00×
out/in
input · text
output · shift 3
Khoor, Zruog!
Quick Start

How to use the Caesar cipher

Pick a shift value, then each letter is rotated through the alphabet by that amount. Use a negative shift to decode messages encoded with a positive shift.

  1. 01

    Type or paste text

    Only letters are shifted; digits, spaces, and punctuation pass through.

    Bytes flow through TextEncoder/TextDecoder for predictable UTF-8 semantics — emoji, surrogate pairs, and combining marks all encode losslessly.

    inputUTF-8TextEncoderlosslesslive
    input · raw bytestext · UTF-8
    Hello, World!
    loaded · UTF-8MIME · ready
  2. 02

    Choose a shift

    Any value between -25 and 25. Shift=3 gives the original Roman cipher; shift=13 equals ROT13.

    Hash and signature operations call crypto.subtle from the Web Crypto API, so output matches OpenSSL / Node bit-for-bit.

    shiftWeb Cryptosubtledeterministiclive
    shift · options+3 · live
    A→D · B→E · ...
    options applied · livelive
  3. 03

    Live preview

    Result updates as you adjust the shift. Use the opposite sign to decode.

    Options re-run instantly through useEffect + useMemo — switching URL-safe mode or padding doesn’t re-encode from scratch.

    livememoisedoptionsinstantreactive
    out · encodedcipher · ready
    Khoor, Zruog!
    encoded · livelossless
  4. 04

    Copy or download

    One click to clipboard. Download as .txt.

    Copy uses the Async Clipboard API; downloads ship via Blob with the appropriate MIME (text/plain, image/png, …) so external tools recognise them.

    exportclipboardblobMIME-correctclient-side
    ok · copiedready · done
    Copied
    shipped · ready to shipsuccess
Pro tips

Encoding without surprises

Always UTF-8 first

Use TextEncoder / TextDecoder for bytes ↔ string conversion. btoa alone breaks on non-ASCII.

URL-safe vs standard Base64

Standard uses +, /, =; URL-safe swaps to -, _, no padding. Don’t mix them.

Hashes aren’t passwords

SHA-256 is fast; that’s good for fingerprints, bad for passwords. Use bcrypt / argon2 for credentials.

Watch padding rules

Some decoders are strict about = padding, others auto-pad. If round-trips fail at exactly 1 or 2 bytes, check padding.

Use Web Crypto for keys

Generate cryptographic keys via crypto.subtle, never Math.random. The latter is predictable.

JWT decode ≠ verify

Decoding a JWT just splits and base64-decodes. Verification needs the issuer’s public key / shared secret.

Use Cases

When to use Caesar

Puzzles, classroom demos, light obfuscation.

Crypto classes

Demonstrate shift ciphers and the weakness of small keyspaces. Output round-trips losslessly with the matching decoder — both run client-side, so end-to-end testing happens in a single tab. Encoding flows through TextEncoder for predictable UTF-8 semantics.

RFC-compliant

CTF challenges

Often the first cipher in beginner CTF tracks. Web Crypto's subtle.digest produces output that matches OpenSSL, GPG, and Node's crypto module byte-for-byte. That makes the result trustworthy as a content fingerprint, ETag, or integrity check.

OpenSSL-matched

Escape rooms

Hand out a shift number and watch teams decode clues. Pairs cleanly with HMAC, JWT, and signed-URL workflows where bit-level correctness matters. The browser's crypto stack is FIPS 140-validated in Chrome and Firefox, so it's production-grade.

lossless

Hint hiding

Hide step-by-step solution hints inside walkthroughs. Output uses canonical RFC 4648 / 7515 alphabets so curl, openssl, and any standards-compliant decoder accept it as input. URL-safe variants drop padding for tokens that travel in query strings.

byte-identical

Brute force demos

Show how all 25 shifts can be tried in milliseconds. Heavy hashing runs through useMemo so large inputs don't block typing. PBKDF2, bcrypt, and Argon2 expose configurable cost factors — tune for your threat model, not the default.

spec-grade

Cross-tool check

Verify implementations in different languages. Same input plus same options always yields identical bytes. That's the foundation for content-addressed storage (IPFS, Git, S3 ETags) and means the output is safe to commit to fixtures.

production-ready
FAQ

Frequently asked questions

ROT13 is the Caesar cipher with shift=13. Because 13+13=26, ROT13 is also its own inverse.
Negate the shift. If it was encoded with +3, decode with -3. Or try all 25 shifts until something readable appears.
Yes — the alphabet wraps around. Shift 25 of A is Z, and shift 26 returns A.
No. With only 25 possible shifts, brute force breaks any Caesar cipher instantly.
No. The cipher runs locally in your browser.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!