Advertisement
Advertisement
TEXT TOOLS

Glitch Text Generator — zalgo output from Unicode combining marks

Stack real Unicode combining marks onto your text to produce adjustable glitch output, with separate controls for the marks above, through and below each character.

Up to 500 characters. Existing combining marks in the input are counted separately, so pasting already-glitched text and adding more works as expected.
Each figure is the maximum number of marks that may land on one character; the actual count varies per character. The seed makes that variation repeatable, so the same seed always gives the same output.
Marks on spaces stack in the gaps between words, which reads as heavier corruption but makes the text harder to select and copy cleanly.
Glitched output
 
 
0
Characters in
0
Characters out
0
Combining marks added
0
Size multiplier
Tip: glitch text is not a font or an effect. Every mark is a real Unicode character stored in the string, which is why the output is many times longer than what you typed and why it survives copying between apps.
Advertisement

The glitch text generator above builds the effect usually called zalgo by attaching Unicode combining marks to each character of your text. Combining marks are the characters that put an accent on a letter, and because a base character can carry an unlimited number of them, stacking dozens produces the familiar corrupted look that bleeds above and below the line.

Arb Digital builds free tools that explain the mechanism rather than hiding it. Nothing here is an image, a font or a filter: the output is ordinary text made of real code points, which is why it can be pasted into almost anything, and also why it behaves oddly in search, in databases and for anyone using a screen reader. Both of those consequences follow from the same fact, and both are worth understanding before you use it anywhere that matters.

What This Glitch Text Generator Does

Unicode divides marks into three rough classes by where they render: above the base character, through or around it, and below it. This tool keeps them separate so you can control the shape of the effect, tall and spiky, dense and struck through, or dripping downward, rather than turning one blunt intensity dial.

The generator is deterministic. A pseudo-random sequence chooses how many marks each character gets and which ones, but it is driven by the seed you enter, so the same text with the same settings always produces byte-identical output. That matters if you want to reproduce a result later, or generate the same string on two machines.

Three distributions are available. Random up to the maximum gives the natural uneven look. Exactly the maximum applies the same count everywhere, which is more uniform and much heavier. Building up gradually starts clean and increases across the string, which is useful when you want a phrase to appear to decay as it is read.

How to Use It

  1. Type or paste your text. Up to 500 characters. Emoji and non-Latin scripts work, though marks may render less predictably on complex scripts.
  2. Set the three intensities. Above, through and below are independent, and setting one to zero removes that direction entirely.
  3. Choose a distribution. Random looks organic, fixed looks mechanical, and the gradual ramp is the one that reads as deterioration.
  4. Change the seed to reroll. Every seed gives a different arrangement of the same intensity, and the same seed always gives the same result.
  5. Copy the output. The copy button puts the plain string on your clipboard, marks included, ready to paste anywhere that accepts text.

How the Effect Actually Works

A combining mark is a character with no width of its own that renders on top of the character before it. In Unicode terms it has a general category of Mn, non-spacing mark, and the main block is Combining Diacritical Marks at U+0300 to U+036F, with more in the ranges that follow. Ordinary accented text uses one: an e followed by U+0301 renders as é.

Nothing in the standard limits how many marks may follow a base character, so a rendering engine asked to stack thirty of them will do its best and produce a tower that overflows the line box. That overflow is the entire effect. There is no glitch character, no corruption, and no special encoding involved, just ordinary text being asked to do something ordinary text is technically allowed to do.

The counting consequence is immediate. A ten-character phrase with fourteen marks per character is a 150-character string, which is why the size multiplier is shown in the results. Anywhere with a character limit, a database column width or a per-character cost, glitch text is expensive out of all proportion to what it looks like.

Advertisement

Why Normalisation Does Not Clean It Up

A reasonable first instinct is to strip glitch text by normalising it, but that mostly does not work, and the reason is instructive. Unicode Standard Annex #15, Unicode Normalization Forms, defines the four normalisation forms and what they do: decompose sequences, reorder combining marks into a canonical order, and recompose where a single precomposed character exists.

Normalising to NFC will happily turn a letter plus one acute accent into the single precomposed character, but there is no precomposed character for a letter carrying twenty different marks, so the sequence survives composition essentially intact. What normalisation does change is the order of the marks, since it sorts them by combining class, which can subtly alter the rendered appearance without reducing the length at all.

Actually removing the effect means deleting characters in the mark categories, which is what the strip button on this page does. That is a filtering decision rather than a normalisation, and it is destructive: text written with decomposed accents loses them, so a decomposed é becomes a plain e while a precomposed one survives. Any real input filter has to decide how many marks per base character are acceptable rather than banning marks outright.

