Zalgo Text Generator
Turn any text into zalgo — cursed, glitchy Unicode — by stacking combining marks, with up/mid/down intensity and a reproducible seed, entirely on this device.
Zalgo is stacked Unicode combining marks — some apps and fonts may crop, reorder or drop them when pasted.
Press ? for shortcuts
Do it offline:$ perl -CS -pe 's/(\X)/$1 . join("", map chr(0x300 + int rand 0x37), 1 .. 3 + int rand 6)/ge' file.txt
How to use it
- Paste or type a word or short phrase, or drop a .txt file; the glitched version builds live as you type, on this device.
- Pick which zones stack marks — above, through the middle, or below — and set the intensity from Low to Maximum.
- Press Reroll for a different random variant of the same settings, or leave the seed as it is to keep the one on screen.
- Copy the result, save it as a .txt file, or share a link that rebuilds the exact same glitch for someone else.
Zalgo text piles combining diacritics onto ordinary letters until the words look corrupted, cursed and glitchy. Paste a word and choose whether marks climb above, strike through, or hang below, and how dense they get. A seed keeps every run reproducible, so a share link rebuilds the exact same glitch — all on this device, though the result can look tamer wherever a font or field clips the marks.
Examples
glitchg̜̥̗̬̫̉᷉l̢̜ͩ́ᷝi͙͈͍͕ᷙ̑t̛͇̭̞͇̘ͫ͂ᷥ᷇c̙̩̣̳̗ᷖᷥh᷂͎͆̎᷉᷄Six letters, Medium intensity, marks above and below: the base word stays readable while 41 combining marks stack on. This is the deterministic default — this seed always returns this exact result.
voidv̫̻͚̪̯̻̞̉ͨᷖᷛ̋̿ᷖ᷋ᷔ͒͐ͅõ̡᷎̰͎̪͕̣͎̯͙̘̀᷇ͣᷕᷣi͎̤͙̥̳̮͑d̮̖̜̘͍̠̥̪͖̺͖̬̰ᷣᷣ̎ᷞMaximum shows the amplification: four base letters carry 60 stacked marks, so the copied text is far heavier than what you typed, though those letters are unchanged underneath.
strikes̶t⃓r⃓̴i⃚⃚⃓k̵⃘̵̴e⃓̷Middle only, so every mark is an overlay struck through the glyph, not sitting above or below. With the other zones off, the six letters gain 13 through-marks and nothing rises or drops.
a
b ca̻̖ᷕ
b̺́̉ c̼̅The newline and the tab pass straight through unmarked, so line breaks and indentation survive; only a, b and c take marks. A chip reports the 2 control characters that were skipped.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
Emoji and accents are never split
Marks attach to whole grapheme clusters, so an emoji, a regional-indicator flag, a skin-tone sequence or an already-accented letter stays intact and just gains its stack. A surrogate pair is never split, and the output holds exactly as many clusters as the input.
Spaces glitch, structure does not
An ordinary space is decorated like any letter, but line breaks, tabs, bidirectional controls and zero-width formatting characters pass through untouched, so layout and reading direction survive; a chip counts anything skipped.
The seed decides repeatability
First load and any reopened share link use one fixed seed, so the glitch comes out identical every time. Reroll swaps in a fresh random seed for a new variant; that seed travels in the link but is never saved as a preference, so a plain revisit is not stuck on an old roll.
The output is much larger than the input
Each letter can gather dozens of marks at Maximum, so a few typed characters can become thousands of bytes. Over the 1 MB input cap the tool refuses rather than truncate and points to a terminal one-liner that stacks its own random marks — a rough stand-in, since it has no seed or intensity control.
Some apps clip, normalize or strip the marks
A tall stack can be clipped or cropped by a line box or a font that limits mark height, and a field that applies Unicode NFC or bans combining marks will reorder or drop them on paste. A screen reader announces the base letters, not the decoration, keeping the word underneath legible.
Common errors
Input is larger than the 1 MB limit for this tool. For bigger payloads use the CLI: perl -CS -pe 's/(\X)/$1 . join("", map chr(0x300 + int rand 0x37), 1 .. 3 + int rand 6)/ge' file.txt- A typed refusal, not a trim — the tool glitches all of your text or none of it. Because every character multiplies into many, the cap is on the input you paste, and the named command does the same job over a file from your terminal.
All zones are off, so no marks were added — the output matches the input.- Shown when the above, middle and below zones are all unchecked. With no zone to draw from there is nothing to stack, so your text comes back unchanged instead of the tool reporting an error.
FAQ
What is zalgo text?
Zalgo text is ordinary writing decorated with real Unicode combining marks stacked on ordinary letters, not a font and not a styled alphabet. The base characters stay exactly what you typed; the tool only appends mark characters that the renderer draws on top, so the words still read as themselves underneath.
Why does zalgo text look broken or corrupted?
The look comes from many combining marks landing on one letter at once. Each mark was designed to add a single accent, so piling ten or twenty of them makes the glyphs spill past the line and collide with their neighbours — which the eye reads as corruption.
Why does it look different, or disappear, when I paste it?
Apps and fonts draw stacked marks differently, and some cap how tall a stack may grow or trim it to fit a line. A field that normalizes text or blocks combining marks will reorder or remove them, so one string can look wild in one place and plain in another.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Re-apply the current zones, intensity and seed to your text.
- ⌘/Ctrl + S
- Save the glitched text as a .txt file.
- ⌘/Ctrl + C
- Copy the glitched output when nothing is selected.
- ⌘/Ctrl + Shift + C
- Copy the glitched output even when something is selected.
- t
- Switch to the next colour theme.
- ? or ⌘/Ctrl + /
- Open this keyboard-shortcut help dialog.
- Esc
- Close the open dialog; your input is never cleared.