Text Reverser (Fun)
Reverse your text by character, by word, by word order, or line by line, with correct handling of emoji and other multi-byte Unicode characters.
About the Text Reverser
Flip your text four ways: the whole thing backward, just the letters inside each word, the order of the words, or line by line. It splits using Unicode-aware iteration rather than naive character splitting, so emoji and other multi-byte characters reverse cleanly instead of turning into garbled fragments.
Standalone emoji reverse cleanly; compound emoji built from modifiers don't
Character reversal uses the spread operator, [...text], which iterates by full Unicode code point rather than by raw UTF-16 unit, so a single-code-point emoji like π survives reversal intact instead of splitting into two broken surrogate fragments the way a naive index-based loop would mangle it. But a skin-tone-modified emoji like ππ½ is actually two code points, a base emoji followed by a separate skin-tone modifier that's only meaningful directly after its base. Reversing those two code points individually swaps their order, putting the modifier in front of the base character β a sequence Unicode never intends to occur, which typically renders as a stray color swatch next to a default-color emoji rather than the original colored gesture. The same applies to family emoji and other sequences built by joining several person emoji with zero-width joiners: reversing the whole sequence reorders the individual people within it rather than flipping the compound emoji as a single visual unit, which may render as a family in a different arrangement, or may fail to combine into one glyph at all depending on the system displaying it.
"Reverse Each Word" and "Reverse Word Order" treat whitespace differently from each other
Reverse Each Word splits on /\s+/, which matches any run of whitespace β spaces, tabs, or otherwise β as a word boundary, so a tab-separated pair of words is correctly recognized as two separate words with the tab preserved between them. Reverse Word Order, on the other hand, splits each line on a literal single space character, " ", only. That means text using tabs between words doesn't get its word order flipped at all in that mode β a tab-separated pair like "aβb c" only has its space-separated portion reordered, while the tab-joined chunk stays glued together and moves as a single unit. If you're reordering tab-separated data, Reverse Each Word's whitespace handling won't help since it reverses letters rather than word order, and Reverse Word Order won't split on the tabs the way you might expect.
How the original spacing survives exactly in "Reverse Each Word" mode
The splitting pattern for that mode, /(\s+)/, wraps the whitespace-matching part in a capturing group, which is what makes JavaScript's split() keep the matched delimiters in the resulting array instead of discarding them. Each whitespace chunk is then left untouched while every non-whitespace chunk gets its own characters reversed, so the exact spacing pattern from your original text, including any double spaces or mixed tabs, is preserved character-for-character in the result rather than being normalized to single spaces.
The classic use case: writing something that reads the same, or differently, backward
Reversing text has been a source of wordplay for as long as writing itself β ancient boustrophedon inscriptions alternated reading direction line by line, and reversible or mirror-writing has shown up in everything from Leonardo da Vinci's notebooks to modern novelty typography. This tool's four separate modes map onto the different things people actually want out of reversed text: full-text reversal for mirror-image novelty effects or checking whether a phrase is a character-level palindrome, word-order reversal for the "Yoda-speak" effect of keeping words intact but flipping their sequence, and per-line reversal for formatting effects where line structure matters but content within each line should flip.
Why the four modes exist as separate options instead of one setting
Character-level reversal, word-order reversal, and line reversal are genuinely different operations that happen to share the word "reverse," which is exactly why lumping them into a single button would be ambiguous about what a user actually wants. Someone checking whether "racecar" is a character palindrome needs full reversal; someone wanting the word order of "the quick brown fox" flipped to "fox brown quick the" while keeping each word spelled normally needs word-order reversal specifically, not a garbled character-by-character flip of the whole sentence.
Frequently Asked Questions
Does reversing text with emoji always produce a clean, correctly-rendered result?
For single-code-point emoji, yes. But emoji built from more than one code point, like a skin-tone-modified gesture or a multi-person family emoji joined with zero-width joiners, get their individual components reordered rather than flipped as one visual unit, which can produce a broken or differently-arranged result instead of the compound emoji reversed as expected.
Do "Reverse Each Word" and "Reverse Word Order" handle tabs the same way?
No. Reverse Each Word treats any run of whitespace, including tabs, as a word boundary. Reverse Word Order only splits on a literal single space character, so a tab-separated pair of words stays glued together as one unit in that mode instead of having its order flipped.
Does "Reverse Each Word" preserve my original spacing exactly?
Yes. Because the splitting pattern captures the whitespace itself rather than discarding it, every space, tab, or run of spaces in your original text is kept exactly as it was, with only the letters inside each word getting reversed.
What's the difference between "Reverse Entire Text" and "Reverse Each Line"?
Reverse Entire Text treats your whole input as one continuous string and flips it from the very last character to the very first, including reversing the order of lines themselves. Reverse Each Line instead keeps every line in its original position and only reverses the characters within that individual line, so multi-line text keeps its line order intact.
Is my text sent to a server when I use this tool?
No. All reversing happens locally in your browser as you type; nothing is uploaded anywhere.