Cursivetool
All posts

How Zalgo and Glitch Text Works — Unicode Combining Characters Explained

By Sam··Updated 2026-05-05·6 min read

Ḧ̷̡̢̧̛̖͔͉̭̥͖̯͎̦͈̟̦͇̖͓̰͉́̉͊̓͌̊̽̉̃̎̇̽͌̿͘͜͝ͅe̸̡̛͓̱̝͙͍̜̪̱̗̘̮̰͙͊̀̈́̓̀̒͊͆̒̂̏͐̕͜͜ͅ ̸̢̡͉̯̬̰͙̱̭̖̲̣̩̮͗̇̄̐̇̅͐̓̒̐͊̄͘͘͜c̵̲͓̯̼̫̍̏͗̃͌͗̀͛̔͐̿̈͘o̵̧̙͍͎͉̗̦͙̞̤͍̓͑͂͑̑̚m̵̠̩̄̍̿͘ȅ̴̱̙̼͖͝s̴̞̣͐̓̀̌̄̅

That is not corrupted text. It is plain Unicode with an extreme concentration of combining diacritical marks stacked onto each base character. Every character with a mark above it, below it, and threaded through the middle is stored as a sequence of normal code points. It copies and pastes like any other text, which is exactly what makes it useful — and occasionally chaotic.

Where "Zalgo" comes from

In 2004, a user on Something Awful forums posted a series of edited cartoon images with corrupted, overflowing text as captions. The character "Zalgo" — never seen, only implied — became associated with the visual language of distorted, reality-breaking typography. The name spread through the early internet as shorthand for any text where combining characters have been stacked to an extreme degree.

By 2008-2009, dedicated "Zalgo text generators" appeared, and the format became a shorthand for horror aesthetics, eldritch references, and general internet chaos energy. The meme had no central origin point — it was more of a convergent aesthetic that multiple communities developed in parallel. But the Zalgo name stuck, which is why heavily-combined Unicode text is still called Zalgo text two decades later.

The original images from 2004 have been largely lost to link rot, but the visual format they established — text that appears to "overflow" its container vertically — is recognizable to anyone who spent time on Tumblr or early Reddit.

The Unicode mechanism

The technical explanation is short: Unicode defines combining characters as modifiers that attach to the preceding base character. The canonical range for combining diacritical marks is U+0300 to U+036F, which covers 112 different marks. Above-base marks (U+0300-U+033F) stack upward; below-base marks (U+0340-U+036F) stack downward.

When a renderer encounters the character sequence A + U+0300 (combining grave accent), it renders a single composed character: À. This is normal and expected behavior. But there is no limit in the Unicode specification on how many combining characters can follow a single base character. Stack ten above-base marks and you get ten accent-like marks stacked above the letter. Stack fifty and the text literally extends beyond the line box.

This "line overflow" is the visual effect. The browser, app, or OS renderer is doing exactly what the spec says, just with an unusual quantity of combining characters. Whether the overflow is rendered depends on the platform:

  • Most browsers clip overflow outside the viewport but render within the text container.
  • Discord renders the combining marks with moderate height limits (more on this below).
  • Instagram clips combining marks that extend too far above or below the line.
  • Native iOS text fields may truncate or display incorrectly if the combining count per character is very high.

Light glitch vs. heavy Zalgo

The spectrum matters. Not all glitch text is Zalgo-level.

Light glitch (1-3 combining marks per character): Text that looks slightly corrupted or corrupted-in-a-stylish-way. Still very readable. Used for: Discord usernames and display names, gaming handles, aesthetic posts where the glitch effect is a mood rather than an overwhelming visual.

Example: T̸h̷i̵s̴ ̶i̴s̸ ̵l̶i̵g̸h̷t̴ ̶g̴l̸i̷t̸c̵h̶

Medium glitch (4-10 combining marks per character): Readable with effort. The letters are identifiable but the marks above and below are prominent. Used for: horror aesthetics on Discord servers, SCP or Backrooms themed communities, Halloween content.

