Skip to content
Back to all tools
Live

Zalgo Text

Turn a line of text into spiky Zalgo while keeping CJK readable.

Zalgo works by appending a run of Unicode combining marks to every character. The browser stacks them all onto the same glyph, so once there are enough of them they spill into the lines above and below — text that appears to have grown spikes. This page shows four common intensities at once, and a dropdown switches the last row to the heavier Arabic marks, thick spikes, noise or strikethrough. CJK characters automatically use a carrier: the character itself gets nothing, and the spikes hang off a tiny character dropped into the gap, so Chinese and Japanese stay readable. Every row has a character count and a copy button, ready to paste into X.

Runs on
Any browser, nothing to install
How it is built
Astro · TypeScript · Unicode
Last updated

What it does

01

Four common intensities

Subtle, growing up, dripping down and full chaos, all rendered at once — no need to try them one at a time.

02

More styles in a dropdown

Arabic marks, thick spikes, noise and strikethrough. The row updates the instant you switch.

03

Live X character count

Counted the way X does it: CJK characters weigh 2, Latin letters and combining marks weigh 1 each. Anything over 280 turns red.

04

CJK stays legible

Combining marks are positioned against Latin letter heights, so they smear across full-width glyphs. CJK characters switch to a carrier instead: the character is left alone and the spikes hang off a tiny character dropped into the gap.

05

One-click copy

A copy button per row, putting the raw characters straight on your clipboard.

06

Runs locally

Everything is computed in your browser. Whatever you type is never sent to a server.

FAQ

Why do the spikes get cut off on X?

Each post in the timeline has a limited height, and anything beyond it is hidden behind the neighbouring posts. Open the post detail view to see the whole thing, or use a lower intensity.

Why does one short sentence blow past 280 characters?

Every combining mark counts as its own character. At full chaos a single letter can carry thirty of them, so twenty letters is enough to use up the whole budget. Use the subtle or upward presets if you want to write more.

Will every app display it the same way?

No guarantee. Some clients normalise Unicode and merge part of the marks away, and glyph heights differ between systems and fonts. It is worth previewing before you post.

What do screen readers do with it?

They read every mark out loud, one by one, which is exhausting to listen to. Keep it to a decorative touch and out of body text.

Try it now

Any browser, nothing to install

Zalgo Text →