User Rating 0.0
Total Usage 0 times
0 / 5000
SubtleMildModerateHeavyChaos
Presets:
Is this tool helpful?

Your feedback helps us improve.

About

Cursed text (commonly called Zalgo text) exploits a feature of the Unicode standard: combining diacritical marks. These are code points in the ranges U+0300 - U+036F (above), U+0316 - U+0333 (below), and U+0334 - U+0338 (middle) that attach to the preceding base character without advancing the cursor. Stacking dozens of these marks on a single glyph forces the renderer to draw overlapping strokes that extend far beyond the character's bounding box. The result appears corrupted or "cursed." This tool applies real Unicode combining characters. The output is not an image. It is valid text that can be pasted into any text field, social media post, or messaging app that supports Unicode. Note: rendering varies by platform. Some systems cap visible combining marks or reorder them. Mobile keyboards may strip excessive marks on paste.

cursed text zalgo text glitch text unicode generator creepy text corrupted text combining characters

Formulas

For each base character c in the input string, the generator appends n randomly selected combining marks. The total count n is determined by the intensity parameter I (range 1 - 100) scaled to a maximum mark budget M.

n = floor(rand() × I × M100) + 1

Where M = 30 (maximum combining marks per character), I is the user-selected intensity (1 - 100), and rand() returns a uniform random value in [0, 1). The marks are drawn from three pools based on user toggles:

Pool = Abovemarks Middlemarks Belowmarks

Each mark mi is selected uniformly from Pool via index floor(rand() × |Pool|). If all three position toggles are disabled, the generator returns the original text unmodified. Characters that are themselves combining marks (category Mn in Unicode General Category) are passed through without additional marks to prevent unbounded stacking.

Reference Data

Unicode BlockRangePositionCountExample MarksVisual Effect
Combining DiacriticalsU+0300 - U+0315Above22̀ ́ ̂ ̃ ̄Accents, tildes, overlines stacking upward
Combining DiacriticalsU+0316 - U+0333Below30̖ ̗ ̘ ̙ ̚Hooks, cedillas, underlines extending downward
Combining DiacriticalsU+0334 - U+0338Middle (Overlay)5̴ ̵ ̶ ̷ ̸Strikethrough, slash, crosshatch through glyph
Combining DiacriticalsU+0339 - U+033FBelow / Above7̹ ̺ ̻ ̼ ̽Bridges, inverted bridges, x-marks
Combining DiacriticalsU+0340 - U+034EAbove15̀ ́ ͂ ̓ ̈́Double accents, chandrabindu, tone marks
Combining DiacriticalsU+034F - U+0362Mixed20͏ ͐ ͑ ͒ ͓Arrows, asterisks, fermata, zigzag
Combining Half MarksU+FE20 - U+FE2FAbove / Below16︠ ︡ ︢Ligature half marks, tilde halves
Cyrillic CombiningU+0483 - U+0489Above7҃ ҄ ҅ ҆Titlo, palatalization, pokrytie
Hebrew CombiningU+0591 - U+05BDMixed45Various cantillation marksTrope marks, dagesh, additional layering
Arabic CombiningU+0610 - U+061AAbove11Various sign marksSmall letter overlays, Quranic marks
Thai CombiningU+0E31 - U+0E3AAbove / Below10Sara, Mai, NikhahitVowel marks, tone marks
Devanagari CombiningU+0900 - U+0903Above4Chandrabindu, Anusvara, VisargaNasal marks, aspiration dots

Frequently Asked Questions

Each operating system and browser uses a different text shaping engine (HarfBuzz, CoreText, DirectWrite). These engines apply different limits on how many combining marks are visually rendered per base character. Apple's CoreText on iOS/macOS tends to collapse excessive marks, while Chrome on Linux with HarfBuzz may render all of them. Some platforms also reorder marks according to Unicode Canonical Ordering (UTS #10), which can change vertical positioning. The text data itself remains intact - only the visual output varies.
In extreme cases (intensity near 100 with all three positions enabled on long strings), some older mobile browsers or lightweight text editors may experience rendering slowdowns. Each combining mark requires the text engine to compute glyph positioning. A single character with 30+ combining marks becomes a complex glyph cluster. Modern browsers handle this gracefully, but embedded WebViews in older Android apps have been known to lag. Keep intensity below 50 for text destined for mobile chat apps.
Most major platforms (Twitter/X, Facebook, Instagram bios, Discord, Reddit) preserve combining characters because they are valid Unicode. However, some platforms apply text normalization (NFC or NFKC) on submission, which can merge certain combining sequences into precomposed characters (e.g., e + U+0301 becomes é). Zalgo-style stacking with many marks is generally not affected by NFC because no precomposed equivalents exist for triple-stacked diacritics. Telegram preserves all marks. TikTok bios may truncate long combining sequences.
Above marks (U+0300 - U+0315, U+0340 - U+034E) render as accents, tildes, and overlines stacking upward from the base character. Below marks (U+0316 - U+0333) render as cedillas, hooks, and underlines extending downward. Middle marks (U+0334 - U+0338) overlay the character itself with strikethroughs, slashes, and crosshatches. Enabling all three creates the classic 'Zalgo' look where text appears to melt in all directions. Using only Middle produces a subtle glitch-strikethrough effect suitable for less aggressive styling.
Yes. Each combining diacritical mark in the BMP (Basic Multilingual Plane) occupies 2 bytes in UTF-16 or 2-3 bytes in UTF-8. At maximum intensity with 30 marks per character, a single ASCII letter (1 byte in UTF-8) expands to approximately 61-91 bytes. A 100-character input could produce 6-9 KB of output. This matters for platforms with character or byte limits. Twitter counts combining marks toward the 280-character limit. SMS (GSM 03.38) does not support combining marks at all - they will be stripped or cause encoding errors.
Screen readers (NVDA, JAWS, VoiceOver) attempt to announce each combining mark by name. A single cursed character might trigger announcements like "a, combining grave accent, combining acute accent, combining tilde, combining macron" and so on for every mark. This makes cursed text effectively inaccessible and extremely disruptive for screen reader users. Avoid using cursed text in contexts where accessibility is required (navigation, alt text, form labels). Use it only for decorative or entertainment purposes in contexts where alternative plain text is also available.