ROT13 Encoder Decoder
Apply reversible ROT13 to ASCII letters while preserving case and leaving every other character unchanged.
Privacy: your files never leave your device. All processing happens locally in your browser.
How to use
- 1.Paste text containing any mix of ASCII letters and other characters.
- 2.Apply ROT13 and review the transformed output plus the count of changed ASCII letters.
- 3.Copy the result, or apply ROT13 to that result again to recover the original text.
About ROT13 Encoder Decoder
ROT13 Encoder applies the classic rotate-by-thirteen text transform entirely in the current browser tab. Paste text, select Apply ROT13, review the output and changed-letter count, then copy the result if needed. The same operation encodes and decodes because rotating a 26-letter alphabet by 13 positions twice returns every mapped letter to its starting position. No input, output, or clipboard content is uploaded to Lizely. The mapping is deliberately narrow. Only ASCII uppercase A through Z and lowercase a through z are transformed. Uppercase letters remain uppercase and lowercase letters remain lowercase. A becomes N, N becomes A, Z becomes M, a becomes n, n becomes a, and z becomes m. The transform uses the two ASCII alphabets independently rather than changing case or applying a locale-aware alphabet. Applying it twice restores the exact original string for every supported input, including text that contains characters outside those alphabets. Digits, punctuation, spaces, tabs, line breaks, NUL, symbols, combining marks, accented Latin letters, Greek, Cyrillic, Arabic, CJK characters, and emoji remain unchanged. For example, café becomes pnsé because c, a, and f are ASCII letters while é is not. An emoji remains the same surrogate pair. A combining sequence such as e followed by U+0301 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 changed count reports how many ASCII letters were mapped. Each matching letter always changes to a different ASCII letter, so the count is also the number of code-unit positions whose value changed. Unchanged digits or Unicode characters do not inflate it. The output length always equals the input length in UTF-16 code units because every transformed ASCII code unit is replaced by exactly one ASCII code unit and every other code unit is retained. The input limit is 1,000,000 UTF-16 code units. Text at the exact boundary is accepted and transformed in full. One code unit beyond the boundary is rejected before transformation with an explicit message. Nothing is sliced, sampled, shortened, or silently capped. Empty input reports an error, while non-empty content containing no ASCII letters is a valid transformation with a changed count of zero. NUL is treated as ordinary string data, not as a C-style terminator. Editing the source immediately removes the previous result, validation error, statistics, copy status, and confirmation timer. Running a new transformation does the same before publishing current output. Clipboard writes are asynchronous, so every copy attempt receives a generation identity. An input edit, a new transform, a later copy attempt, or component unmount invalidates any older pending completion. Old permission success or failure therefore cannot restore stale status. Confirmation timers are cleared when superseded or unmounted and clear their own references after firing. If clipboard access is denied, the complete read-only output remains available for manual selection. ROT13 is not secure encryption. It has no key, every transformation uses the same public substitution, and anyone who recognizes it can reverse it immediately by applying ROT13 again. It should not protect passwords, tokens, personal information, private messages, production configuration, or any secret. Historical Internet use included obscuring spoilers or material a reader might prefer not to see accidentally. That is casual reversible obfuscation, not confidentiality, authentication, integrity protection, hashing, or access control. This tool does not implement arbitrary Caesar shifts, ROT5 for digits, ROT18, ROT47, Unicode transliteration, language-aware substitution, compression, or encryption. Use Caesar Cipher when a configurable ASCII shift is needed, and use established audited cryptographic systems when actual security is required. The official Python codecs documentation identifies rot_13 as a string-to-string text transform, its source supplies a direct alphabet table cross-check, and RFC 1855 provides historical context for ROT13 utility use. Executable fixtures cover complete uppercase and lowercase alphabets, mixed case, digits, punctuation, accented text, CJK, emoji, whitespace, NUL, the self-inverse property, and the exact input boundary.
Methodology & sources
Reject empty input and input above 1,000,000 UTF-16 code units before transformation. Match only ASCII A-Z and a-z. For each uppercase letter, subtract 65, add 13 modulo 26, and add 65; use base 97 for lowercase. Count each matched letter and preserve every unmatched code unit exactly. Output length therefore equals input length, and applying the same function twice reproduces the source. Editing and rerunning clear old result and error state. Clipboard writes use job generation, mounted-state, and timer-identity guards so older asynchronous completion cannot publish stale status or clear a newer timer reference. No encryption or security claim is made.
Frequently asked questions
- Does the same operation encode and decode ROT13?
- Yes. The alphabet has 26 letters, so rotating by 13 twice restores every ASCII letter to its original value.
- What happens to accented letters, CJK, or emoji?
- They remain unchanged. This tool rotates only ASCII A–Z and a–z and preserves every other UTF-16 code unit.
- Is ROT13 secure encryption?
- No. ROT13 has no secret key and is reversed by applying the same public transform again. Use it only for casual obfuscation, never to protect secrets.
- Is my text uploaded or stored?
- No. Transformation, counting, display, and clipboard preparation occur locally in the active browser tab.
Related tools
- Caesar Cipher DecoderEncode or decode a classic Caesar shift while preserving case, punctuation, numbers, and non-ASCII text.
- Vigenere Cipher DecoderEncrypt or decrypt classic Vigenere text with a known repeating A–Z key entirely in your browser.
- Morse Code TranslatorTranslate text to Morse code and back instantly, with audio playback — free and fully in your browser.
- Base64 Encode / DecodeEncode or decode Base64 instantly with full UTF-8 support — emoji and accents work, all in your browser.
- Binary To TextConvert text to binary and binary back to text instantly, with full Unicode (UTF-8) support and everything running locally in your browser.
- Hex to Text ConverterParse hexadecimal bytes with explicit separator and 0x-prefix rules, then decode only complete valid UTF-8 without silent replacement.