Zalgo Text Generator: Summon Cursed Text, Then Undo It

Conversion direction

Marks stacked over the letters. These are the ones that bleed up into the line above.
Marks drawn through the glyph itself — slashes, overlays and tildes. Stays inside the line.
Marks hung under the letters. Set this to zero when a site clips descenders.
Only affects the clean-up direction. Thorough is guaranteed to leave no marks behind; keeping accents can leave one stray mark that had merged into a letter.

8 / 500 Runs in your browser — nothing is uploaded

Drag the three sliders to decide how far the corruption reaches above, through and below your text. Switch the direction to paste cursed text in and get clean text back. Everything happens in this page — nothing you type is uploaded.

How the Zalgo Text Generator Works

Zalgo text is not a font and not an image. It is ordinary text with a large number of combining marks attached to each letter.

Unicode keeps accents separate from the letters they sit on. The acute accent in é has its own code point, U+0301, whose only job is to attach itself to whatever character came before it. Type e followed by U+0301 and you get é — one visual unit, two code points. Unicode calls that unit a grapheme cluster.

Crucially, the standard never says how many marks may attach to one base character. You can put two on. You can put sixty on. Renderers keep stacking them outward from the glyph, and once the stack is taller than the line, it spills into the text above and below. That overflow is the entire zalgo effect.

So the generator does something quite boring: it walks your text one character at a time and, for each letter, appends a run of randomly chosen combining marks drawn from three different pools. Whitespace is skipped — marks smeared across a word gap just look like dirt.

Two details that most generators get wrong are handled here. Your text is normalised to NFC before anything is added, so text that already contains accents is treated as letters rather than as letters-plus-loose-marks. And marks that were already in your input are kept and counted against that character's budget, so running the same text through twice thickens it slightly instead of doubling it without limit.

Why Three Sliders Instead of One

Almost every other zalgo tool gives you a single "chaos" or "craziness" control. That is a worse control, because the three directions do genuinely different things and you very often want them at different levels.

SliderUnicode marks it draws fromWhat it does
Madness above51 marks, mostly U+0300–U+0314 and U+0363–U+036FGrows upward and bleeds into the line above. The most visible axis, and the first thing a site will clip.
Madness through15 marks, U+0315–U+0362Slashes, tildes and overlays drawn across the glyph. Stays within the line box, so it survives almost anywhere.
Madness below45 marks, U+0316–U+035AHangs downward. Usually the first axis to get cut off in chat clients with tight line heights.

The practical result: if a site clips descenders, drop below to zero and push above up — you keep the intensity and lose the truncation. If you need something that stays legible, run through alone. If you want the classic wall-of-noise look, max all three.

The Same Settings Always Give the Same Result

This generator is deterministic. Type the same text with the same three slider positions, on any device, on any day, and you get a byte-for-byte identical string.

That sounds like a technicality until you lose something. Generate a username, paste it somewhere, close the tab, and on nearly every other zalgo site the exact string is gone forever — reload and you get a different arrangement of marks. Here you just retype it.

It also means adding a word to the end of your sentence does not reshuffle the marks on the words before it. The randomness is seeded per character position rather than streamed across the string, so the text stops jittering while you type. Most generators re-roll everything on every keystroke, which is why watching them feels like the tool is fighting you.

Cleaning Zalgo Text Back to Normal

Flip the direction toggle and paste cursed text in. Every combining mark is removed and you get the underlying letters back.

This is worth having on its own. Zalgo turns up in usernames, in scraped data, in copied comment threads and in filenames, and once it is in a spreadsheet or a database field it is genuinely annoying to remove by hand.

There is a catch here that most tools get wrong, and it is worth explaining because it decides which of the two clean-up modes you want.

Unicode lets the same visible letter be stored two ways. "á" can be one character, U+00E1, or it can be an "a" followed by the combining acute U+0301 — and normalisation converts between the two. That matters because a lot of the marks a zalgo generator adds have a precomposed form. Stack U+0311 onto an "a" and normalising will fuse them into a single "ȃ", at which point no filter can see a combining mark to remove. Clean a corrupted "naïve" that way and you get "nȃïve" back — still visibly broken.

The deeper issue is that the ambiguity cannot be resolved. Someone who typed "à" and a generator that appended U+0300 to an "a" produce exactly the same string. Nothing in the text records which happened.

