Live demo (works without JavaScript):
Sample input — paste anything and watch the result update..etadpu tluser eht hctaw dna gnihtyna etsap — tupni elpmaSWritten by Jane Smith · Reviewed by Sarah Mitchell · July 21, 2026
Reverse the entire string, reverse characters on each line, or reverse the order of lines.
This tool does exactly one thing, three ways. Each mode is a different way of reversing text, and the right choice depends on whether you care about the order of characters or the order of lines:
Everything runs in your browser. Your text never leaves the page, there is no server involved, and nothing is stored anywhere.
One more convenience is worth knowing: as you type, the page writes your current text into the address-bar hash. The link in your browser bar carries a #text=... fragment holding the encoded input. Open that link anywhere and the box comes back pre-filled, with the output recalculated automatically — useful for bookmarking a specific input or handing a ready-to-run snippet to someone else.
The easiest way to see the difference is with a tiny three-line input. Paste this into the box:
alpha
beta
gamma
Now press each button. The three results are different in a predictable way:
ammag, ateb, ahpla — every character is flipped and the line order is inverted too.gamma, beta, alpha — the lines are swapped, but each line is still spelled normally.ahpla, ateb, ammag — the lines keep their order, only the letters inside them are mirrored.The same pattern holds for any input. A single-word input like racecar is a palindrome, so it comes back identical in all three modes — a quick way to check whether a word reads the same backward and forward.
Each button calls a small function that splits, reverses, and rejoins the text. "Reverse Entire Text" runs split('') to break the input into its individual characters, calls reverse() on the resulting array, then joins it back together. "Reverse Line Order" does the same dance but splits on \n instead, so each line is a single element that never gets reordered internally. "Reverse Each Line" splits on newlines first, reverses the characters inside every line, and reassembles the lines in place.
After any run, the stats bar under the output recalculates three numbers: the character count of the result, its word count (words are split on whitespace), and its line count. That is also where a small quirk shows up — an empty output still reports one line, because splitting an empty string on a newline yields a single empty element. If you want to copy the result, the Copy button uses the browser clipboard; the Download button saves it as a plain-text file named reverse-text.txt.
Text is messier than it looks, and reversal is the kind of operation that exposes the mess. A few things to expect:
'' works on Unicode code points, so a single emoji like 😀 survives intact. But sequences built from several code points — family emoji joined by zero-width joiner characters, skin-tone modifiers, flag pairs — get split into pieces and reassembled in a scrambled order.Because multi-code-point emoji were split apart during the character reversal. The tool works on code points, and sequences like family emoji or flags are made of several code points joined together. The pieces reorder; the emoji does not survive.
That is usually the carriage-return half of a Windows line ending. The tool splits on newlines only, so the \r stays attached to the end of each line and ends up at the front once the line order is flipped. Pasting through a text editor that normalizes line endings usually clears it up.
Yes. It treats the input as one continuous character stream, so the newlines are characters like any other and the line order comes out inverted. If you want the lines kept in place, use Reverse Each Line instead.
The stats count lines by splitting the output on newlines. An empty string splits into a single empty element, so an empty result counts as one line. It is a counting quirk, not a hidden character in your output.
There is no file upload — you paste text into the box. If the result is what you need, the Copy button puts it on the clipboard and the Download button saves it as reverse-text.txt.
Yes, as long as the link survives. The text lives in the URL hash, so a link that gets truncated or rewritten loses it. And because the text is visible in the link itself, a shared link is not a private way to pass content — keep sensitive material out of it.
Reversing text is handy for quick tasks: flipping a list so the most recent entry is on top, mirroring a sentence for wordplay, checking whether something reads the same backward and forward, or unscrambling a reversed line someone pasted into a chat. A changelog kept newest-first is a classic candidate — instead of scrolling, drop it in, run Reverse Line Order, and the latest note lands at the top. It is also genuinely useful for inspecting text that came out of another tool in reverse order, and for a sanity check: reversing the same text twice hands you back the original, character for character.
It is not the right tool for hiding content — reversal is trivially reversible, so treat it as a curiosity rather than any form of security. And because it works on raw characters, it is not suited to scripts that rely on right-to-left layout rules, where simply reversing code points produces the wrong reading order. For ordinary plain-text flipping, this is the fastest route.