Reverse Text
Reverse text by characters, words, or lines instantly in your browser.
- Free, no account
- No watermark
- No usage limit
About the Reverse Text
Reverse a family emoji here and the same family comes back, in the same order. Flip it the obvious way and the four people come out backwards. Flip it the really obvious way and you get 8 orphaned halves of characters, which no font can draw.
That is what this one is built around. It moves whole characters, the things you would point at on a screen, rather than the pieces they are stored in. A family emoji is 1 character to you and 11 pieces to the computer. A flag is 1 character and 4 pieces. The word café, if the accent was typed as its own mark, is 4 characters and 5 pieces.
I threw 20 deliberately awkward strings at this tool and at both of the usual shortcuts. It matched the answer you would write out by hand on all 20. The flip-the-pieces version came out different on 18 of them, and left a broken half-character behind in 6. The flip-the-code-points version, which is what people reach for once they learn that emoji are more than one piece, still missed 16.
Three modes: characters, word order, line order. It runs as you type, there is no button to press, and nothing you paste leaves the page.
How to use
- Pick a mode. Three buttons sit above the input. Reverse characters turns
The quick brown foxintoxof nworb kciuq ehT. Reverse words gives youfox brown quick The, every word still spelled forwards. Reverse lines takes a Monday, Tuesday, Wednesday list and hands back Wednesday, Tuesday, Monday with each line untouched. One mode runs at a time. - Type or paste into the input box. The output fills in on every keystroke and again the instant you switch modes.
- Copy or clear. Copy result puts the output on your clipboard. Clear empties both boxes, and it stays disabled until there is something in there to clear. The output box is read-only so a stray click cannot scramble what you just made.
Reverse words is worth one warning. It treats your whole text as a single stream, so line breaks count as gaps and words move up and down between lines. Gaps get reversed along with the words, which means a double space survives but does not necessarily stay in the same slot: The quick brown fox comes back as fox brown quick The, with the wide gap now sitting before The.
Where the shortcuts fall over
There are two easy ways to build a text reverser and people write both. One walks the string a storage slot at a time. The other walks it a code point at a time (a code point being Unicode's numbered entry for one letter, mark or emoji), which is the fix you apply after the first version mangles a smiley. Here is what each of them does to input this tool handles fine:
| You typed | This tool gives back | A code-point flip gives back |
|---|---|---|
| 🇬🇧 | 🇬🇧 | 🇧🇬, which is Bulgaria |
| 🇬🇧🇫🇷 | 🇫🇷🇬🇧 | 🇷🇫🇧🇬, an unassigned pair and then Bulgaria again |
| 👨👩👧👦 | 👨👩👧👦 | 👦👧👩👨 |
| 👋🏽 | 👋🏽 | 🏽👋, the skin tone stranded on its own |
| किताब | बताकि | बातिक |
Hindi is the one worth staring at. किताब is 5 code points but 3 characters, because two of those code points are vowel signs that ride on the consonant in front of them. Move them separately and you have not reversed the word, you have changed it into a different word that a Hindi reader will read as nonsense. Thai does the same thing for the same reason, สวัสดี is 6 code points and 4 characters, and Arabic harakat and Hebrew nikud both behave that way too.
Emoji are what everyone tests a reverser with. If your text is Hindi, Thai, Arabic or Hebrew, it is the marks riding on the letters that will bite you, and they come apart in exactly the same way.
There is a middle version of this that gets written a lot, where you squash the accents together first and then flip code points. It genuinely fixes café and it fixes a lone smiley. It was still different from the correct answer on 13 of my 20 strings, because there is no squashed-together form for a flag, or a family, or a skin tone, or a Hindi syllable. That middle version is what this tool used to do, which is why I built the 20 strings in the first place.
Two more are easy to miss. The Devanagari cluster क्ष is 3 code points fused into a single character, and the keycap 1️⃣ is 3 as well, and both of those come back in one piece here.
What you get back when you reverse twice
Flip something, flip it again, and you expect your text back. You get your words back every time, all 20 came back reading exactly the same as what I typed in. Even so, 5 of the 20 came back stored differently, and that is worth knowing if anything downstream is comparing text byte for byte.
The reason is that some characters can be typed two legal ways. Café can be 4 pieces with a ready-made é, or 5 pieces with a plain e and a floating accent, and both are correct. This tool picks the first spelling before it reverses anything, so the 5-piece version comes back as 4. Korean written out as separate jamo pieces does the same thing, 4 pieces in, 2 finished syllables out. Same word on the screen, fewer pieces beneath it.
It looks identical on screen, and a database column doing a strict byte comparison will still see a difference. That is a choice rather than a bug, and it is the choice that makes a word typed on a Mac and the same word typed on a PC reverse to one answer instead of two.
What the number under the box is counting
The stats bar counts the same characters the reverser moves. Paste a family emoji and it says 1. Paste a flag and it says 1. Type café with a separate accent mark and it says 4, then type it with a ready-made é and it still says 4, so the same word on screen gives you the same number whichever machine typed it.
That is worth stating plainly, because until recently it was not true. The bar used to count storage slots, so the same family emoji came back as 11, the flag as 4, and café with a floating accent as 5 against 4 for the identical word. Two numbers sat under one box and disagreed, and whichever one you trusted, the other was telling you something else about the same text.
The storage number did not stop existing, though, and that is the part worth taking away. One family emoji is 1 character, 11 storage slots, and 25 bytes, and all three of those are correct answers to a differently worded question. A flag comes out as 1, 4 and 8. Café with a floating accent is 4, 5 and 6, and the same word with a ready-made é is 4, 4 and 5.
Nothing on this page charges you for the bigger numbers, but plenty of boxes elsewhere do. A form that cuts you off at 20 may be counting slots, in which case a single family emoji eats 11 of your 20 and leaves room for 9 letters, while the count in front of you still reads 1. We cannot tell you which of the three any particular box is using, and a page that claims one of them is the real character count is guessing.
If you want all three on one paste, the character counter prints characters, code units and bytes side by side. The word counter has the fuller breakdown of words, lines and sentences. Neither of those two changed this week. The bar on this page is the one that moved, and it changed to agree with them.
Frequently asked questions
Why did my period jump to the front?
Reverse characters treats punctuation like any other character, so Done. comes out .enoD with the full stop leading. That is correct, it is just rarely what people want from a sentence. Reverse words leaves each word and its punctuation intact and only changes the order they sit in.
Why did reverse lines put a blank line at the top of my list?
Your text ended with a return. A trailing return means the last line is an empty one, so flipping the order puts that empty line first. Paste a, return, b, return, and you get an empty line, then b, then a. Delete the final return before you flip, or just delete the blank line afterwards.
What does it do with Arabic or Hebrew?
It gets the order right and keeps the marks attached. مَرْحَبًا is 9 code points and 5 characters, and every vowel mark comes back sitting on the same letter it started on. What happens next is out of the tool's hands, because your browser applies its own layout rules to right-to-left text, so what appears on screen can differ from what you pictured. Trust it for the underlying order, not as a replacement for a proper bidirectional editor.
How much text can it take?
There is no cap. I timed the reverse on a document of 118,000 characters and it came back in about a hundredth of a second, and on 1.18 million characters it took about a tenth. That was on a desktop, so a phone will be slower, but you are not going to hit a wall with a normal document.
Does anything get uploaded?
No. The reversing happens in the tab you are looking at, and your text is never sent to a server, saved, or logged. Once the page has loaded it works offline, so you can flip a private draft on a plane. Close the tab and the text is gone.
How do I check a palindrome?
Reverse the characters and compare the two boxes. racecar comes back racecar, so it is one. Mr Owl ate my metal worm comes back mrow latem ym eta lwO rM, which is not a match, because the classic palindromes ignore spaces, capitals and punctuation and a literal flip does not. Strip those out first if you want the loose version.
Can it make the letters themselves look backward?
No, that is mirrored text and it is a different thing. Reversed text changes the order and leaves every letter looking normal, so an H still looks like an H. Mirrored text swaps each letter for a flipped lookalike, the way AMBULANCE is painted on the front of an ambulance so it reads correctly in your rear-view mirror. You want a mirror-text tool for that.
What if my browser does not know where characters end?
Then it falls back to flipping code points, which is the middle version described above. Accented letters and single emoji still survive that, café and a plain smiley both come back fine. Flags come apart, though, and a family emoji reverses its members. It takes a fairly old browser to land there, so most people will never see it.