ROT13 is a text transform that shifts every ASCII uppercase letter A–Z and lowercase letter a–z forward by exactly 13 positions in the alphabet, wrapping Z back to A and z back to a, while leaving every other character in the string exactly as it was. Because the Latin alphabet contains 26 letters, shifting by 13 is special: the operation is self-inverse, which means applying it once encodes plain text into ROT13, and applying it a second time to that output decodes it back to the original. The transform only touches the two ASCII alphabets, so uppercase letters stay uppercase and lowercase stay lowercase, and digits, punctuation, spaces, line breaks, accented Latin characters, Greek, Cyrillic, Arabic, CJK characters, and emoji all pass through unchanged. For example, the word Hello becomes Uryyb, and applying ROT13 to Uryyb returns Hello. This predictability, plus the fact that the mapping is the same for everyone, is exactly why ROT13 is useful for casual reversible obfuscation (such as hiding spoilers in forums) and exactly why it is not encryption.

ROT13 in Plain English
Imagine the 26 letters of the English alphabet written on a strip of paper, with A at one end and Z at the other. ROT13 takes that strip, folds it exactly in half, and swaps each letter with the one sitting directly across from it. So A meets N, B meets O, C meets P, and so on, until M meets Z. That single fold is the entire cipher. There is no secret key, no shift knob, and no per-message configuration. The shift is locked at 13 because rotating a 26-letter alphabet by 13 positions twice returns every mapped letter to its starting position.
Beginners sometimes confuse ROT13 with encryption. It is not. Encryption assumes that a reader cannot reverse the transform without a key they do not have. ROT13 assumes the opposite: the mapping is public, the inverse is the same button you just pressed, and anyone who recognizes the alphabet can decode your message in their head. That is why long-running internet communities, from Usenet groups to modern forums, use it to obscure spoilers or puzzle hints rather than to keep secrets.
The Letter-by-Letter Mapping
Once you see the mapping written out, the entire transform becomes obvious. The first half of the alphabet maps onto the second half, and the second half maps back onto the first.
| Plain (A–M) | ROT13 (N–Z) | Plain (N–Z) | ROT13 (A–M) |
|---|---|---|---|
| A | N | N | A |
| B | O | O | B |
| C | P | P | C |
| D | Q | Q | D |
| E | R | R | E |
| F | S | S | F |
| G | T | T | G |
| H | U | U | H |
| I | V | V | I |
| J | W | W | J |
| K | X | X | K |
| L | Y | Y | L |
| M | Z | Z | M |
The lowercase mapping follows the same pattern, with a becoming n, n becoming a, m becoming z, and z becoming m. Because each row swaps two letters that are 13 apart, every ASCII letter is guaranteed to change to a different ASCII letter, so the "letters mapped" count is always equal to the number of positions in your input that actually changed value.
How to Apply ROT13 with the Browser Tool
The fastest way for a beginner to decode or encode a piece of text is to paste it into a browser-based ROT13 decoder and click one button. The ROT13 Encoder Decoder runs the transform entirely in your current tab, so your text never leaves the browser. The basic workflow is three steps.
- Paste your text into the input area. It can contain any mix of ASCII letters, digits, punctuation, spaces, accented characters, emoji, and CJK characters; only the ASCII A–Z and a–z letters will move.
- Select Apply ROT13. The tool will scan every code unit, transform each ASCII letter by 13 positions, preserve every other code unit exactly, and display the new string along with a count of how many ASCII letters were mapped.
- Copy the output to your clipboard if you need it elsewhere, or apply ROT13 a second time to that output to recover the original text. Because the operation is self-inverse, decoding is the same click as encoding.
Editing the input clears the previous output, any validation message, the letter count, and the copy status, so you always see results that match the text currently in the box. If your input is empty, the tool reports an error; if it exceeds one million UTF-16 code units, the transform is rejected before it runs with an explicit message, so nothing is silently truncated.
Why One Button Both Encodes and Decodes
Beginners often expect separate "encode" and "decode" buttons. ROT13 does not need them. Pick any ASCII letter, follow it 13 positions forward, then 13 positions forward again: you land on the original letter. That works for every A through Z and every a through z because 13 plus 13 equals 26, which is the full size of each alphabet. So if the output of a ROT13 transform is fed back into the same function, the result is identical to the original input character by character.
You can see this directly in the café example. The letters c, a, and f are ASCII, so the tool maps c to p, a to n, and f to s. The é is not an ASCII letter, so it stays in place, giving pnsé. Apply ROT13 again to pnsé and the ASCII letters p, n, and s map back to c, a, and f, while the é remains untouched. The original café returns exactly, including the accent.
What Stays Unchanged
Because the tool only rotates the two ASCII alphabets, every other code unit in your string is preserved verbatim, including digits such as 0 through 9, punctuation like commas and question marks, spaces, tabs, and line breaks, the NUL byte treated as ordinary data, accented Latin letters like é or ü, Greek, Cyrillic, Arabic, and CJK characters, and emoji such as surrogate pairs. A combining sequence such as the letter e followed by U+0301 (the combining acute accent) changes only the ASCII e, leaving the combining mark in place. This strict behavior matches the official Python ROT13 translation tables and avoids pretending that ROT13 defines rotations for every writing system.
The output length is always equal to the input length, measured in UTF-16 code units, because each transformed ASCII code unit is replaced by exactly one ASCII code unit and every other code unit is retained. The changed-letter count reported beside the output counts only ASCII letters that were mapped, so it is never inflated by unchanged digits, punctuation, or Unicode characters.
Common Limits and Edge Cases for Beginners
A few practical boundaries are worth knowing before you paste a long document. The input limit is one million UTF-16 code units; text at the exact boundary is accepted and transformed in full, while one code unit beyond the boundary is rejected before transformation with an explicit message, so nothing is sliced, sampled, shortened, or silently capped. Empty input is treated as an error, while non-empty content that contains no ASCII letters (for example a string made entirely of digits or emoji) is a valid transformation with a changed count of zero.
If clipboard access is denied by your browser, the read-only output stays available for manual selection. The tool uses job generation and timer identity guards so an older asynchronous clipboard completion cannot publish stale status or clear a newer confirmation, and editing the input or running a fresh transform invalidates any pending completion. None of this affects decoding accuracy; it only affects how the copy button reports success.
ROT13 Is Not Encryption
The single most important thing a beginner can take away from this guide is that ROT13 is reversible obfuscation, not security. There is no key, every transformation uses the same public substitution, and anyone who recognizes ROT13 can reverse it immediately by applying ROT13 again. It should not be used to protect passwords, API tokens, personal information, private messages, production configuration values, or any secret.
Historical internet use, documented in sources such as RFC 1855 on netiquette guidelines, included obscuring spoilers or material a reader might prefer not to see accidentally. That is the spirit in which ROT13 is still useful today: it gives a casual reader a moment to look away, while a curious reader can decode it instantly. When you need a configurable ASCII shift, use a Caesar Cipher tool; when you need actual confidentiality, authentication, or integrity protection, use an established audited cryptographic system.