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

InputResult
Hello WorlddlroW 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.