← Back to Character Atlas
Unicode Lab

Why Does Zalgo Text Grow Up and Down?

Zalgo text is ordinary base text overloaded with combining marks. Learn how diacritics attach, why normalization does not simply erase them, and where the effect breaks.

Character microscope

Edit the specimen to see the code points that make up what appears on screen.

Each visible letter is followed by several combining marks. Marks have no normal advance width, so many can occupy the same horizontal position.

24 code points5 visible units
  1. U+005A
  2. U+0334
  3. U+0321
  4. U+031B
  5. U+032B
  6. U+0339
  7. U+033F
  8. U+0061
  9. U+0335
  10. U+0321
  11. U+0333
  12. U+030B
  13. U+006C
  14. U+0334
  15. U+0319
  16. U+0313
  17. U+0067
  18. U+0336
  19. U+0324
  20. U+0308
  21. U+006F
  22. U+0337
  23. U+031C
  24. U+033D

Zalgo text looks as if a font has escaped its line box:

Z̴̡̛̫̹̿a̵̡̳̋l̴̙̓g̶̤̈o̷̜̽

It is not an image and usually not a corrupt font. The effect comes from placing many combining marks after ordinary base characters.

What a combining mark does

Writing systems need accents, vowel signs, tone marks, cantillation marks, and other signs that relate to a neighboring character. Unicode encodes many of them as nonspacing combining marks.

Take . It can be represented as:

  • the single precomposed character U+00E9 LATIN SMALL LETTER E WITH ACUTE; or
  • U+0065 LATIN SMALL LETTER E followed by U+0301 COMBINING ACUTE ACCENT.

The second code point modifies the first. A rendering engine positions the accent above the base without advancing the cursor by a normal character width.

Zalgo generators exploit that mechanism by adding far more marks than normal spelling requires—above, below, and through every letter.

Why marks can stack so dramatically

Combining characters carry a canonical combining class that helps determine their ordering around a base. Fonts provide anchors and positioning data for common combinations. When a sequence is unusual or extremely long, the renderer improvises.

One font may stack marks neatly. Another may let them collide, overlap nearby lines, or extend outside a button. The text itself is still a valid sequence, but its layout was not designed for dozens of accents on one letter.

This is also why the effect varies between browsers and operating systems. Unicode identifies the characters and their properties; fonts determine the exact drawings and attachment points.

Normalization does not mean “remove accents”

Unicode normalization makes equivalent text sequences easier to compare. NFC may compose a base and accent into a precomposed character where one exists. NFD decomposes many precomposed characters into base-plus-mark sequences. Both also put combining marks into canonical order.

Neither process is a general Zalgo cleaner. Most extreme combinations have no precomposed equivalent, and the marks remain meaningful encoded characters after normalization.

A product that wants a “plain text” option must make a separate editorial choice: which marks are language, which are decoration, and which should be removed? Blindly deleting every mark can damage Vietnamese, Arabic, Hebrew, Indic scripts, and many other languages.

One visual letter can contain many code points

Unicode text segmentation normally keeps a base and its following combining marks in one extended grapheme cluster. That lets a cursor move across as a unit even when two code points encode it.

Zalgo pushes the same rule to an extreme. A single apparent letter may contain ten, twenty, or more code points. This causes surprises in:

  • database length limits;
  • SMS and notification truncation;
  • cursor movement and selection;
  • line height and clipping;
  • search and moderation systems;
  • screen-reader output.

Counting what the user sees is not the same as counting what the computer stores.

Decorative effect, legitimate infrastructure

Combining marks are not “bad characters.” They are essential to digital writing. The glitch effect works precisely because Unicode and modern shaping systems support complex scripts instead of assuming that every visible unit is one English letter.

The risk comes from context and quantity. Large stacks can make interfaces unreadable, create enormous line boxes, or hide differences that automated systems still process. Research on imperceptible Unicode perturbations has shown that invisible characters, combining behavior, homoglyphs, and reordering can also confuse language-processing systems.

Use it without breaking the page

For decorative posts:

  • keep the effect to a short title or one word;
  • use a low or medium intensity;
  • preview it in the destination app;
  • provide a plain-text version when the words matter;
  • avoid account handles, links, email addresses, and safety information.

For product interfaces, limit input length by both code points and grapheme clusters, constrain overflow, and test unusually long combining sequences. Do not treat “looks short” as “is cheap to store and render.”

Zalgo text is typography by accumulation: the base letters stay ordinary while real Unicode marks pile into an extraordinary shape.

The glitch text generator lets you control how many marks are added. Start gently, then inspect the result above before using the strongest setting.

Sources and further reading

  1. Standard
  2. Standard
  3. Standard
  4. Research paper
    Bad Characters: Imperceptible NLP Attacks

    Nicholas Boucher, Ilia Shumailov, Ross Anderson, and Nicolas Papernot 2022 IEEE Symposium on Security and Privacy 2022 DOI 10.1109/SP46214.2022.9833641

Comments

Loading comments…