Zalgo glitch text generator

Zalgo glitch text generator stacks random Unicode combining diacritics (the same family used by strikethrough) above, through, and below each character to produce the dripping, glitching look you see on horror posts and creepypasta. Pick an Intensity preset (light, medium, heavy) or set your own Min and Max counts via custom mode. Three Above / Middle / Below zone toggles let you cut the marks that go in each direction. Want a clean strike instead? Use strikethrough.

Input
Line 1:1 LF cloud_done Saved locally
Result Zalgo Glitch Text
0 lines 0 chars

Combining-diacritic stacking, with random pools

Unicode combining marks attach to the previous character and are drawn relative to its glyph. There are three rendering zones: above (combining marks like U+0300, U+0301, the accent block at U+030x), middle (overlay marks like U+0334, U+0335, U+0336 used by strikethrough), and below (subscript marks at U+031x and U+032x). Stacking many marks at once produces the chaotic, dripping Zalgo effect.

This tool maintains three pools of combining marks (above, middle, below). For each input character it picks a random count of marks from each zone and appends them after the character. The total number of marks per character is controlled by the Intensity preset: light (1 above, 0 middle, 1 below), medium (3, 1, 3), or heavy (6, 3, 6). Custom mode draws a random integer between Min and Max for each zone independently.

The output is real Unicode characters, no styling, so it pastes anywhere. Heavy intensity can produce strings 20-30x longer than the input in code-unit count and may cause line-spacing issues in fixed-height layouts. Some apps (older Slack, certain mobile Twitter clients) cap how many combining marks they will render; the rest are dropped silently.

How to use zalgo glitch text generator

  1. 1Paste or type your text into the input panel on the left.
  2. 2Pick an Intensity: light, medium, heavy, or custom.
  3. 3For custom mode, set Min and Max counts (each 0-50).
  4. 4Toggle Above, Middle, Below off to skip marks in that zone.
  5. 5Set Mode to Partial for a smaller diacritic pool, or Skip Spaces on to leave whitespace untouched. Click Copy when done.

Keyboard shortcuts

Drive TextResult without touching the mouse.

Shortcut Action
Ctrl FOpen the find & replace panel inside the input Plus
Ctrl ZUndo the last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor Plus
EscClose find & replace, or exit fullscreen
Ctrl KOpen the command palette to jump to any tool Plus
Ctrl SSave current workflow draft Plus
Ctrl PRun a saved workflow Plus

What this tool actually does

Three intensity presets plus custom

Light stacks 1 above, 0 middle, 1 below per character. Medium stacks 3, 1, 3. Heavy stacks 6, 3, 6. Custom uses your Min and Max values to draw a random count per character per zone.

Zone toggles cut by direction

Turn off Above, Middle, or Below to suppress marks in that rendering zone. Useful for producing line-break-friendly variants: above-only zalgo does not push down on the line below, below-only does not encroach on the line above.

Two diacritic pool sizes

The Mode dropdown picks the size of the random pool. Full uses the full Unicode combining-mark catalogue per zone (dozens of marks). Partial uses a smaller hand-picked subset (about 6 marks above, 2 middle, 6 below) for a less chaotic look while still recognisably "zalgo".

Random per character

Counts and mark choices are randomised per character, so two consecutive identical letters render with different mark stacks. The same input run twice produces different output. There is no seed control; output is non-deterministic by design.

Skip Spaces optional

By default, marks are stacked on every input character including spaces, which can produce a connected dripping effect across word boundaries. Turn on Skip Spaces to leave whitespace bare and break the effect at word breaks.

Worked example

Medium intensity, all three zones on, full pool. The exact mark choices and counts vary on each run because the pool draw is random. Heavy intensity adds many more marks above and below, producing a dripping look.

Input
hello world
Output
h̷̢̛͝e̴͒͠l̶͛̕l̸̔͝o̴͐͝ ̷̡̛w̸̽͠o̴̧͝r̶̾͠l̷͊͝d̸̛͝

Settings reference

Setting Effect on output
Intensity = Light About 1 mark above and 1 below per character. Subtle glitch.
Intensity = Medium (default) About 3 above, 1 middle, 3 below per character. Recognisable zalgo without overflow.
Intensity = Heavy About 6 above, 3 middle, 6 below per character. Dripping, line-overflowing effect.
Intensity = Custom Uses Min and Max for the per-zone random count.
Min / Max Integer 0-50. Random count per character is drawn uniformly between Min and Max. Active only in custom mode.
Above / Middle / Below toggles Off = no marks placed in that zone. Use Above-only to keep zalgo from intruding on the line below.
Mode = Full Random pick from the full Unicode combining-mark pool per zone (dozens of marks).
Mode = Partial Random pick from a smaller hand-picked subset for a tighter, less chaotic glitch.
Skip Spaces = on Whitespace passes through bare. Marks attach only to non-whitespace characters.
Output is non-deterministic Each run produces different mark choices and counts. No seed control.

FAQ

Is the output going to wreck the line spacing in my app?
On heavy intensity, yes. Combining marks stack vertically and can extend several line-heights above and below the baseline. Most platforms cap rendering at the line box, so the marks just clip; some (Discord, certain Slack themes) let them overflow into adjacent lines. For posts, medium is usually safe; reserve heavy for one-off effects.
Why does the same input produce different output each time?
The mark pool is sampled randomly per character, and the per-zone count is also random within the intensity preset. There is no seed. To get a consistent look, copy the output once and reuse it instead of re-running.
Will it work in Discord, Twitter, Reddit?
Yes. All three render combining marks faithfully. Discord even allows heavy zalgo in chat without truncating. Some mobile apps and older Android browsers cap rendering at around 8-10 marks per character; the rest still copy correctly but render as bare letters.
Can I make the zalgo go only upward (so it does not push the line below)?
Yes. Turn off the Below and Middle toggles. Marks will only attach above the baseline. The reverse (downward only) works too: turn off Above and Middle.
How do I clean zalgo back to plain text?
Paste the output into remove accents to strip every combining mark. The underlying letters return unchanged.