String Reverser
Reverse any string or text.
Overview
Reverse any string character by character. The last character of your input becomes the first character of the output, the second-to-last becomes the second, and so on. It's the canonical string operation that every programmer eventually needs and surprisingly tricky to get exactly right on Unicode-rich input.
Developers checking palindrome candidates, puzzle setters scrambling clues, encoders building lightweight obfuscation, and students learning string manipulation all use a reverser. The browser-side implementation here is grapheme-aware, so accented letters and multi-codepoint emoji stay intact.
How it works
A naive reverser flips the underlying code units. That works for plain ASCII but breaks combining characters and emoji clusters into pieces. A grapheme-aware reverser first segments the string into user-perceived characters (clusters), then reverses the sequence of clusters. The result reads sensibly when characters are combinations of base + combining marks or sequences joined with zero-width joiners.
Examples
Input: Hello
Output: olleH
Input: café
Output: éfac (grapheme-aware; 'é' stays a single character)
Input: 12345
Output: 54321
Input: ABC 123
Output: 321 CBA
FAQ
What's the difference from Mirror Text?
They produce identical output. "Mirror Text" and "String Reverser" are different names for the same character-by-character flip operation, kept as separate tools because both names are commonly searched for.
Does it handle emoji correctly?
Yes. The reverser operates on graphemes, so a flag emoji or a skin-toned thumbs-up stays intact rather than splitting into raw code points.
Are right-to-left scripts handled specially?
The reversal flips character order in the logical sequence. Right-to-left scripts already display right-to-left, so reversing them produces visually confused output — that's mathematically correct but rarely useful.