Where Not To Use It

Screen readers are the first consideration. A screen reader reading a heavily marked string may announce every mark by name, producing an unusable stream of speech, or skip the content entirely. Glitch text in a heading, a link, a button label or anything else that carries meaning makes that content inaccessible, and there is no visual styling reason that justifies it.

The second is security. Unicode Technical Standard #39, Unicode Security Mechanisms, sets out the identifier profiles and restriction levels that exist precisely because unusual characters in identifiers enable spoofing, and stacked marks are a well-known way to slip past naive filters or to break display in a target system. Using glitch text in usernames, domains or anything treated as an identifier is likely to be rejected, and where it is not rejected it is usually being abused.

The third is practical. Search will not match it, since a query for a word will not match that word interrupted by dozens of marks. Sorting, truncation and any per-character limit all behave strangely. Some rendering engines clamp the stack height and some do not, so the same string looks dramatic on one platform and tame on another. Treat it as decorative output for a caption, a title card or a piece of art, and keep it out of anything that has to be read, searched or trusted.

How This Page Sits Beside the Other Text Generators

The boundary in one sentence: this page adds combining marks to your existing characters, while the fancy text generator swaps each letter for a different Unicode character that looks like a styled version of it. The two are entirely different mechanisms with entirely different consequences for length and searchability.

The upside down text generator and the reverse text generator also substitute or reorder characters rather than stacking marks. To see exactly what a glitched string contains, paste it into the Unicode character converter, which lists every code point one by one. The character counter shows how quickly the length grows, and the HTML encoder and decoder is useful if the output has to survive a template.

Need a website that loads fast and actually works?

Arb Digital builds free tools like this one because useful pages earn attention. If you want tools, calculators or content built for your own audience, we can help.

See Our Web Design Work Talk to Arb Digital

Common Mistakes to Avoid

  • Using it in anything that must be read — headings, links and button labels become unusable for screen reader users, and no styling need justifies that.
  • Expecting normalisation to clean it — NFC reorders and recomposes but cannot collapse a stack for which no precomposed character exists.
  • Forgetting the length — output is routinely ten to fifteen times longer than the input, which quietly breaks character limits and column widths.
  • Putting it in identifiers — usernames, handles and domains have restriction profiles for good reasons, and stacked marks are exactly what those profiles exclude.
  • Assuming it renders the same everywhere — some engines clamp the stack and some do not, so check the platform you are actually publishing on.

Related Free Tools From Arb Digital

For styled letters rather than stacked marks, use the fancy text generator, the upside down text generator or the reverse text generator. Inspect what a string really contains with the Unicode character converter, measure it with the character counter, escape it safely with the HTML encoder and decoder, and browse the full free online tools hub for everything else.

Frequently Asked Questions

What is zalgo text made of?

Ordinary Unicode combining marks, mostly from the Combining Diacritical Marks block at U+0300 to U+036F. Each one is a zero-width character that renders on top of the character before it, and stacking many of them produces the overflow that reads as corruption.

Is it a font or an image?

Neither. It is plain text made of real code points, which is why it can be copied and pasted between applications and why it keeps working when the styling changes. Nothing about the effect depends on a particular font being installed.

Why is the output so much longer than my input?

Because every mark is a separate character in the string. Ten characters with fourteen marks each is a 150-character string, so anywhere with a length limit or a per-character cost will see the true size rather than the short phrase it appears to be.

Can Unicode normalisation remove it?

Not really. NFC recomposes a base character with a mark only where a single precomposed character exists, and none exists for a letter carrying twenty marks. Normalisation will reorder the marks into canonical order, which can change the appearance without shortening the string.

How do I strip glitch text properly?

By deleting characters in the non-spacing mark categories, which is what the strip button here does. Be aware that this is destructive to legitimately accented text, so a real input filter should limit marks per base character rather than removing them all.

Why does the same setting give a different result each time I change the seed?

Because the seed drives the pseudo-random choice of how many marks each character receives and which ones. Keeping the seed fixed makes the output reproducible; changing it rerolls the arrangement at the same intensity.

Is it safe to use in a username or handle?

Usually not, and most services will reject it. Unicode Technical Standard #39 defines identifier profiles that exclude exactly this kind of sequence, because unusual marks in identifiers enable spoofing and break display in other systems.

Why does it look different on another device?

Rendering engines differ in how they handle very tall mark stacks. Some clamp the height or clip at the line box, others let the marks overflow freely, so the same string can look dramatic in one application and restrained in another.

Advertisement
Advertisement

Take it further