What the benchmark found
-
2 of 12
tested generators let you shape corruption across a sentence
UltraTextGen (6 progression shapes plus Uniform and Random, which combine with its other settings) and Textavia's Glitch Text Generator (11 fixed shape presets). Textavia's increase, decrease and peak presets followed their intended profile more closely; UltraTextGen's graded Valley fit better than Textavia's hard-edged Edges Only.
-
4 of 12
can remove Zalgo from pasted text
UltraTextGen, Zalgo.io, LingoJam and Zalgo.org. All four kept é and à typed the normal way, and all four stripped accents typed as a letter plus a separate accent mark.
-
2 clicks
from page load to copied output on the fastest tools
Glyphy, FontCraft, Pixelied, Zalgo.io and Textavia's Zalgo page needed 2 interactions. UltraTextGen needed 4: its sample text must be cleared, and on a 1280 × 800 screen the output sits below the fold.
-
5 of 12
broke the 👁 emoji when adding marks
LingoJam, Glyphy, Zalgo.org, PSD-Dude and Zalgo.io split the emoji in two, so the copied text shows a broken character.
Not tested in apps What these results do not show
Every result comes from the generator pages themselves. We did not paste output into Discord, X, Instagram or any other app, so nothing here says what survives on a platform. UltraTextGen publishes this study and is one of the 13 tools. The method was written before testing, and an automated AI reviewer checked the verdicts with tool names replaced by letters; the method document still named UltraTextGen as the subject, so that review was not fully blind. Read the limitations
Who is strongest where
Each row names the tested generator or generators the evidence supports, and nothing is summed into an overall score. These are the results as tested on September 29, 2026; version 1.1 shows what changed after UltraTextGen's update.
| Dimension | Strongest in the tested sample | Basis |
|---|---|---|
| Fastest to a copied result | Glyphy, FontCraft, Pixelied | 2 interactions, a useful result before you type, controls in the first screen on phone and desktop |
| Shape across the text | UltraTextGen and Textavia Glitch Text Generator | Only two with shapes; Textavia fits slopes and peak more closely, UltraTextGen's shapes combine with its other settings and its graded Valley fits better |
| Placement | PSD-Dude; UltraTextGen for middle-only | PSD-Dude alone sets a separate amount above, through and below; UltraTextGen alone has an amount-adjustable middle-only setting that measured 100% overlay marks |
| Mark type and coverage | UltraTextGen | Only tested tool with a mark-family choice and a frequency control separate from the amount |
| Removing Zalgo | UltraTextGen, Zalgo.io, LingoJam, Zalgo.org | All four behaved the same on every accent test |
| Same result every time | Zalgo.io; Coddy, FontCraft, Pixelied | Zalgo.io has a user toggle; the other three always repeat |
| Sharing a setup | UltraTextGen | Only tested tool that saves settings in the URL; the random marks still change |
| Platform utility | UltraTextGen and Zalgo.io | UltraTextGen checks 4 platform limits live; Zalgo.io has a platform-safe intensity cap and output statistics |
| Preset selection | Textavia Glitch Text Generator | 55 ready-made styles, shown as result cards under "Category filters" once you type; at least 5 pairs give the same effect |
| Highest measured classic ceiling that holds | SymbolDB | 105 marks on one letter in Custom mode; Zalgo.org reached 528 but resets on the next keystroke |
| Text integrity | UltraTextGen, Coddy, Textavia Glitch Text Generator | Emoji intact, spaces left clean, no characters added |
| Measured output diversity | No defensible leader | All 12 drew on 94 to 116 different marks |
Where UltraTextGen performed strongly
- UltraTextGen was the only tested generator with a choice of mark family (all, bars, letters, symbols, noise) and a frequency control that sets how many letters get marks, separate from how many marks each gets.
- Of the 10 creative tasks that need no shape control, UltraTextGen directly produced 9, Textavia's Glitch Text Generator 8, and Zalgo.io, Coddy and PSD-Dude 7 each. Counting all 15, it was 14 against 13 for Textavia; the task list includes several effects UltraTextGen names as presets, which favours it.
- UltraTextGen's Mid position is the only amount-adjustable middle-only setting that measured 100% overlay marks. The other adjustable middle modes measured 0% to 90%, because their "middle" lists also hold marks that sit above or below. It mixes five overlay marks, so it does not draw one clean strike line.
- UltraTextGen was the only tested generator that saves text and settings in the page URL and the only one that checks the output against platform limits (Discord message, Discord nickname, X post and Instagram bio) as you type.
Where other generators performed strongly
- Textavia's Glitch Text Generator tracked its intended increase, decrease and peak profiles more closely than UltraTextGen's equivalents (r 0.94 to 0.95 against 0.81 to 0.86), and it offers 55 presets.
- Zalgo.io was the only tested generator with a "same result each time" toggle and a platform-safe cap (it limits intensity to 5: 7.4 instead of 26.6 marks per letter on Extreme). It reaches a copied result in 2 interactions, with its input, output and Copy button in the first desktop screen.
- PSD-Dude was the only tested generator with a separate amount for marks above, through and below, and it offers an animated GIF export.
- Coddy gives the same output for the same text and settings, even after a reload, and combines above, through and below freely.
- Glyphy, FontCraft and Pixelied need no settings at all: type once and copy. FontCraft's 400 styles include 12 fixed Zalgo levels that repeat exactly.
- SymbolDB reached 105 marks on one letter, the highest measured classic ceiling that held. UltraTextGen measured 92 with every position on (100 with one position, by its code).
Version 1.1: UltraTextGen after its update
The benchmark found gaps in UltraTextGen. On September 30, 2026 UltraTextGen shipped changes aimed at them, and we re-ran its test with the same browser procedure and scripts. The other 11 generators were not re-tested: their results are still those of September 29.
| UltraTextGen | September 29 (1.0) | September 30 (1.1) |
|---|---|---|
| Interactions to a copied result | 4 | 2 |
| Output and Copy in the first desktop screen | No (output at about 1,400 px) | Yes (output starts at 551 px of 800) |
| Text box in the first phone screen | No | Yes, with the Copy button; the output starts just below it (English page) |
| Same output from a shared link | Settings only | Exact output (a seed travels in the link) |
| Separate amount per zone | No | Yes: above, through and below |
| Fit to a platform limit | Check only | Check, plus one tap to shrink the effect until it fits |
| Most classic marks on one letter | 92 | 300 with one position, 272 with all (measured) |
| Thai Cascade depth | Up to 150 | Up to 1,000, upward or downward, with a kaomoji carrier |
| Animated GIF | No (PNG image only) | Yes, made in the browser |
| Multi-part emoji (flags, families) | Split by marks | Kept whole |
Shapes at 100% frequency
Version 1.0 could not test UltraTextGen's shapes at 100% frequency. Version 1.1 did. At 100%, every letter gets marks and only which marks is random, so each single output follows its shape as closely as the average: r 0.85 for Slope Up, Slope Down, Pyramid and Valley, and 0.91 for Steps. At the default 80% frequency, single outputs measured 0.37 to 0.52. Textavia's shape presets still fit better on average (0.94 to 0.95), while their single outputs measured about 0.60.
Decoders on other tools' output
Version 1.0 tested each decoder only on its own tool. Version 1.1 ran all 3,726 usable captured outputs through UltraTextGen's decoder and through the character ranges read in the other three decoders' page code. UltraTextGen's decoder left no combining mark in any output. The range Zalgo.io's code strips left marks in 3% of outputs, and the range LingoJam's and Zalgo.org's code strips left marks in 68%, because it stops at U+0361.
Decoding cannot restore letters a generator changed: Glyphy's underscores, PSD-Dude's added spaces and letter swaps, SymbolDB's symbol templates and FontCraft's dropped accents all survive every decoder.
What still favours other generators
- Glyphy, FontCraft and Pixelied need no settings at all; UltraTextGen now matches their 2 interactions but shows far more controls.
- Textavia's Glitch Text Generator offers 55 ready-made styles (result cards, not a menu) to UltraTextGen's 8 presets, and its averaged shape fit is closer.
- Zalgo.io's "Consistent" toggle and PSD-Dude's per-zone sliders did the same jobs first; UltraTextGen now has equivalents, not unique features.
- FontCraft's 400 styles include ready-made decorations no Zalgo engine produces.
The data behind this section is in the version 1.1 files under Data.
What the study asked and why
Research question. How much intentional control does each popular Zalgo generator give over the result, and what does its output measure like when every tool gets the same input?
Why. Zalgo generators look alike in search results and many pages claim "full control" or "50+ styles". We wanted to know which controls exist when you operate the page, not which ones the page copy lists. UltraTextGen builds one of these generators, so it is part of the sample and is tested the same way.
What counts as supported. A capability is supported only if the user can request it. Random output that happens to rise or peak does not count as a shape. A page claim with no working control is recorded as a claim, not a capability.
Which tools were tested and why
On September 29, 2026 we searched seven phrases on two web search indexes: zalgo text generator, zalgo generator, corrupted text generator, glitch text generator, cursed text generator, creepy text generator and demonic text generator. The selection rule was fixed before any tool was tested: keep every generator site that appeared for at least 3 of the 7 phrases, then add at most two with a stated reason.
| Generator | Page tested | Why included | Status |
|---|---|---|---|
| Coddy | coddy.tech glitch text generator | Appeared for 7 of 7 phrases | Tested |
| LingoJam | lingojam.com ZalgoText | 7 of 7 | Tested |
| Glyphy | glyphy.io zalgo text | 7 of 7 | Tested |
| Creative Fabrica | creativefabrica.com zalgo text generator | 7 of 7 | Blocked: a bot check returned HTTP 403 to every browser and request |
| Zalgo.org | zalgo.org | 5 of 7 | Tested |
| SymbolDB | symboldb.org zalgo generator | 5 of 7 | Tested |
| PSD-Dude | psd-dude.com zalgo text | 4 of 7 | Tested |
| FontCraft | fontcraft.com zalgo text | 4 of 7 | Tested |
| Pixelied | pixelied.com glitch text | 3 of 7 | Tested |
| Textavia Zalgo | textavia.com zalgo | Added: textavia.com appeared for 2 of 7 (one phrase per page); checked for a shape feature | Tested |
| Textavia Glitch Text Generator | textavia.com glitch text converter | Added during testing: the Textavia page that carries the shape presets, returned for corrupted text generator | Tested |
| Zalgo.io | zalgo.io | Added: UltraTextGen's own page compared itself with Zalgo.io; 0 of 7 in this sample | Tested |
| UltraTextGen | ultratextgen.com Zalgo text | Subject of the study | Tested |
Results that were not generators (videos, TV listings, dictionaries) were left out; none of them reached 3 phrases. Sites that appeared for only 1 or 2 phrases (fsymbols, CodeShack, TextTrick, Monocalc, FontGenerator.org and others) were not tested. The exact addresses tested are in tools.csv, and every search result is in serp-sample.csv.
Capability results by generator
"No" means the full list of controls on the page was checked and the capability was absent. "Not found" means we looked and did not find it, which is weaker. "Partly" is explained in the capabilities data, one row per tool and capability with its evidence.
Capabilities found on each generator page on September 29, 2026. Creative Fabrica is not shown: it blocked every test.
| Capability | UltraTextGen | Zalgo.io | Coddy | PSD-Dude | Textavia Glitch Text Generator | LingoJam | Zalgo.org | SymbolDB | Glyphy | FontCraft | Pixelied | Textavia Zalgo |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Basic generation | ||||||||||||
| Output updates as you type | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Regenerate button | Yes | No | Yes | Partly | Partly | No | No | No | Partly | No | No | No |
| Adjustable intensity | Yes | Yes | Yes | Yes | Partly | Yes | Partly | Yes | Partly | Partly | Partly | Yes |
| Placement | ||||||||||||
| Above-only on request | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | Partly | Partly | No |
| Below-only on request | Yes | Yes | Yes | Yes | Yes | No | No | Partly | No | Partly | Partly | No |
| Middle-only (measured overlay share) | Yes, 100% overlay | Partly, 15%–16% overlay | Partly, 73%–90% overlay | Partly, 29%–32% overlay | Partly, 16%–26% overlay | Fixed single mark | Fixed single mark | No | No | Fixed single mark | Fixed single mark | No |
| Any combination of zones | Partly | Yes | Yes | Yes | Partly | No | No | Yes | No | No | No | No |
| Separate amount per zone | No | No | No | Yes | No | No | No | No | No | No | No | No |
| Mark control | ||||||||||||
| Choice of mark family | Yes | No | No | No | No | No | No | No | No | Partly | Partly | No |
| Frequency separate from amount | Yes | No | No | No | Partly | No | No | No | No | No | No | No |
| Shape | ||||||||||||
| Progression shapes | 6 + Uniform, Random; combinable | No | No | No | 11 fixed presets | No | No | No | No | No | No | No |
| Presets | ||||||||||||
| Presets or fixed styles | 7 | 4 | 4 | 2 | 55 | No | No | 50 | 12 levels | 12 of 400 styles | 22 of 48 styles | 3 levels |
| Recoverability | ||||||||||||
| Built-in decoder | Yes | Yes | No | No | No | Yes | Yes | No | No | No | No | No |
| Reproducibility | ||||||||||||
| Same output again | Partly | Partly | Yes | No | No | No | No | No | No | Yes | Yes | No |
| "Same result" toggle | No | Yes | No | No | No | No | No | No | No | No | No | No |
| Settings saved in the URL | Yes | No | No | No | No | No | No | No | No | No | No | No |
| Platform utility | ||||||||||||
| Output length shown | Yes | Yes | No | No | No | No | No | No | No | No | No | Yes |
| Platform limit check | Yes | No | No | No | No | No | No | No | No | No | No | No |
| Platform-safe mode | No | Yes | No | No | No | No | No | No | No | No | No | No |
| Text integrity | ||||||||||||
| 👁 emoji survives generation | Yes | No | Yes | No | Yes | No | No | Yes | No | Yes | Yes | Yes |
| Extras | ||||||||||||
| Image or GIF export | Yes | No | No | Yes | No | No | No | No | No | No | No | No |
Evidence behind each cell is one of: operated in a browser, read in the page's own code, or measured from captured output. Claims found only in page copy were never counted as capabilities.
Fifteen creative tasks
For each effect we asked: can a user produce it on request? Each verdict was checked against measured output where a measurement applies, such as the share of marks in the middle zone for "middle only".
Can the user produce each effect on request? Direct: a control or preset does it. Approx.: reachable with a stated limitation.
| Task | UltraTextGen | Zalgo.io | Coddy | PSD-Dude | Textavia Glitch Text Generator | LingoJam | Zalgo.org | SymbolDB | Glyphy | FontCraft | Pixelied | Textavia Zalgo |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Light | Direct | Direct | Direct | Direct | Direct | Direct | Approx. | Direct | Direct | Direct | Direct | Direct |
| Extreme | Direct | Direct | Direct | Direct | Direct | Direct | Approx. | Direct | Direct | Direct | Direct | Direct |
| Above only | Direct | Direct | Direct | Direct | Direct | No | No | Direct | No | Approx. | Approx. | No |
| Below only | Direct | Direct | Direct | Direct | Direct | No | No | Approx. | No | Approx. | Approx. | No |
| Middle only | Direct | Approx. | Approx. | Approx. | Approx. | Approx. | Approx. | No | No | Approx. | Approx. | No |
| Mostly readable | Direct | Direct | Direct | Direct | Direct | Direct | Approx. | Direct | Approx. | Direct | Direct | Direct |
| Dense, unreadable | Direct | Direct | Direct | Direct | Direct | Direct | Direct | Direct | Direct | Direct | Direct | Direct |
| Gradually increasing | Direct | No | No | No | Direct | No | No | No | No | No | No | No |
| Gradually decreasing | Direct | No | No | No | Direct | No | No | No | No | No | No | No |
| Wave | Direct | No | No | No | Direct | No | No | No | No | No | No | No |
| Middle peak | Direct | No | No | No | Direct | No | No | No | No | No | No | No |
| Middle valley | Direct | No | No | No | Direct | No | No | No | No | No | No | No |
| Strikethrough | Approx. | Approx. | Approx. | Approx. | Approx. | Approx. | Approx. | No | No | Direct | Direct | No |
| Tiny stack | Direct | Approx. | Approx. | Approx. | Direct | Approx. | Approx. | Direct | Approx. | Direct | Direct | Approx. |
| Roots (downward) | Direct | Direct | Direct | Direct | Direct | No | No | Approx. | No | Approx. | Approx. | No |
| Direct, of 15 | 14 | 7 | 7 | 7 | 13 | 4 | 1 | 6 | 3 | 6 | 6 | 4 |
| Approx., of 15 | 1 | 3 | 3 | 3 | 2 | 3 | 6 | 2 | 2 | 4 | 4 | 1 |
Two verdicts are worth reading closely. UltraTextGen's strikethrough is "approximated": its Middle position mixes five overlay marks, while a one-mark strikethrough style such as FontCraft's or Pixelied's draws a clean line. And Zalgo.org's extreme result is "approximated" because its slider resets on the next keystroke.
How closely the shapes follow their promise
Two tools offer progression shapes, so we captured 20 outputs of a 100-character sentence for each shape and compared the marks on every letter with the shape's ideal profile.
A 100-character sentence with 81 letters and digits, 20 outputs per shape. r is the Pearson correlation with the ideal profile (1 = perfect fit, 0 = none). "Average profile": r of the 20 outputs averaged letter by letter. "Single output": the median r of the 20 outputs taken one at a time. UltraTextGen ran at its default 80% frequency; its replicate run is in brackets.
| Shape | UltraTextGen option | r, average profile | r, single output | Textavia Glitch preset | r, average profile | r, single output |
|---|---|---|---|---|---|---|
| Gradually increasing | Slope Up | 0.86 (0.81) | 0.58 (0.53) | Progressive | 0.94 | 0.61 |
| Gradually decreasing | Slope Down | 0.84 (0.83) | 0.51 (0.52) | Decay | 0.95 | 0.60 |
| Middle peak | Pyramid | 0.81 (0.82) | 0.53 (0.55) | Center Focus | 0.95 | 0.61 |
| Middle valley | Valley | 0.75 (0.80) | 0.37 (0.37) | Edges Only | 0.32 | 0.29 |
| Steps | Steps | 0.83 (0.82) | 0.38 (0.41) | None found | – | – |
Averaged over 20 outputs, both tools implement what they promise. A single output is noisier on both, because each letter still gets a random number of marks: that is the result a user actually copies. Textavia's Edges Only is a hard edge on the first and last two letters rather than a graded valley, so it fits a valley poorly by design.
Waves. Both wave options repeat, and they are different waves. UltraTextGen's averaged profile has its dominant rhythm at 2 cycles across the text, where its other shapes peak at 1: two long swells, whatever the length. Textavia's repeats about every 6 letters (14 cycles), which shows more clearly in a single output.
Two cautions. The ideal valley and steps profiles match UltraTextGen's own formulas, so they favour its versions of those two shapes. And UltraTextGen ran at its default 80% frequency, which leaves about one letter in five unmarked and lowers its r; a run at 100% did not execute.
How they combine. UltraTextGen's shapes apply on top of any position, mark family, frequency and amount. Textavia's are fixed presets, each with its own marks and amount.
Output measurements
Every captured output was measured by one script. A mark is any Unicode combining mark; its zone (above, middle, below) comes from Unicode's combining class, not from each tool's own labels.
Default state, input "hello". Marks per letter: mean ± population standard deviation over the captured outputs. Zones use Unicode combining classes.
| Generator | Outputs | Marks per letter | Above / middle / below | Length (UTF-16) | Most classic marks on one letter, any setting tested |
|---|---|---|---|---|---|
| UltraTextGen | 20 | 4.56 ± 0.90 | 50% / 17% / 33% | 27.8 | 92* |
| Zalgo.io | 20 | 8.03 ± 0.96 | 44% / 5% / 51% | 45.1 | 49 |
| Coddy | 20 | 3.37 ± 0.83 | 43% / 13% / 44% | 21.9 | 18 |
| PSD-Dude | 20 | 16.05 ± 1.23 | 47% / 3% / 50% | 155.3 | 39 |
| Textavia Glitch Text Generator | 20 | 1.52 ± 0.25 | 100% / 0% / 0% | 12.6 | 25 |
| LingoJam | 20 | 17.03 ± 2.44 | 47% / 6% / 47% | 90.2 | 93 |
| Zalgo.org | 20 | 19.90 ± 3.00 | 47% / 5% / 48% | 104.5 | 528 |
| SymbolDB | 20 | 6.79 ± 1.09 | 52% / 0% / 48% | 39.0 | 105 |
| Glyphy | 20 | 1.52 ± 0.44 | 53% / 5% / 42% | 12.8 | 50 |
| FontCraft | 5 | 3.00 | 67% / 0% / 33% | 20.0 | 46 |
| Pixelied | 5 | 1.80 | 0% / 100% / 0% | 15.0 | 21 |
| Textavia Zalgo | 20 | 3.90 ± 0.40 | 50% / 0% / 50% | 24.5 | 15 |
* UltraTextGen: 92 with every position on, as measured. By its code, one position alone reaches 100 and the Steps shape up to 125 (not measured). Its separate Thai Cascade mode stacked 150 copies of one Thai tone mark, which this column does not count as classic marks.
- Default strength varies 13-fold. On "hello", Glyphy's first card and Textavia's converter add about 1.5 marks per letter by default; Zalgo.org adds about 19.9.
- Length is the cost. Every mark is a character. Zalgo.org's default "hello" averaged 104.5 UTF-16 units, over three times Discord's 32-character nickname limit.
- Diversity is similar. Across all their captured outputs, every tested tool used between 94 and 116 different marks. That range also depends on how many settings each tool has, so it is not a ranking.
- Text integrity differs. Glyphy's mark list includes a plain underscore, so 8 of 44 default outputs changed the text itself. PSD-Dude adds a space between letters by default. FontCraft removed the accents from "café déjà vu".
Ease of use, measured separately from power
Ease and control pull in opposite directions in this sample, so they are reported apart and never combined.
Interactions counted from page load; typing your text counts as one. Screens: 1280 × 800 desktop, 390 × 664 phone viewport. "Partly": only part of the generator is in the first screen.
| Generator | To first Zalgo of your text | To copied output | Useful before you type | Generator controls in first screen, desktop | Same, phone |
|---|---|---|---|---|---|
| UltraTextGen | 3 | 4 | Yes | Partly | No |
| Zalgo.io | 1 | 2 | No | Partly | Partly |
| Coddy | 2 | 3 | Yes | Yes | No |
| PSD-Dude | 2 | 3 | Yes | Yes | Partly |
| Textavia Glitch Text Generator | 3 | 4 | Yes | Partly | Untested |
| LingoJam | 1 | 3 | No | Yes | Yes |
| Zalgo.org | 1 | 3 | Partly | Yes | No |
| SymbolDB | 2 | 3 | Yes | Yes | Partly |
| Glyphy | 1 | 2 | Yes | Yes | Yes |
| FontCraft | 1 | 2 | Yes | Yes | Yes |
| Pixelied | 1 | 2 | Yes | Yes | Yes |
| Textavia Zalgo | 1 | 2 | No | Partly | Partly |
UltraTextGen opens with "Hello World" already converted, so a result is ready before you type. To convert your own text you clear the sample, type, and on a 1280 × 800 screen scroll to the output, which starts about 1,400 pixels down the page. On a phone the text box itself starts below the first screen. That is the largest usability gap UltraTextGen showed in this benchmark.
How much intentional control each tool gives
We did not multiply slider positions into a number of "possible states". The controls are not independent (UltraTextGen's amount and shape both scale the same count), many settings look identical once rendered, and a big number would reward long sliders over useful ones. Instead we count seven independent axes a user can set on purpose. This model was built after the data was collected:
- amount of corruption,
- which zones get marks (above, middle, below),
- a separate amount per zone,
- which family of marks is used,
- how many letters are touched (frequency),
- how corruption changes along the text (shape),
- getting the same result again.
| Generator | Axes of control, of 7 | Which |
|---|---|---|
| UltraTextGen | 5.5 | amount, zones, mark family, frequency, shape, repeat result (partly) |
| Zalgo.io | 3 | amount, zones, repeat result |
| Coddy | 3 | amount, zones, repeat result |
| PSD-Dude | 3 | amount, zones, per-zone amount |
| FontCraft | 2.5 | amount (partly), zones (partly), mark family (partly), repeat result |
| Pixelied | 2.5 | amount (partly), zones (partly), mark family (partly), repeat result |
| Textavia Glitch Text Generator | 2 | amount (partly), zones (partly), frequency (partly), shape (partly) |
| SymbolDB | 2 | amount, zones |
| LingoJam | 1 | amount |
| Textavia Zalgo | 1 | amount |
| Zalgo.org | 0.5 | amount (partly) |
| Glyphy | 0.5 | amount (partly) |
No tested generator had all seven. UltraTextGen covered 5.5, missing a per-zone amount (PSD-Dude has one) and a way to repeat an exact result (Zalgo.io, Coddy, FontCraft and Pixelied have one). The task results above measure the same question from the output side.
Page claims that did not hold
Pages were read as well as operated. These claims did not match what the page did on September 29, 2026. UltraTextGen's own page is included. Its claims below were corrected on its English page in the same release as this study. On its translated pages, the statements about other generators and the Extreme tooltip were corrected too; the translated intro, decoder and sharing text still carry some older wording about UltraTextGen itself until their next update.
- UltraTextGen said Extreme gives "up to 100 marks a letter"; with the default Position All it gives 92, and 100 only with a single position. It said the decoder "strips every Unicode combining mark" and that decoding is lossless; it strips six mark ranges, and like every tested decoder it removes accents typed as a separate mark. It said a shared link opens your "exact configuration"; the settings return, but the random marks change.
- SymbolDB lists "50+ unique styles". Measured, the 50 templates reduce to about four mark patterns, and templates named Top, Middle or Bottom place marks about half above and half below.
- PSD-Dude calls Glitch Intensity the master Zalgo control; in the page code it only sets how often letters are swapped for look-alikes, and it did not change the marks.
- Zalgo.org's slider shows one height, but every keystroke resets it to 17.
- Zalgo.io's text describes a separate slider for each direction; the page has three on/off direction buttons and one intensity slider. Its "Middle" button measured 15% middle marks.
- Coddy's intensity slider starts at 1, but in its code values from 1 to 12 add no marks; at 1, all 10 captured outputs were plain text.
Platform claims on every page, including UltraTextGen's, were recorded but not tested, because no output was pasted into an app.
Method
Environment. Chromium driven by Playwright 1.56, logged out, at 1280 × 800 and as an iPhone 13 profile (390 × 664 viewport). Each page was loaded live on September 29, 2026. Output was read from the page as text, never from a screenshot.
Planned before testing. The selection rule, the ten dimensions, the evidence types, the inputs, the fifteen tasks and the measurement definitions were written down before the first tool was tested. The method file was committed together with the first results, so that order rests on the session record. Eight amendments are recorded: Textavia counted as two tools, the phone viewport size, the shape-fidelity procedure, Creative Fabrica kept as untested, the text-integrity and extras rows, the control-axis model, the shape ideals and a record-keeping note. The text-integrity rows and the control-axis model were added after data collection.
Inputs. hello, HE COMES, something is watching me, 123456, café déjà vu, 👁 hello 👁, a 100-character sentence, a punctuation string, a string with runs of spaces, and a mixed-case string. 20 outputs of "hello" in each tool's default state (5 for FontCraft and Pixelied, which always repeat), 3 of every other input, and 5 to 10 per preset and per placement option.
Evidence types. Operated in a browser; read in the page's own code; measured from captured output. Page copy alone was recorded as a claim. When a cell needed a judgement, the rule was applied the same way to every tool, and each change a reviewer made is recorded in the data.
Measurement. Marks per letter counts combining marks on letters and digits. Zones use Unicode's canonical combining class: class 1 (overlay) is middle; classes 214, 216, 228, 230, 232 and 234 are above; 202, 218, 220, 222, 233 and 240 are below; any other mark, such as an enclosing mark or a Thai tone mark, counts as other. Length is UTF-16 code units, the count most text boxes and character counters report.
Review. After collection, an automated AI reviewer received the data with tool names replaced by letters and was asked for strengths by dimension, claims that should not be published, and a bias check. The method document still named UltraTextGen as the subject, so the review was not fully blind. It flagged that UltraTextGen led many dimensions and re-examined each lead against the data; the leads it did not uphold are not claimed here. Four more automated reviews then checked every number on this page against the data files.
Limitations
- The publisher is in the sample. UltraTextGen runs this study and one of the tools. The method written before testing, the published data and the automated review reduce that bias; they do not remove it.
- The task list favours rich generators. Several tasks (tiny stack, roots, strikethrough) are effects UltraTextGen names as presets. Tasks were judged by their output, not by the name of a control, but a different task list could rank tools differently.
- One day, one sample. Pages change. Every result is dated September 29, 2026. Search results were read from two indexes, logged out and in the US; Google's own results page could not be read by the test browser.
- Creative Fabrica is untested. Any "only tested generator" statement here covers 12 generators, not 13.
- Version 1.1 re-tested only UltraTextGen. UltraTextGen fixed its own gaps after reading this study, and only its test was re-run, on its updated build served locally the day before release. Competitors may also have changed since September 29.
- Deeper evidence for UltraTextGen. UltraTextGen's code was read from its source and run in a test harness as well as operated in the browser; competitors' code was read from their live pages. That surfaced UltraTextGen's own false claims, but it is an asymmetry.
- Embed was not searched for off-page. UltraTextGen has an embed page; we did not look for embed options on other sites beyond each generator page, so no "only" claim is made about embedding.
- One emoji. The emoji test used 👁, a single character. UltraTextGen's code also adds marks inside multi-part emoji such as flags and family sequences, which splits them; that was read in the code, not measured here.
- No app testing. Nothing here says whether output survives Discord, X, Instagram or Roblox.
- Small task samples. Creative-task verdicts rest on 2 to 3 outputs each plus the page's code; shape fidelity rests on 20 outputs per shape.
- A replicate, not a variant. A second batch of UltraTextGen shape outputs was meant to run at 100% frequency; the setting did not apply, so it is published as a replicate at the default.
Data, samples and reproducibility
| File | Contents | Size |
|---|---|---|
| zalgo-generator-benchmark.pdf | The full study, version 1.1, printed from this page | 243 KB |
| capabilities.csv | Start here: one row per generator and capability, with the result, value, evidence type and evidence | 134 KB |
| creative-tasks.csv | The 15 creative tasks for every generator, with how each was produced and the measured check | 47 KB |
| output-measurements.csv | Measured output per generator, input and setting: marks per letter, zones, unique marks, length | 136 KB |
| shape-fidelity.csv | Shape fit and wave test for the two generators with progression shapes | 3 KB |
| samples.json | All 3,774 captured outputs plus the 20-per-shape samples, exactly as each page produced them (split emoji halves stored as U+FFFD) | 1.6 MB |
| tools.csv | The 13 generators, the address tested, why each was included and whether it could be tested | 1 KB |
| serp-sample.csv | Every search result used to choose the sample: phrase, index, position, address, date | 20 KB |
| inputs.json | The ten standard inputs | 1 KB |
| measure.py | The measurement script; rebuilds output-measurements.csv from samples.json | 5 KB |
| v1.1-ultratextgen-changes.csv | Version 1.1: every UltraTextGen capability that changed, before and after, with its evidence | 4 KB |
| v1.1-ultratextgen-samples.json | Version 1.1: 474 UltraTextGen outputs captured on September 30, 2026 with the same procedure | 178 KB |
| v1.1-shape-fidelity-ultratextgen.csv | Version 1.1: UltraTextGen shape fit at the default and at 100% frequency | 1 KB |
| v1.1-cross-decode.csv | Version 1.1: every tool's outputs through each decoder | 2 KB |
To reproduce the output measurements, put measure.py, samples.json and inputs.json in one folder and run python3 measure.py (Python 3.9 or later, standard library only). It writes output-measurements.csv, byte-identical to the published file. The generators themselves change over time, so a new capture will differ from this one.
To use the generator this study tests, open the UltraTextGen Zalgo text generator. To choose between the tools by what you want to make, compare Zalgo generators by use case.
How to cite this study
UltraTextGen Research. “Zalgo Generator Benchmark 2026: Testing Creative Control Across 13 Tools.” Version 1.1, September 30, 2026. https://ultratextgen.com/research/zalgo-generator-benchmark/
Please cite the version number. A later version will keep this address and state what changed. Version 1.1 (September 30, 2026) added UltraTextGen's re-test, the 100% frequency shape run and the cross-tool decoder test; nothing else changed. Last updated September 30, 2026.