Pure character-order reversal
This tool does one thing: read each input line as a sequence of UTF-16 code units, then emit them in reverse order. Each character keeps its original glyph; nothing is substituted. hello becomes olleh. 1234 becomes 4321. Spaces, punctuation, accented characters, and emoji all flip position but keep their original codepoint.
A subtle gotcha: emoji and other surrogate-pair characters can break visually under naive reversal because UTF-16 surrogate pairs are split. The tool reverses character by character via split('').reverse(), which works fine for basic Latin text but can corrupt emoji and certain CJK characters. For text containing emoji, the result may render as tofu boxes; use plain text only for clean output.
Common uses: palindrome inspection, generating decorative reversed text for design layouts, quick sanity checks before running other tools, or pairing with a font generator for a "mirror writing" effect. For a true visual mirror with rotated glyphs, no Unicode-only solution exists; you would need CSS or an image.
How to use mirror text generator
- 1Paste or type your text into the input panel on the left.
- 2The reversed result appears in the output panel as you type.
- 3Click Copy in the output header to copy the result.
- 4Paste it wherever you need the reversed string.
- 5For a flipped-letter look, run the result through upside down text generator.
Keyboard shortcuts
Drive TextResult without touching the mouse.
| Shortcut | Action |
|---|---|
| Ctrl F | Open the find & replace panel inside the input Plus |
| Ctrl Z | Undo the last input change |
| Ctrl Shift Z | Redo |
| Ctrl Shift Enter | Toggle fullscreen focus on the editor Plus |
| Esc | Close find & replace, or exit fullscreen |
| Ctrl K | Open the command palette to jump to any tool Plus |
| Ctrl S | Save current workflow draft Plus |
| Ctrl P | Run a saved workflow Plus |
What this tool actually does
Character-order reversal
The entire input string is split into UTF-16 code units and emitted in reverse. The first character becomes the last; the last becomes the first. No substitution, no rotation, no styling.
No letter substitution
Each glyph is preserved exactly. hello -> olleh: the same letters, just reversed. This is different from upside down, which both reverses the order and swaps each letter for a turned lookalike.
Whole-string reversal, not per-line
Line breaks reverse along with everything else, so a multi-line input ends up with the last line first and its characters mirrored. If you need per-line reversal (line order kept, each line internally reversed), do it line by line in two passes.
Surrogate-pair caveat
JavaScript strings are UTF-16, so a single emoji is often two code units (a high and low surrogate). Naive reversal splits the pair and corrupts the emoji. For ASCII Latin text the reversal is clean; for text containing emoji or characters above U+FFFF (Math Alphanumeric Symbols, Emoji, certain CJK extensions), the output may render badly.
Browser-side, instant
Single string operation, no network, no log. Closing the tab clears the input.
Worked example
The whole string is reversed in one pass, so the last line ends up first. To reverse each line independently, paste one line at a time.
hello world A man a plan
nalp a nam A dlrow olleh
Settings reference
| Behaviour | Effect on output |
|---|---|
| Reversal scope | Whole input as a single string. Line order also reverses. |
| Letter glyphs | Preserved exactly. No substitution. |
| Punctuation | Preserved. Position flips with everything else; brackets do not swap orientation. |
| Whitespace and newlines | Preserved as characters; reverse order applies to them too. |
| Emoji and surrogates | Surrogate pairs are split by naive reversal and may corrupt. Plain ASCII Latin text reverses cleanly. |
| Round-trip | Reversing the output again gives back the original input exactly. |
FAQ
How is this different from upside down text?
Why does my emoji look broken in the output?
Will this work for palindrome checking?
Can I reverse each line independently?
^.*$ match with its reverse) for batch processing.