So this is a setting rather than a guess. Remove every mark is the default: it decomposes the text first, so nothing can hide inside a merged character, and the output is guaranteed mark-free — at the cost of turning café into cafe. Keep accented letters leaves each base character alone and strips only what is still hanging off it, so café, naïve and Zoë come back intact, with the risk that one merged mark survives. Use the first for cleaning corrupted data, the second for text you know was properly accented to begin with.

Using Cursed Text on Discord, Games and Social Apps

Discord

Zalgo pastes into messages, nicknames and channel names. Two things to watch. Discord counts code points, not visual characters, so a 32-character nickname budget disappears after about two zalgo letters at full intensity — turn the sliders down rather than shortening the name. And many servers run auto-moderation that removes or kicks on heavy combining marks, because the effect can cover other people's messages. Read the rules before you spam a channel with it.

Games and usernames

Support is inconsistent and that is the fun of it. Some games render the full stack, some clip at the line box, some strip the marks on the way in and leave you with plain text. The through slider is the one that survives most often, because it never leaves the glyph's own line box.

Instagram, TikTok and X

Bios and captions generally accept the characters, but each platform normalises differently and some silently drop marks above a certain density. Preview before you post rather than trusting it, and keep a clean copy of the text — which, because this generator is reproducible, you can always regenerate anyway.

Where Zalgo Came From

Zalgo started as a webcomic joke, not a text effect. In 2004 a Something Awful forum user, Dave Kelly, posted edited versions of newspaper strips — Nancy, Archie, The Family Circus — in which the last panel dissolved into an eldritch entity and the phrase "He comes". Zalgo was the name given to that entity, and the running gag was that it corrupted whatever it touched.

The corrupted text came afterwards, when people realised Unicode's combining marks let you make writing look the way those final panels looked. The canonical incantation — "He comes", "Zalgo", "he who waits behind the wall" — got rendered in stacked diacritics and the visual style took on a life well beyond the original comics. It is now more or less the standard shorthand for "something has gone horribly wrong" in internet writing, which is why you still see it in Halloween posts, glitchcore edits, horror ARGs and error-message jokes twenty years later.

Background reading: Zalgo text on Wikipedia and the Unicode Combining Diacritical Marks chart, which is the actual list of characters this page draws from.

What People Use It For

  • Halloween posts, horror edits and creepypasta formatting
  • Glitchcore and cursed-image captions on TikTok and Instagram
  • Discord usernames and server names that look corrupted on purpose
  • Cleaning zalgo out of scraped data, spreadsheets or usernames
  • Testing how your own app handles long grapheme clusters and text overflow
  • Making an error message or a joke commit message look genuinely alarming

Frequently Asked Questions

Is the zalgo text generator free?

Yes, completely free with no account and no limit. It is a few kilobytes of JavaScript that runs on your device, so there is no cost to serve it and nothing to unlock.

Can I remove zalgo text and get normal text back?

Yes. Switch the direction toggle and paste the cursed text in. Choose whether accented words like café keep their accents or are stripped to plain letters — the clean-up section explains why that has to be a choice.

How do I use zalgo text on Discord?

Copy the output and paste it into a message or nickname field. Discord counts code points, so a nickname fits only a couple of letters at full intensity — lower the sliders instead of shortening the text.

Why does my cursed text get cut off?

The app is clipping anything that grows outside the line box. Drop the below slider to zero and raise the above slider, or use the through slider alone, which never leaves the glyph line.

Does zalgo text work on iPhone and Android?

Yes. These are standard Unicode characters, so they copy and paste on both. Rendering of very tall stacks varies by app, and some apps cap how many marks they will draw per character.

What's the difference between zalgo text and glitch text?

They usually mean the same effect. Glitch text, cursed text and corrupted text are all common names for letters carrying stacked combining marks, which is what this generator produces.

Where did Zalgo come from?

From edited newspaper comics posted on the Something Awful forums in 2004, where an entity called Zalgo corrupted the final panel. The text style came later, once people applied the idea to Unicode.

Is it safe to paste text here?

Yes. The conversion runs entirely in your browser using code loaded with the page. Nothing is sent to a server or logged, and the tool keeps working with your connection switched off.

More Text Tools

Last updated 2026-08-07.