Heavy Zalgo (10+ combining marks per character): The base letters are barely visible under the cascading marks. Reading requires significant cognitive effort. Used for: shock value, specific "he comes" meme format, extreme aesthetic statements. This is the version that overflows line boxes.

For practical use, light to medium glitch is nearly always the right call. Heavy Zalgo reads as a meme reference, not as a style choice — which is fine if that is the intent, but limits versatility.

Platform behavior

| Platform | Light glitch | Heavy Zalgo | Notes | |---|---|---|---| | Discord (messages) | ✅ Full render | ⚠️ Capped height | Discord limits vertical overflow to roughly 2-3x line height | | Discord (username/display name) | ✅ Works | ⚠️ Capped | Same height limit applies | | Discord (server/channel name) | ✅ Works | ✅ Renders | Channel names in sidebar show full render | | Instagram (bio) | ✅ Works | ❌ Clips aggressively | Bio field truncates heavy stacking | | Instagram (captions) | ✅ Works | ⚠️ Partial | More tolerance than bio, still clips extreme stacks | | Twitter / X | ✅ Full render | ✅ Renders | X is surprisingly permissive with combining marks | | TikTok (bio) | ✅ Works | ⚠️ Clips | Similar behavior to Instagram bio | | Reddit | ✅ Full render | ✅ Renders | Both old and new Reddit render combining marks fully | | Steam (display name) | ✅ Works | ✅ Works | Steam profile names accept heavy Zalgo |

Steam is notably permissive. Heavy Zalgo display names in Steam are common in certain gaming communities, and the Steam profile page renders them with full vertical overflow.

Practical Discord uses

Horror-themed server names. A server themed around horror fiction, Backrooms, SCP, or similar will often have a name in light-to-medium glitch text. This signals the aesthetic before a new member even reads the channel list.

"Dead" channel markers. Some server owners use heavy glitch on archived channels to make them visually distinct from active ones, without renaming them descriptively. This is visual communication through aesthetic rather than text.

Display names for roleplay servers. In roleplay servers where characters have mysterious, corrupted, or inhuman origins, glitch display names are common. Light glitch is preferred here because the name still needs to be read by other players.

Bot-announced events. Servers that run scheduled horror events or ARGs (alternate reality games) will often have a bot post Zalgo-formatted announcements at event start, then normal text to end. The contrast is the signal.

Instagram limits

Instagram's rendering engine is more aggressive about clipping than Twitter or Reddit. Testing shows:

  • 1-2 combining marks per character: renders fine in bio and captions.
  • 3-5 marks per character: visible in captions, occasionally clipped in bio.
  • 6+ marks per character: clips noticeably in bio, renders partially in captions.

The character limit calculation for Instagram also counts combining characters, so heavy Zalgo eats into your character budget faster than it might appear visually.

For Instagram-safe glitch text, the fancy text generator has a "light glitch" option that stays within the 1-3 combining mark range. This renders cleanly on Instagram without triggering clip behavior, while still producing a distinctly corrupted aesthetic.

Accessibility and readability

Combining characters make text harder to read for everyone, and significantly harder for people who use screen readers. Screen readers handle combining diacritical marks inconsistently — some read each mark aloud, some skip them, some interpret the combination as a different phoneme.

For decorative usernames, server names, or one-off visual effects, this is generally acceptable. For anything that needs to communicate actual information — instructions, announcements, support responses — glitch text is the wrong choice.

A middle-ground approach some communities use: post the glitch-text version for aesthetic purposes, then add a plain-text version below it in the same message.

The fancy text generator handles both light and heavy glitch variants — select Glitch or Zalgo from the Decorations section. Some cursive styles in the cursive generator also interact well with light combining marks, producing a distressed calligraphy effect that reads differently from standard Zalgo. The built-in Glitch option is tuned for the medium-glitch range that works across most platforms.

Related articles

Try the tools mentioned