User Rating 0.0
Total Usage 0 times
Characters: 0
Is this tool helpful?

Your feedback helps us improve.

About

Text mirroring is a character-level transformation that maps each glyph to its visual counterpart along a chosen axis. A horizontal mirror swaps directional characters: parentheses ( become ), slashes change orientation, and bracket pairs invert. A vertical mirror (flip) replaces each Latin character with its closest Unicode upside-down equivalent - a becomes ɐ, e becomes ǝ - then reverses line order so the result reads correctly when the screen is rotated 180°. This tool operates on a lookup table of 100+ mapped character pairs derived from Unicode blocks including Latin Extended-B, IPA Extensions, and Mathematical Operators. The mapping is lossy: characters without a visual mirror (such as CJK ideographs) pass through unchanged. Results are copy-safe plain text, not CSS-rotated elements, so they work in any text field, messaging app, or social media bio.

mirror text flip text reverse text upside down text backwards text text formatter unicode mirror

Formulas

Each mirror mode applies a distinct transformation pipeline to the input string S of length n.

Horizontal Mirror (Left-Right):

Sh = map(S, H) where H: Char Char

The string is iterated character-by-character. Each character ci is replaced by H(ci) from the horizontal lookup table, then the entire result is reversed:

Sh = reverse(H(c1) H(c2) H(cn))

Vertical Mirror (Upside-Down Flip):

Sv = reverse(map(S, V))

Each character ci is replaced by V(ci) from the vertical (upside-down) Unicode lookup. The result is then reversed so it reads correctly when rotated 180°.

Reverse (Simple):

Sr = cn cn1 c1

Both (Combined):

Sb = vertical(horizontal(S))

Where H is the horizontal character map, V is the vertical (upside-down) character map, and reverse inverts string order. Complexity: O(n) for all modes. Characters absent from lookup tables pass through as identity: H(c) = c when no mirror glyph exists in Unicode.

Reference Data

OriginalHorizontal MirrorVertical FlipUnicode Block
aaɐLatin Ext-B / IPA
bdqBasic Latin
cɔɔIPA Extensions
dbpBasic Latin
eɘǝLatin Ext-B / IPA
fʇɟIPA Extensions
gǫƃLatin Ext-B
hʜɥIPA Extensions
iiLatin Ext-B
jɾIPA Extensions
kʞʞIPA Extensions
mmɯIPA Extensions
nnuBasic Latin
pqdBasic Latin
qpbBasic Latin
rɿɹIPA Extensions
ttʇIPA Extensions
uunBasic Latin
vvʌIPA Extensions
wwʍIPA Extensions
yʎʎIPA Extensions
( )) (( )Basic Latin
[ ]] [[ ]Basic Latin
{ }} {{ }Basic Latin
< >> << >Basic Latin
/\/Basic Latin
??¿Latin-1 Supplement
!!¡Latin-1 Supplement
&&Math Operators
__General Punctuation
..˙Spacing Modifiers
,,ʻSpacing Modifiers

Frequently Asked Questions

Unicode does not provide visual mirror equivalents for every glyph. Symmetric characters like "o", "x", "0", and "8" look identical when flipped. Characters from non-Latin scripts (CJK, Arabic, Devanagari) generally lack mapped counterparts in the IPA Extensions or Latin Extended blocks. These pass through unchanged. The tool maps over 100 character pairs but cannot invent glyphs that do not exist in Unicode.
The output uses standard Unicode code points from well-supported blocks (IPA Extensions U+0250 - U+02AF, Latin Extended-B U+0180 - U+024F). Modern operating systems (Windows 10+, macOS 10.12+, Android 8+, iOS 11+) render these correctly. Older systems or devices with limited font coverage may show placeholder squares for uncommon glyphs like ɟ (U+025F) or ʞ (U+029E). Testing on the target platform is recommended for critical applications.
Yes. The vertical flip processes each line independently, applying the upside-down character map to every character within each line. Lines are then reversed in order (last line first) so the entire block reads correctly when rotated 180°. Line breaks are preserved. An input of 3 lines produces an output of 3 lines in reversed vertical order.
Simple reversal only reorders characters: "Hello" becomes "olleH". Horizontal mirroring also swaps directional glyphs: parentheses ( become ), brackets [ become ], slashes / become \, and asymmetric letters like "b" become "d". The result is a true left-right reflection, not just a backwards string. For example, "(Hello)" reversed is ")olleH(" but horizontally mirrored is ")oллǝH(" with character substitutions applied.
Yes, because the output is plain Unicode text, not an image or CSS transformation. It can be pasted into any text field that accepts Unicode: Twitter/X bios, Instagram names, Discord messages, WhatsApp, email subjects, and forum posts. Some platforms may strip or normalize certain Unicode characters during processing. Test by pasting into the target field before committing. Character limits apply per-character, and some IPA glyphs may count as multiple bytes in UTF-8 encoding.
The tool processes text client-side with O(n) complexity. Practical limits depend on browser memory. Texts up to 100,000 characters transform in under 50 ms on modern hardware. The textarea accepts unlimited input, but localStorage persistence is capped at approximately 5 MB per origin (roughly 2.5 million characters). For extremely large texts, the tool will still function but may not auto-save.