User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times
Supports any Unicode text. Emojis and special characters preserved.
Clean Mild Heavy Chaos
Corruption Styles
Presets:
Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

About

Text corruption exploits the Unicode combining character mechanism defined in the Unicode Standard (Chapter 3, Conformance D52). Combining diacritical marks in ranges U+0300 - U+036F and U+1DC0 - U+1DFF attach to any preceding base character without advancing the cursor position. Stacking n combining marks on a single base glyph forces the rendering engine to draw overlapping marks above and below the baseline, producing the visual distortion known as "Zalgo" text. Misconfigured text sanitizers that strip only ASCII will pass these through, which is why corrupted text appears intact on most platforms. This generator also applies homoglyph substitution - replacing Latin a (U+0061) with Cyrillic Π° (U+0430) - a technique documented in Unicode Technical Report #36 (Security Considerations). Intensity is controlled probabilistically: each base character has a corruption probability of I100, where I is the slider value.

Limitation: rendering varies across platforms. Some mobile keyboards collapse excessive combining marks. Discord and Twitter may strip certain ranges. Test your output in the target application before committing to a style. This tool operates entirely client-side - no text is transmitted to any server.

corrupted text zalgo text glitch text generator unicode text effects creepy text cursed text text corruptor

Formulas

The corruption probability for each character at position i is governed by a uniform random variable compared against the normalized intensity parameter:

Pcorrupt = I100

where I ∈ [0, 100] is the intensity slider value. A character is corrupted when Math.random() < Pcorrupt.

For Zalgo-style corruption, the number of combining marks appended to a base character c is:

nmarks = ceil(I10) + floor(Math.random() Γ— ceil(I5))

where nmarks determines the vertical extent of the distortion. At I = 100, a single base character may carry up to 30 combining marks.

Homoglyph substitution uses a bijective mapping H: L β†’ U, where L is a subset of Basic Latin (U+0041 - U+007A) and U contains visually confusable codepoints from Cyrillic, Greek, or Mathematical Alphanumeric blocks. The mapping is deterministic per character but application is stochastic, controlled by Pcorrupt.

Reference Data

Corruption StyleUnicode Range / TechniqueVisual EffectPlatform Support
Zalgo (Above)U+0300 - U+036F (Combining Diacriticals)Marks stack above glyphsUniversal
Zalgo (Below)U+0316 - U+0333 (Below Diacriticals)Marks drip below baselineUniversal
Zalgo (Overlay)U+0334 - U+0338 (Combining Overlays)Strikes through glyph centerUniversal
HomoglyphCyrillic аСорс β†’ Latin a e o p cVisually identical, different codepointUniversal
FullwidthU+FF01 - U+FF5E (Fullwidth Forms)Wide monospace charactersMost browsers
Leet SpeakASCII substitution (A→4, E→3, etc.)Hacker-style alphanumericsUniversal
Upside DownLatin Extended / IPA ExtensionsInverted characters, reversed orderMost browsers
StrikethroughU+0336 (Combining Long Stroke Overlay)Line through each characterUniversal
EncircledU+20DD (Combining Enclosing Circle)Circle around each characterDesktop browsers
SquaredU+20DE (Combining Enclosing Square)Square around each characterDesktop browsers
Bubble TextU+24B6 - U+24E9 (Enclosed Alphanumerics)Letters inside circlesUniversal
Small CapsLatin Extended-B / IPAReduced uppercase formsMost browsers
Math BoldU+1D400 - U+1D433 (Math Alphanumeric)Bold serif mathematical symbolsModern browsers
Math ItalicU+1D434 - U+1D467 (Math Alphanumeric)Italic serif mathematical symbolsModern browsers
FrakturU+1D504 - U+1D537 (Math Alphanumeric)Gothic/Blackletter scriptModern browsers
Double-StruckU+1D538 - U+1D56B (Math Alphanumeric)Outlined "blackboard bold"Modern browsers
MonospaceU+1D670 - U+1D6A3 (Math Alphanumeric)Fixed-width serifModern browsers
Script/CursiveU+1D49C - U+1D4CF (Math Alphanumeric)Flowing handwritten styleModern browsers
VaporwaveFullwidth + space insertionW i d e s p a c e d textUniversal
Morse HybridDot/dash insertion between charstΒ·e - xΒ·t visual noiseUniversal

Frequently Asked Questions

Each operating system uses different text shaping engines and font fallback chains. iOS uses Core Text with the San Francisco font stack, which aggressively clips excessive combining marks beyond approximately 5-7 per base character. Android's HarfBuzz engine with Roboto/Noto is more permissive and will render 15+ stacked marks. Desktop browsers (Chrome, Firefox) using FreeType or DirectWrite typically show the most faithful rendering. Test at your target intensity on the actual device before distributing.
Combining characters are valid Unicode (conformant per Unicode Standard Annex #15). UTF-8 encoded databases (MySQL utf8mb4, PostgreSQL) store them correctly. However, text fields with character limits count combining marks individually - a single Zalgo-corrupted letter at intensity 100 may consume 20+ characters of a 280-character limit. Some WAFs (Web Application Firewalls) flag high combining-mark density as potential homograph attacks per Unicode TR#36.
Homoglyph substitution replaces Latin codepoints with visually identical characters from other Unicode blocks. Latin 'a' (U+0061) becomes Cyrillic 'Π°' (U+0430). To a human reader, the text looks unchanged. To software performing string comparison, search indexing, or keyword filtering, the text is entirely different. This is the mechanism behind IDN homograph attacks on domain names (documented in RFC 5892). The generator uses this for creative/aesthetic purposes only.
Twitter/X: intensity 30-50 renders well; above 70, tweets may display inconsistently across clients. Discord: supports high intensity (80-100) in desktop but mobile clips aggressively. Instagram: strips most combining marks from bios but preserves them in DMs. Facebook: moderate support, intensity 40-60 recommended. Reddit: full support in comments with old.reddit rendering better than new Reddit for extreme Zalgo.
For Zalgo and strikethrough modes: yes. Stripping all characters in Unicode categories Mn (Nonspacing Mark) and Me (Enclosing Mark) via regex /[\u0300-\u036F\u0489\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/g recovers the base text. For homoglyph and leet substitutions: only if you have the exact mapping table used, since the substitution is lossy (multiple source chars may map to the same target). Upside-down text is reversible via the inverse character map.
No. All corruption algorithms execute client-side in your browser using JavaScript string operations on Unicode codepoints. No network requests are made. Your input text is stored only in your browser's LocalStorage for session persistence and is never transmitted externally. You can verify this by monitoring the Network tab in DevTools while using the tool.