How does a zalgo text generator work?
A zalgo text generator builds its effect by appending Unicode combining diacritical marks (U+0300–U+036F) to ordinary characters. These marks do not occupy their own horizontal space — instead they stack above, through, or below the base glyph. The result is the familiar "glitchy," corrupted, or "cursed" look, while the underlying characters stay intact and machine-readable. In short, zalgo text is visual noise layered on top of perfectly normal characters.
The combining marks split into three groups: above (U+0300–U+0314, U+031A–U+0327, U+032E–U+0337, U+033F–U+034F, U+0350–U+036F), middle (U+0334–U+0338, U+033C, U+0342, U+0345), and below (U+0316–U+0319, U+0328–U+032D, U+0339–U+033B, U+033D–U+033E, U+0346–U+034F). This generator randomly picks marks from whichever directions you enable and layers a number of them per character based on the intensity you choose — Mild, Medium, or Cursed. The base letters, numbers, and spaces never change, which is why a screen reader, search engine, or SMS parser still sees the original message underneath the decoration.
That machine-readable core is the key takeaway: zalgo changes how text looks, not what it says. The decoration is invisible to most automated systems, but it is very visible to the SMS billing and encoding logic, which is where the real cost shows up.
Where does cursed text render correctly — and where does it break?
Most modern social platforms (X/Twitter, Facebook, Reddit) render combining marks faithfully, so your cursed text appears as intended. Some messaging apps, email clients, and older handsets strip or ignore combining marks and show only the base characters. SMS carriers treat every combining mark as a separate UCS-2 unit, which forces the whole message into 16-bit encoding at 70 characters per segment instead of 160.
Because each mark is billed as its own unit, the cost adds up fast: one base character with ten combining marks uses eleven units. The segment counter above shows the real impact live. Before you send anything, run it through the SMS character counter to estimate cost, or the SMS text transformer to strip combining marks from copy. You can also review our SMS Unicode encoding deep dive for the full GSM-7 vs UCS-2 breakdown.
As a rule of thumb, the same sentence that fits in a single 160-character GSM-7 segment can balloon into five or six paid UCS-2 segments once heavy zalgo decoration is applied — turning a fraction-of-a-cent message into one that costs many times more to deliver.
How many SMS segments does zalgo text use per character?
With GSM-7 encoding a standard SMS carries 160 characters per segment; with UCS-2 (the mode zalgo forces) that drops to 70 characters per segment. Every combining mark you stack counts as its own character toward that 70, so a single decorated letter can consume anywhere from two to a dozen units depending on intensity.
- Mild intensity — roughly 1–2 marks per character; a 70-unit segment holds far less readable text than it looks like.
- Medium intensity — roughly 2–3 marks per character above and below; cost climbs quickly on longer copy.
- Cursed intensity — up to 4+ marks per direction; a short phrase can span several paid segments.
The live counters next to the tool update in real time, so you can watch exactly how many SMS segments your decorated string would consume before you ever paste it into a campaign.
Does zalgo text hurt SMS deliverability and accessibility?
Screen readers and text-to-speech engines may skip combining marks, read them as separate characters, or produce garbled audio. For anyone relying on assistive technology, cursed text is confusing or inaccessible, and it can also trigger carrier filtering on promotional routes. Use it sparingly, only in visual contexts where the effect is deliberate, and never in transactional messages like one-time passwords or alerts.
If you need to clean text before sending, the invisible character detector finds and removes combining marks. You can also paste into a plain-text editor or run a regex that strips every character in the U+0300–U+036F range.
What is the difference between GSM-7 and UCS-2 for SMS?
GSM-7 is the compact 7-bit alphabet used for most Latin-script messages; it packs 160 characters into one segment and is the cheapest way to send SMS. UCS-2 is the 16-bit encoding used whenever a message contains a character outside the GSM-7 set — including emoji and Unicode combining marks like those used for zalgo. UCS-2 fits only 70 characters per segment, so the same message costs more than twice as many segments to deliver.
This is why a zalgo string is expensive to send: the combining marks pull the entire message out of GSM-7 and into UCS-2. Our SMS segment math explained guide walks through the exact thresholds, and GSM-7 vs UCS-2 helps you pick the right encoding for your copy.
Frequently asked questions
What is zalgo text?
Does zalgo text work in SMS?
Can zalgo text crash apps?
How do I remove zalgo corruption from text?
Is zalgo text safe for professional use?
Related guides & tools
- SMS Unicode encoding deep dive
- SMS segment math explained
- GSM-7 vs UCS-2: which encoding for my copy?
- SMS character counter
- SMS text transformer
- Invisible character detector
Need to send real SMS without zalgo corruption? Start sending with smsroute — direct carrier routes, transparent pricing, and delivery in minutes.