How glitch text works

It looks like a font. It behaves like a font. It is not a font, and knowing what it actually is explains every strange thing it does.

By The Glitch Text Generator team · Published 2026-09-08 · Last reviewed 2026-09-08

The one-sentence version

Glitch text is your original letters with Unicode combining marks stacked on top of them, and because those marks are real characters rather than styling, the effect travels with the text wherever you paste it.

What a combining mark is

Unicode has a category of characters designed to attach to the character before them. They have zero width of their own and no meaning on their own. Their whole job is to modify a neighbour.

They exist because writing systems need them. French needs an acute accent. Vietnamese stacks two marks on a single vowel routinely. Rather than encoding every possible accented letter as its own character, Unicode lets you compose them: take a base letter, add a mark, get an accented letter.

So the letter e followed by U+0301 renders as an accented e. That is normal, intended, boring behavior.

The part nobody specified

Here is the gap the whole effect lives in. The standard says how a combining mark attaches. It does not say how many you may attach.

One mark is an accent. Three is unusual but real. Thirty is nothing any language needs, and no rule forbids it. Text rendering engines dutifully stack every one of them, which produces towers of diacritics climbing above and below the line.

The same word at three levels of marking, with character counts
Marks per letterResultCharacters
Noneglitch6
A fewg̱̈́̇̿l͉͆ͅi͈̭ͦͭt̯̪͍ͦ̾c̪̯ͧh͉̙̀28
Manyg̴͈͙̣̯̪͍̥̈́̇̿̇́̅͆̽ͤͨ͋ͦͭ͠l̺̋͊̌̍̀̏ͨ̿ͪ̃͜ḭ̧̘͉͚̖̰͖̳̏̐͛ͬ͘ͅt̢͉̩͚͉̟̣̬̣͙̯͂ͨ͋͐ͥ̍̇́ͩͬ̅͐̽͝c͖͙̿̍͞h͓̞̦͈̬̣͖̗͉͊͌ͣͯ̈̽ͦ̔ͭ̀͟105

Same six letters in all three rows. The word glitch is intact underneath every one of them, which is why the third row still costs six letters and 105 characters.

Why that gap explains everything else

Why it survives copy and paste

Because it is data, not presentation. Copying text copies its characters, and the marks are characters. Nothing has to be installed on the other end. Compare that to a font, where copying text carries no styling at all.

Why it eats your bio

Because platforms count characters, not letters. A 150-character Instagram bio does not care that you only typed twelve letters. It counts every mark. This single fact explains most of the complaints people have about glitch text.

Why it renders differently on your friend's phone

Because stacking rules are a font and platform decision, not a Unicode one. The standard says the marks attach. It does not say exactly how far apart to draw them. iOS packs them tightly, Android spreads them, Windows sits between. The data is identical, the picture is not.

Why you sometimes get empty boxes

Because the font in use has no glyph for a specific mark, so the system substitutes a placeholder. It is a display gap on that device only. Someone with better font coverage sees it correctly.

Why some fields reject it outright

Because those fields run an allowlist. A Discord username permits lowercase letters, digits, underscores and periods and nothing else. That is not a filter you can tune your way past. It is a different question from whether a field renders the marks.

Undoing it

The base text is never modified, so nothing is lost. Normalize the string to NFD, then remove every character in the U+0300 to U+036F range, and you have your original back exactly. In practice, pasting into a plain search field often strips them for you.

If you are building this yourself

Three details separate a generator that works from one that produces corrupted output.

  • Iterate by grapheme, not by character. Splitting a JavaScript string with split('') cuts emoji in half, because they occupy two UTF-16 units. Use Intl.Segmenter with grapheme granularity, or at minimum Array.from().
  • Skip whitespace and emoji. A mark on a space renders as a floating accent. A mark after a pictograph breaks rendering on several platforms. Both are the usual cause of output that looks fine in the box and wrong after pasting.
  • Seed your randomness. If marks are picked fresh on every keystroke, the text reshuffles as the user types, which feels broken. Seed the generator so output is stable and give people a separate shuffle button.

Those three rules are why this site's generator behaves the way it does. The full list of marks it draws from is in the symbol reference.

Common questions

What is a combining character?

A Unicode character that has no width of its own and attaches to the character before it. Type the letter a followed by U+0301 and you get an accented a. Glitch text is the same mechanism, just repeated far past its intended use.

Which Unicode blocks do these marks come from?

Two places only. 111 of them come from Combining Diacritical Marks, the block running from U+0300 to U+036F, which is every character in that block except the invisible grapheme joiner at U+034F. The odd one out is U+0489, the Cyrillic millions sign, which encloses a letter rather than sitting over it.

Can I paste a single mark on its own?

You can copy it, but on its own it has nothing to attach to, and most apps will draw it on a dotted circle placeholder or drop it. Marks only make sense following a base character.