ROT13 was built for exactly one alphabet — unaccented Latin A-Z — which makes English close to the ideal case: virtually every letter in ordinary English prose gets shifted. The exception is loanwords that keep their original accents, like "café," "naïve," or "résumé" — the é and ï in those words are separate Unicode code points from plain "e" and "i," so ROT13 leaves them completely untouched.
Where the "every letter shifts" assumption breaks
A ROT13 implementation that only maps the 52 unaccented ASCII letters will silently skip any accented character it encounters, output it unchanged, and keep going — no error, no warning. For plain English text this is invisible, but it becomes a real bug the moment English text is mixed with proper nouns or borrowed words from French, Spanish, or German, since those accented letters slip through the "encryption" as plain text.
How the shift itself works
Each letter is mapped to the one 13 positions ahead in the alphabet, wrapping around after Z back to A. Because 26 is even, a shift of exactly 13 is its own inverse — apply the same operation twice and you get the original text back, which is why ROT13 tools don't need a separate "decode" mode.
Where ROT13 is still used
- Hiding spoilers or puzzle answers on forums like Reddit and Usenet, where it originated.
- Teaching examples for substitution ciphers in intro cryptography courses.
- Light obfuscation where the goal is "not immediately readable," not real security.
Why this isn't security
ROT13 has no key — the shift is fixed and public, so anyone can reverse it instantly with no computation. For real protection of passwords or sensitive messages, use a keyed algorithm like AES instead.