Text & wordsFree
Free reverse text tool. Reverse characters or reverse word order instantly in your browser.
Last updated 14 October 2026
This tool reverses on code points. That is one step better than the naive approach, which splits on UTF-16 code units and breaks every emoji in half, but it is still not the same as reversing what you would call characters. The unit a reader thinks of as one character is what Unicode calls an extended grapheme cluster, and plenty of those are built from two or more code points.
So the result depends on how your text happens to be encoded, which is invisible to you. Two spellings of the same word behave differently:
café written with the single precomposed character U+00E9 reverses to éfac. The accent stays on the e.café written as e followed by the combining acute U+0301 reverses to ́efac. The accent detaches, moves to the front and lands on nothing, so it attaches to whatever happens to be there.Both spellings look identical on screen before you reverse them. If a reversal looks wrong and you cannot see why, this is usually it: your text is in decomposed form. Normalising to composed form (NFC) first will fix the common accented letters, because NFC replaces base-plus-mark pairs with single characters where a single character exists.
The same thing happens to scripts that build a syllable out of several code points. Devanagari हिन्दी comes back as ीद्निह: the vowel signs and the virama are separate code points, so they are reordered individually rather than travelling with the consonant they belong to.
A flag emoji is not one character. It is a pair of regional indicator symbols, one per letter of the two-letter country code, and your device draws a flag when it sees a valid pair. Reverse the pair and you get a different valid pair, so you get a different flag. Measured in this tool:
Nothing warns you, because at the code-point level nothing went wrong. Emoji built from a modifier behave the same way: 👍🏽 is a thumbs-up followed by a skin-tone modifier, and reversing puts the modifier first, so you get a loose colour swatch followed by a default-tone thumb.
Family and profession emoji are joined by a zero-width joiner, and those survive as a group because the joiners reverse along with everything else, but the members come back in the opposite order. 👨👩👧 reverses to 👧👩👨: still one family, read right to left.
Word mode splits on runs of whitespace and rejoins with a single space. That is a different operation from the one most people expect, and it is lossy. Measured in this tool:
one two and three four on two separate lines comes back as four three two one on one line. The line break is gone.a b c comes back space-separated. Tabs are gone, so you cannot use this on a column of pasted data.a b with two spaces comes back with one.If you need the word order reversed within each line while keeping the lines, this tool will not do it. Reverse each line on its own, or use character mode, which does preserve line breaks because a newline is just another code point to it.
Hebrew and Arabic are stored in logical order, the order you would say the letters, and your browser works out the visual order using the Unicode bidirectional algorithm. This tool reverses the stored order. That is not the same as reversing what appears on your screen, and for mixed text containing both directions the two operations give completely different answers.
Measured here: Hebrew שלום comes back as םולש, and Arabic سلام as مالس. The code points are genuinely reversed. Whether that is the reversal you wanted depends entirely on whether you meant the stored order or the displayed one, and only you know that.
If you came here hoping to convert Windows line endings, this is not the tool, and the reason is worth knowing because it applies to every text box on every site. The HTML standard says a textarea’s API value is “the element’s raw value, with newlines normalized”, and that it is “normalized so that line breaks use U+000A LINE FEED (LF) characters”.
We checked what the box actually hands over: pasting a, a carriage return, b produces the same three code points as pasting a line feed instead, every time. The conversion happens in the browser before any code on this page runs, so no tool in a web page can see or change your original line endings. That needs a local editor or a command-line utility.
Intl.Segmenter, which would keep accents, flags and skin tones attached. We have documented the current behaviour here rather than quietly changing a tool people may be relying on for puzzle work, where code-point reversal is often exactly what is wanted.Array.from and the string iterator. developer.mozilla.orgIntl.Segmenter. developer.mozilla.orgtextarea element. html.spec.whatwg.orgEvery behaviour described on this page was measured against this tool as it is published, in a browser, on 14 October 2026. Where the page says what the tool does not do, that is a statement about this tool, not about reversing text in general.
Your text is almost certainly in decomposed form, where the letter and its accent are two separate code points. Reversing moves them apart. café with the single character é reverses cleanly; café typed as e plus a combining acute does not. The two look identical before you reverse them, which is why this is confusing. Normalise to NFC first and the common accented letters will behave.
Because a flag emoji is two regional indicator letters, not one character. 🇬🇧 is G then B; reversed it is B then G, which is a valid pair, so your device draws Bulgaria. Sweden becomes Spain the same way. Nothing is broken, and nothing warns you, because at the code-point level the reversal did exactly what it was asked.
Single emoji survive, because this tool splits on code points rather than UTF-16 code units. Emoji built from several code points come back altered: skin-tone modifiers detach and land in front of the hand, and family emoji keep their joiners but list their members in the opposite order. 👨👩👧 becomes 👧👩👨.
You were in word mode, which splits on all whitespace and rejoins with single spaces, so line breaks and tabs are discarded. Character mode keeps them, because to it a newline is just another code point. If you need words reversed inside each line, do one line at a time.
No, and no tool in a web page can. The HTML standard requires a text box to normalise line breaks to LF before any script can read the value, so by the time this page sees your text the conversion has already happened in the browser. Use a local editor or a command-line utility.
That is our Word Counter, not this tool, and it counts UTF-16 code units, so an emoji counts as two and a decomposed accent counts as two. This tool does not count anything, but the same underlying fact explains both: what a program calls a character and what you call a character are different units.
No. Both modes are a few lines of JavaScript running in your browser, and there is no request carrying your text off the page. Nothing is stored either, so refreshing loses it.
Puzzle and word-game work, where code-point reversal is what you want; checking a palindrome by eye; reversing a list of words to see it from the other end; and producing deliberately scrambled text for a mock-up. It is not a text-processing pipeline, and for anything where the accents or flags matter, reverse it in an editor that works by grapheme cluster.