🍱 Lunchbox Hands

Zalgo / Glitch Text

Generate glitchy, cursed Zalgo text with adjustable intensity

Turn plain text into glitchy, cursed Zalgo text by stacking Unicode combining marks. Pick an intensity and copy the result — nothing is uploaded and everything runs in your browser.

ḣ̪̺̪͐̀e̶̅͝l̵̃́̀l̋̂̆́͂͏o ẃő̺͗̈́̐r̟l̶̢̝̪̯̬̈́d̬̹̳̖͌̃̿̑̌ͅ

What is actually in the output

Unicode has a class of characters called combining marks. They have no shape of their own; a renderer draws them on top of, through, or underneath the character before them. That is how many accents can be stored: e followed by U+0301 COMBINING ACUTE ACCENT displays as é. Nothing in Unicode limits how many marks can follow one letter, and Zalgo text exploits that by attaching far more than any language would.

This generator draws every mark from the Combining Diacritical Marks block (U+0300 to U+036F), split into three hand-picked groups:

  • Above (30 marks): acute, grave, tilde, circumflex, caron, macron, dots and similar, such as U+0301 and U+0303.
  • Middle (20 marks): overlays that strike through the letter like U+0336 long stroke and U+0338 long solidus, hooks and a cedilla and ogonek that attach to the letter, and a few double marks that stretch toward the next letter.
  • Below (30 marks): dots, rings, lines, bridges and tildes underneath, such as U+0316 and U+0331.

For each non-space character, the tool picks a random number of marks from each group, up to a cap set by the intensity, and appends them in the order above, middle, below. Spaces, tabs and line breaks are left alone, so word breaks stay where they were.

How the intensity levels differ

SettingAboveMiddleBelowMax marks per letterAverage
Low0–20–10–252.5
Medium0–50–20–5126
High0–90–30–92110.5

Each range is picked independently and evenly, which is why some letters stay almost clean while their neighbours are buried. The minimum is always zero, so even on High a letter can come out with no marks at all.

A worked example

Because the output is random, your result will differ, but its structure will not. In one Medium run, the word hi came out as 15 code points:

  • h + four below marks (U+032A, U+032C, U+031E, U+0317), with no above or middle marks drawn.
  • i + four above marks (U+0303, U+0312, U+0307, U+0343), two middle marks (U+0315, U+031B) and three below marks (U+0331, U+0316, U+0326).

The same random sequence applied to hi there gave 28 code points on Low, 57 on Medium and 93 on High. That growth is the main practical problem with Zalgo: it multiplies the length of your text while looking only a little longer. Paste a result into the Word / Character Counter or the Unicode Inspector to see every mark listed separately.

What it does not do

  • It does not use fonts or images. The output is plain Unicode text, and how it looks depends on the app and font that displays it. Some apps clip marks that rise above the line.
  • It does not let you choose specific marks or a fixed seed. Copy a version you like before changing the text, intensity or pressing Re-roll.
  • It cannot remove Zalgo from text you paste in. Glitched input just gets more marks added.
  • It does not upload anything. Generation is done by JavaScript in this page and works offline once loaded.

For a closer look at how combining marks, look-alike letters and screen readers interact, read Fancy fonts aren't fonts. For other text effects without the noise, see the Fancy Text Generator or Upside-Down Text.

Frequently asked questions

What is Zalgo text?

Zalgo text is ordinary text with a pile of Unicode combining marks attached to each letter, so accents and strokes spill above and below the line. The name comes from Zalgo, an internet horror meme that started around 2004 with edited comic strips; this glitched style of text became associated with it later. Technically it is still plain text, which is why it can be copied and pasted anywhere.

Why does Zalgo text use up my character limit so fast?

Every mark is its own character. On the High setting each letter can get up to 21 marks, and about 10 on average, so a short sentence can turn into several hundred characters. In one run, "hi there" (8 characters) became 93 code points on High. Sites that count characters see all of them, even though you only see a few letters.

Why does it look different every time?

The number of marks and which marks are used are chosen randomly for each letter. Changing the text, switching intensity, or pressing Re-roll generates a new random version. If you like one, copy it before you change anything.

Why does my Zalgo text get cut off or cleaned up after I paste it?

Many apps limit how far text can draw outside its line, so tall stacks are clipped. Some platforms also strip runs of combining marks, or normalize text so a few marks are merged or reordered. Moderation tools on chat servers often remove Zalgo text outright because it can cover nearby messages. Low intensity survives these filters better than High.

How do I remove Zalgo from text?

Delete the combining marks. In most programming languages that means normalizing to NFD and removing characters in the Mark category, for example with a regular expression like /\p{M}/gu in JavaScript. Be aware this also strips legitimate accents (é becomes e), so it is only safe on text you know should be plain ASCII.

Is Zalgo text bad for accessibility?

Yes. Screen readers may announce each combining mark by name, or skip them in ways that make the word hard to follow, and the overlapping marks are hard to read visually. Use it for a joke or a title, not for anything someone needs to read.

Get weekly dev tools and tips