Text Reverser
Reverse any string character by character. Handles Unicode correctly; runs locally.
Runs in your browser — files never leave your device
How it works
Paste any text and the tool writes it backwards — last character first — updating live as you type. It reverses characters only: word order and line order are not treated as units, and a multi-line input is handled as one long sequence, newlines included. A concrete example: Hello World becomes dlroW olleH, and reversing that output restores the original exactly.
Under the hood the string is split into Unicode code points, the sequence is reversed, and the pieces are joined back together. Splitting by code points rather than raw UTF-16 units matters for anything outside the basic plane: hi 😀 reverses to 😀 ih with the emoji intact, whereas a naive UTF-16 reversal would tear the emoji into two broken surrogate halves and print garbage.
Code points are still not the same thing as the characters you see, and that is where the gotchas live. An emoji plus a skin-tone modifier is two code points, so 👍🏽 comes back as the modifier and the thumbs-up separated into two glyphs. Family emoji assembled from several people with zero-width joiners keep their joiners but reverse the member order — 👨👩👧 returns as girl, woman, man. And accented letters are safe in their usual precomposed form (café reverses cleanly to éfac), but an accent typed as a separate combining mark detaches and ends up stranded at the start of the reversed string.
What people actually use it for: checking palindromes (racecar reversed is still racecar), building word puzzles and riddles, producing mirrored strings to test how a UI handles unusual input, light spoiler obfuscation in chats and forums, and generating test fixtures where a string must be clearly transformed yet exactly recoverable — a double reverse always returns the original, character for character.
Frequently asked questions
- Does it reverse by character, word or line?
- Character only. The entire input — including spaces and newlines — is treated as one sequence and emitted back to front, so the last character of the last line comes out first. There is no mode for reversing word order or line order.
- How are emoji handled?
- Single-code-point emoji like 😀 survive intact because the tool reverses Unicode code points rather than raw UTF-16 units. Compound emoji do change: 👍🏽 splits into a skin-tone swatch and a plain thumbs-up, and family emoji built with zero-width joiners come back with their members in reverse order.
- What about accented characters?
- Precomposed accents — the normal form produced by keyboards — reverse cleanly: café becomes éfac. If a letter was typed as a base letter plus a separate combining mark, the mark detaches during reversal and ends up at the front of the string attached to nothing.
- If I reverse twice, do I get my original text back?
- Yes, always and exactly. Reversal preserves every code point, so applying it twice restores the input character for character — even for tricky strings mixing emoji, accents and newlines.
- Can I use it to check palindromes?
- Yes — reverse the text and compare: racecar comes back unchanged. The comparison you make is strict, though, so spaces, punctuation and letter case all count; sentence-style palindromes only match if you strip punctuation and normalize the case first.
- Is my text uploaded?
- No — reversal happens in your browser on every keystroke and nothing is transmitted or stored. The same logic is shared with the ZoolTools mobile app and validated against common test vectors.
Related tools
- Word & Character CounterCount words, characters, sentences, paragraphs and lines instantly. Runs entirely in your browser — your text never leaves your device.
- Case ConverterConvert text between UPPERCASE, lowercase, Title Case, camelCase, snake_case, kebab-case and more — instantly in your browser.
- Slug GeneratorTurn any title into a clean, URL-friendly slug. Removes accents and punctuation; runs in your browser.
- Remove Duplicate LinesStrip duplicate lines from a list, keeping the first occurrence. Optional case-insensitive and trim modes.
- Sort LinesSort lines alphabetically, ascending or descending, with optional case-insensitive comparison.
- Number Base ConverterConvert numbers between binary, octal, decimal and hexadecimal (or any base 2–36).