How cursed zalgo text works
Zalgo text is ordinary text with dozens of combining diacritical marks stacked on each letter. Combining marks are the Unicode characters normally used for accents — the acute accent in é can be stored as e followed by U+0301 — and a font draws each one relative to the letter before it. Unicode places no limit on how many can follow a single letter, so piling on twenty of them makes the marks spill up and down across neighbouring lines, which is the ‘glitched’ look.
The generator draws from three pools of marks, almost all from the Combining Diacritical Marks block (U+0300–U+036F): ones drawn above the letter, ones that overlay or strike through it (strokes, tildes and slashes, plus the Cyrillic millions sign U+0489, which surrounds the letter), and ones that hang below. The Through pool also includes a few hooks and cedillas (U+0321, U+0322, U+0327, U+0328) that attach to the bottom of the letter, which is why a high Through setting also thickens the area underneath. Each slider sets the maximum number from that pool per letter, and the actual number varies a little from letter to letter so it looks organic. The random pattern is seeded, so it doesn’t jitter every time you type — press Re-roll for a new one. Emoji and accented letters are kept whole, and Leave spaces clean stops marks landing on spaces, which makes the result wrap more tidily.
Got some zalgo you want to read? Paste it in and press Clean pasted zalgo. Letters you type normally store their accent inside a single character (é is U+00E9, ệ is U+1EC7), and those are never touched. Marks added after a letter are kept only if there are at most two and each one combines into a real accented letter — that covers decomposed accents and Vietnamese typed as base letter plus marks. Anything more is zalgo and is removed. Text without marks, keycap emoji such as 1️⃣, and scripts whose vowel signs are combining marks (Hindi, Hebrew points) come out unchanged. The cursed symbols row adds crosses, skulls, runes and frames such as ꧁ ꧂ at the cursor.
Where the fancy styles come from
None of the styles are fonts. They are separate Unicode characters that happen to look like styled Latin letters, which is why they survive being pasted into apps that don’t allow formatting.
| Style | Unicode source |
|---|---|
| Bold, italic, script, fraktur, double-struck, sans, monospace | Mathematical Alphanumeric Symbols (U+1D400–U+1D7FF), designed for maths notation. A few letters, such as script ℬ and double-struck ℝ, live in the older Letterlike Symbols block, and the generator uses those so there are no gaps. |
| Bubbles, squares, parenthesised | Enclosed Alphanumerics and their supplement |
| Small caps, superscript, subscript, upside down | Phonetic and other letters that resemble the target shape; not every letter has one, so a few fall back to the normal letter |
| Strikethrough, underline, overline, slashed | A combining mark (U+0336, U+0332, U+0305, U+0338) after every character |
| Wide and vaporwave | Fullwidth Forms (U+FF01–U+FF5E), originally for mixing Latin with Chinese and Japanese text |
Maths letters only exist for A–Z, a–z and sometimes 0–9, so accented letters and punctuation are left as they are. Older phones may show boxes for the rarer blocks.
Platform limits and why zalgo gets cut off
Every mark is a character, so zalgo text is much longer than it looks — ‘Hello there’ at Chaos intensity is over 350 characters. The pills under the preview count the result the way each platform broadly does and turn red when it won’t fit. X weights characters: most count as one, maths letters and many symbols count as two, and an emoji sequence counts as two however many code points it contains, towards 280 for a post and 50 for a display name. The other pills count code points against the published limits: Instagram bio 150 and caption 2,200, TikTok bio 80, Reddit title 300, YouTube title 100 and comment 10,000, Twitch chat 500 and display name 25, Discord message 2,000 (4,000 with Nitro) and Discord nickname or display name 32. Platforms do not document exactly how they count combining marks, so treat a result within a few characters of the limit as borderline. The SMS pill shows how many parts a text message would be split into, because Unicode SMS only holds 70 characters per part.
Rather than fiddling with the sliders, pick a limit from Fit to a limit… and press Fit & copy: the generator scales all three sliders down together until the result fits, keeps the same pattern, and copies it. If even plain text is too long it tells you by how much.
Some services also clean up zalgo deliberately. Many strip or cap combining marks in usernames and display names, some chat apps collapse long runs of marks to stop text spilling over other messages, and moderation filters may treat heavy zalgo as spam. If a result disappears or is truncated, lower the intensity or use one of the plain styles. The character counter gives a full breakdown of any text, and the invisible character tool reveals hidden marks.
Accessibility: use styled text sparingly
Styled Unicode letters look like words to people but not to software. Screen readers either skip them or read each one out as a symbol — a bold ‘Hi’ can be announced as mathematical bold capital H, mathematical bold small i — and zalgo marks are read one by one or make the text impossible to follow. Search engines, in-app search and translation tools also fail to recognise them, so a styled name or bio line can’t be found by people searching for it.
Every card is labelled with its screen-reader impact. Good practice: keep styled text for short decorative flourishes, never put essential information only in styled letters, avoid it in usernames and headings, and add a plain-text version where you can. Fullwidth text is the most readable of the options; maths letters and upside-down text are the least. If you simply want text back to front, the reverse text generator keeps real letters.
Frequently asked questions
What is cursed text?
Cursed text, also called zalgo or glitch text, is normal text overloaded with Unicode combining marks — the characters used for accents. Because Unicode allows unlimited marks on one letter, stacking dozens of them makes the text look corrupted and spill over surrounding lines. It pastes anywhere that accepts Unicode, with no special font needed.
How do I make zalgo text less or more intense?
Use the Mild, Cursed and Chaos presets, or drag the three sliders: Above controls marks stacked over each letter, Through controls marks that strike across it, and Below controls marks hanging underneath. Set Through to zero for text that stays legible, or push Above and Below to the maximum for full chaos. Re-roll changes the random pattern.
Why does my cursed text get cut off on Instagram or X?
Each combining mark counts as a character, so zalgo text uses up limits fast — a short word can be hundreds of characters. The limit pills show whether your text fits on each platform, and Fit & copy lowers the intensity just enough to fit the limit you pick. Some apps also strip or cap combining marks in names and comments, so lower the intensity if the result is trimmed.
Are these fancy fonts safe to use in my username?
They work on many platforms, but think twice. Screen readers read them as maths symbols or skip them, people can’t find you by searching for your name, and some platforms reject or normalise them in usernames. They are best used as decoration in a bio or post rather than as the only way to identify you.
How do I remove zalgo from text?
Paste the text into the box and press Clean pasted zalgo. Letters that store their accent in one character, such as é, ü, ñ and Vietnamese ệ, are never touched. Marks stacked after a letter are removed, except up to two that combine into a real accented letter, so decomposed accents survive. Text without marks, keycap emoji and styled maths letters are left as they are.
Why do some styles show boxes or plain letters?
Styles are built from Unicode characters, and your device needs a font containing them. Older phones and some Windows fonts lack the enclosed and mathematical blocks, so you see boxes. Plain letters appear where Unicode has no styled equivalent — there is no small-caps X or subscript B, for example — and for accented letters and punctuation.
How long can cursed text be in a Discord name?
Discord nicknames and display names are limited to 32 characters, and each zalgo mark counts as one, so only a few marks per letter fit on a short name. Choose Discord nickname under Fit to a limit and press Fit & copy to get the strongest version that fits. Discord may still trim or reject names with heavy marks.