Zalgo text generator — cursed & glitch text
Type or paste text below and it comes back stacked with Unicode combining marks — the same trick behind “cursed” or “glitch” text you have seen in usernames, memes and horror-themed posts. Control how heavy it gets and which mark groups are used, then copy the result.
How it works
Every character you type is a real letter or symbol. What makes the result look “cursed” is a run of extra combining marks appended right after each one — characters from the Unicode Combining Diacritical Marks block, U+0300 through U+036F. A font renders a combining mark attached to whichever character came immediately before it, so stacking several in a row piles them up on the same base letter instead of spreading them across the word.
This tool draws from three pools of marks, corresponding to roughly where each one renders relative to the base letter:
Above
Accents, rings, carons and small superscript letters that sit over the top of the glyph — the tallest, most visible part of the effect.
Through
Strikes and overlays that cut across the letter itself, including the double-stroke and long-solidus marks.
Below
Hooks, dots, cedillas and under-lines that hang beneath the baseline.
All three toggle independently, and the intensity control sets how many marks are drawn from each enabled pool, per letter, at random — that randomness is deliberate: real Zalgo text looks uneven letter to letter, not like a uniform decorative font. Spaces and line breaks are always skipped as attachment points, since a mark placed after whitespace has no glyph to visually stack onto.
The category split is an approximation, not a Unicode rule. A few marks genuinely sit on the side rather than cleanly above or below a letter, and different fonts draw the exact same codepoint slightly differently. Treat “above / through / below” as a useful mental model for the three toggles, not a formal classification.
Where it works, and where it breaks
Zalgo text is still plain Unicode text — there is no image, no custom font and no special encoding involved — so it goes anywhere ordinary Unicode text goes. What varies wildly is how much of the stack a given surface is willing to render, store, or even accept in the first place.
| Context | Typical result | Why |
|---|---|---|
| Modern browsers, chat apps, forum posts | Renders, usually at full or near-full intensity | Full Unicode text rendering with unlimited combining-mark stacking is the common case today. |
| Character-limited fields (bios, usernames, SMS) | Gets cut off mid-word | Each mark counts as its own character against the limit, so heavy Zalgo eats a short limit almost instantly. |
| Plain-text-only inputs with strict validation | Rejected outright, or marks are silently stripped | Some forms only accept a basic alphanumeric set and filter or reject anything outside it. |
| Databases and exports (CSV, fixed-width formats) | Stores fine if the column is Unicode-aware; otherwise truncates or corrupts | Older or byte-length-limited text columns were not designed for a word that is 150+ characters long. |
| Filenames | Usually works, but can round-trip differently across operating systems | Some filesystems normalise accented and marked characters differently (composed vs. decomposed form), which can make two filenames that look identical fail to match exactly. |
| Search boxes and site search | Rarely matches the plain word | Search indexes generally are not built to see through a wall of combining marks to the base letters underneath. |
| Screen readers and other assistive tech | Degrades badly at higher intensity | See the accessibility note below — this is the one to take seriously, not just a compatibility curiosity. |
A note on accessibility
Heavy Zalgo text is genuinely hard to use with a screen reader. Combining marks are ordinary characters in the text stream, and depending on the screen reader and its verbosity settings, each one can be announced individually — “combining grave accent, combining acute accent, combining ring above” — stacked dozens of times on a single word. At low intensity this is a minor nuisance; at max intensity on a full sentence it can make the content genuinely unusable for someone listening to it rather than reading it visually.
Use this tool for what it is: a stylistic effect for usernames, memes, one-off decorative headings and similar low-stakes display text. Do not apply it to body copy, instructions, form labels, error messages or anything a visitor actually needs to read to use a page or complete a task.
Worked examples
The same word, “cursed”, at three intensities with all three mark groups on. Exact marks are randomised on every run, so your own output will differ letter for letter even at the same settings — that is expected, not a bug.
Low intensity
c̢ứ͔͢r̶̛͒ṣ̴ͫͩe̵̛ͥ̉d̷̵ͦͅMedium intensity
c̵̛̛͔̮̺͔̳̅͋̌͢ü̸̶̴̶̴̸̟͓̭̘̗̰ͭr̸̵̴̵̛͉̳ͧ͋͛͘̚͝š̸̴̸̶̵̴̜̏́̐̓̚͢e̴̶̡̢̮̼͕ͤ̿̑̆̓͝d̸̵̷̵̛͎͛ͦ̽̈̇͆͢Max intensity
c̸̵̶̸̶̸̸̸̶̴̶̴̛̛͎̟͓̭̘̗̰͓͓̼̩̲̅͋̌́̿̆ͨ̕ͅͅu̴̵̸̸̴̸̧̦̝̜͙͎̫̦̝ͯ̀̅̋̿̇͌ͤ̌̏̚͢͡ͅr̸̵̶̶̸̵̷̵̡̛̛̛̛͍̟̩̥̮͓͙̦̰̤̪̆̎͐͛͂̌̍͛ͩͥ͢ṣ̶̴̵̵̸̴̸̸̶̸̰̯͚͒́̎͌͛̕͢ͅę̴̷̶̸̷̸̷̶̸̛̹͍̘̱̹̣͈̗͚̬̲̲̗̑͊̂̓̀ͮ̂͋̑͒͗͘͡ḑ̶̵̷̴̸̸̶̶̷̶̴̛̜̬͉̺͓̥̼͌̄̈̆̎̐͊̾ͮLoad the built-in example above the tool to try it live, or paste in your own text — the preview updates as you type.
Use cases & limitations
Where this is genuinely useful
- Usernames and profile display names on platforms that allow full Unicode, for a distinctive or horror-themed look.
- One-off decorative text for memes, forum signatures, or a themed heading — sparingly, since it slows reading even for sighted users.
- Reversing cursed text someone sent you — paste it in and use Clean text to read the plain word underneath.
- Demonstrating Unicode combining marks for teaching or curiosity — this is a real, standard part of Unicode being used in an unusual way, not a trick or an exploit.
What this tool will not do
- It will not guarantee the result renders identically everywhere. See the table above — rendering depth is entirely up to whatever displays the text.
- It is not safe for anything that must stay readable to everyone, including assistive technology users — see the accessibility note.
- It cannot bypass a platform's character limit or input filter. If a field rejects the result, that is the field's own validation, not something this tool can work around.
- Clean text is a best-effort reversal for text from other generators, not a guarantee — see the FAQ.
Frequently asked questions
What is Zalgo text, technically?
Ordinary base characters with extra Unicode combining marks stacked onto them — the marks are real characters from the Combining Diacritical Marks block (U+0300 to U+036F), the same block that gives you an accent like é or ü, just used far past the one-or-two-marks-per-letter a real language ever needs. A renderer that draws combining marks correctly will stack dozens of them on a single base letter, which is what produces the tall, dripping, glitched-out look.
Why does Zalgo text look fine in one app and break in another?
Every renderer decides for itself how many stacked combining marks to draw before it gives up, clips them, or lets them overflow into the line above. There is no single correct number in the Unicode standard — it is a rendering choice, so the same string can look dramatically different in a browser, a chat app, a text editor and a terminal. Some platforms also detect unusually long runs of combining marks and truncate them deliberately, since unbounded stacking can visually break a page layout for other readers.
Will this work in usernames, bios and chat messages on social platforms?
Often, but treat it as best-effort, not guaranteed. Plain Unicode text fields generally accept it. Two things commonly get in the way: a character-count limit that counts every combining mark as its own character (so a heavily cursed word can burn through a short limit fast), and input validation on some fields that rejects or silently strips characters outside a basic alphanumeric set. Test in the specific field before relying on it.
Is heavy Zalgo text accessible to screen reader users?
No, and this matters if the text needs to be read by everyone. Screen readers process combining marks as part of the character stream, and some announce a mark's name (“combining grave accent”, and so on) for every single one stacked on a letter — at max intensity that can mean dozens of spoken interjections per word. Keep intensity low, or avoid Zalgo entirely, for anything that has to remain legible to assistive technology, such as body copy, form labels or error messages.
Can I turn cursed text back into normal text?
Yes, for text this tool generated, exactly — paste it into the input and press Clean text, which strips every character in the U+0300 to U+036F range and leaves the base letters. For Zalgo text made elsewhere it works too in the overwhelming majority of cases, since essentially every Zalgo generator draws from that same Unicode block, but it is not a mathematical guarantee for text from a generator that used marks outside that specific range.
Why do only some letters end up heavily marked and others barely?
Every eligible character gets its own random draw from each enabled mark group, so the count varies letter to letter by design — that unevenness is what makes it read as corrupted rather than as a uniform decorative font. Spaces, tabs and line breaks are skipped deliberately: a mark placed after a space has no letter to visually attach to and would only inflate the output without changing how it looks.
Does adding marks change the character count of my text?
Yes, substantially. Every combining mark is its own Unicode character, so a five-letter word at max intensity with all three mark groups on can easily turn into 150+ characters. Any field, database column or API with a character limit will count every mark against that limit, not just the visible letters — check the stats line under the result before pasting into something with a strict cap.
Where does the name “Zalgo” come from?
It traces back to mid-2000s internet horror fiction, where “Zalgo” was used as the name of a vague, world-corrupting entity, and text stacked with combining marks became the visual shorthand for its presence spreading through a page. The character concept and the text effect are separate things by now — the effect itself is just a Unicode trick, widely used today for memes, horror-themed usernames and stylised display text, independent of the original story.
Do you store or upload the text I type?
No. The transform runs entirely in your browser tab — there is no server call, nothing is logged, and what you type is never uploaded anywhere. Reloading or closing the page clears it; nothing is kept between visits.