Reverse Text
Reverse by characters, words, or lines
Why is Unicode-safe reversal non-trivial?
Naïvely reversing a string by character index breaks emoji and combined characters: 👨👩👧 (a family emoji) is actually four code points joined by zero-width joiners, and a flag emoji is two regional-indicator code points. Splitting on `.split('')` and reversing leaves the pieces shuffled.
This tool reverses by Unicode grapheme cluster (using the browser's `Intl.Segmenter` when available, falling back to a code-point iterator), so emoji, accented characters, and combining marks survive the reversal intact. Useful for puzzle creation, text effects, or simply curiosity.
Examples
| Input | Result |
|---|---|
| Hello World | dlroW olleH |
| Café 👨👩👧 | 👨👩👧 éfaC |
Frequently asked questions
Is the reversal Unicode-safe?
Yes. Reversal happens at the grapheme-cluster level, so emoji (including ZWJ sequences and skin-tone modifiers), accented letters, and combining marks remain intact.
Are line breaks preserved?
Yes — but reversed in order along with everything else. The first line of input becomes the last line of output (its characters reversed too).
Is there a length limit?
Only browser memory. The reversal completes in a single pass and handles megabytes of text without issue.
Does it work for right-to-left scripts?
Bidirectional text (Arabic, Hebrew) reverses character-by-character, which usually isn't what you want for those languages — the visual result depends on your browser's bidi algorithm.
Is the tool offline?
Once the page loads, yes — no network calls happen during reversal.
