Cursed Text Generator
Turn any line into cursed Zalgo text in six strengths, from a faint wrongness to towering stacks, including text that gets worse as it goes on. Copy the one you want, or paste cursed text in to lift the curse.
Fine-tune
Abyss: tallest letter carries 22 marks; whole line 404 characters.
- UneasyBarely there
I̹̎ț̋ i̠s͈͊ r͕͗i̦g̥̏h͇̽t̠ͬ b̘̿e̥h͕́i̞n̩d̨ y̨o̭ͧu̢
- HauntedClearly wrong
I̶͎̱̪̽͗t̳͈͓̿̊ i̡̳͔͌͂s̜̫ͦ͗ r̞̬̒ͥỉ̷̧̢͈̕g͈̟̳͊̑h̛͔̯̄̐t̫̩ͧͯ b̻͕͗̕ȇ̸̖̱ͫḧ͕͙̎i̵̢͇͌̐n͚̺̲͐̉d̶̫͔̏̒ ỷ̷̳̬̑ö̸̫̘̃u̫̪͊͆
- ZalgoThe classic
I̸̧̢͙͕ͤ͑͊̾t̫̹̺̮͆̄̑́ i̷͕̜̫̫̔̆͌̌s̸̨̟̫̝ͥͪ̂͒ r̶̢̝̣̥͑́ͤͫi̷̬̼̲͔ͬ̉ͪ͘g̸̨̬̩̪ͪͯͤ̌ḩ̸̗̥̯̏̑̔ͫt̷̹̺̩̲͋ͤ̈ͫ b̶̛̝̙̹ͨ͂̿ͬe̳̮̫̲ͫͮ́̿h̶͍͍̪͕̐̾̆͋ỉ̛̪̞͖͌̏̕n̷̦̳̳̰̑̃́̕d̵̠̭̫̬͛̎̓ͤ ý̶̧̡̙̺̇͂ͧo̡͎͍̪ͭ͂ͫ̊u͎̤̯̯̽̓ͦ̂
- CreepingWorse towards the end
It is̷ r̪ig͖ͭh̸̻̚t͈̬͊ b̷̪̺͇̾́e̴̖̙ͫ̒͆h̷̭̥̰̗̒̿̍ī̸͈͚̥̪̐ͮ̕n̸̛͔̯̬͂ͯ̔͐d̴̰̱̟̫̤̎̓ͣ̍̉ y̶̢͍̪͚̱͔̐̄̄ͮ̿̿̿o̸̷͔͚̲͈̮͓̼̅ͭ̽̃̇̊̉ư̸̡̬̻͍͙̝̭̔̈̄ͯ̿͒̊̕
- DrippingEverything hangs down
I̠̳̲̥̖͈t͇̯̤͇̱͖ i̯̣͓̬̜̼s̝̠̝̣̰͍ ṟ̨̲̞̘̲į̛̥̺̯̞g̙̣̬͕̤͓h̡̘͍̫̱̰t̤̰̱̻̹͔ b͈̫̤̭̲̮ȩ̨̢̣̝̱h͚̘̮͇͕͉i̡͕͈̜̥̝n̯͖̮̹͕̩d̢͖̭̜̼̳ y̥͖̮̣̟̘ơ̪̗̱̠̜u̧̦̥̜̜̲
- AbyssTowering stacks
I̷̛̝̙͙̪̪͇̣̝̟ͧ̑̽̏͆̒̊ͭ̾̐t̶̨̢̛̯͉̜̲̲͍̝̾̐̊ͫ̑̊ͨ̒ͮ͌ i̶̢̫̬͉͓͇͇͈̟̜ͮͨ͆͋̋̑ͯ͌̓̋s̴̡̧̨̩̼͍̳̺͚͔͒̌̑͋ͦ͒̋̚̕̚ r̷̢̡͙̗̟̼̼̫̰̰ͪͬͦ̓̇̏̊̄̋͘i̷̢̲̻͈͉͙̯̝̳͕̅͛ͤ̃ͬ̊̓̎ͨ̚g̴͇̲̯̣͍̹̬̫̦͖̃͗̐͛̉͊͛̍ͦ̉h̸̻̠͉͔̼͉̣͔̮̫͑ͮͬͩ̓͂͊͋̅̕t̵̵̛̼̯̜̙̱͖͎͍͎̽̃ͤ̊̔ͧ̓̔̂̚ b̵̧̘̯͔̻̰͉͓͓̗̄͒̂̐̿ͦ̿ͨ̔̚e̷̢͉͉̺̭͎̹̻͇̯ͥ̓ͨͫ̽̒̎̿ͦͫḩ̶̺͎͙̻̼̤̳͔̠̆ͯ̏͒ͫͣ̂ͤ̽ͣi̵̼̳̞̦̙̻̲̲̭̹̇̒̍̑ͮ̍̍ͨ̄ͬņ̸͖̻͔͖͙̜͍͚͍͗̂͒͋̾̾̉͂ͯͤd̷͕̥͈͙̳̣̗͉̳͉̐̑͗̇ͦͬ̓ͭ̕͘ y̸̷̧̢̻̠̜̬͕͚̙̰ͯͯͣ̆͛ͫ̅̌̚̚ơ̸̸̡̛͕̱̰̺̜̝̙̊̉̊̋̉̓ͧ͋̋̕ų̶̶̢̨͇̳̲̠̝͚̪̊ͣͣ̌̇̑̿ͬ͑ͬ
Six curses, from uneasy to abyss
Cursed text, or Zalgo text, is ordinary text with combining marks piled on every letter until it looks like it is leaking out of the line. The six curses use the same marks in different amounts and directions, and Curse power scales them all together. The table shows what each does to “It is right behind you” at power 4.
| Curse | Marks per letter at power 1 | Tallest letter | Line length |
|---|---|---|---|
| Uneasy | 0.4 | 2 | 50 |
| Haunted | 1.2 | 6 | 108 |
| Zalgo | 2.2 | 9 | 179 |
| Creeping | 0 at the start, 4.4 at the end | 17 | 128 |
| Dripping | 1.5, all below | 6 | 130 |
| Abyss | 5.3 | 22 | 404 |
The line is 22 characters on screen in every row; the length column is what it actually takes up once each mark is counted as a character. Uneasy is the one to use where people still need to read it at a glance, such as a display name. Haunted and Zalgo suit titles and captions. Abyss is for a single word or two with plenty of empty space around it. For a lighter, digital interference look rather than horror, try the glitch text generator.
Where Zalgo text came from
Zalgo began in 2004 on the Something Awful forums, where a member posted edited comic strips in which the characters’ eyes bled and their speech dissolved into distorted lettering, ending with the cry “Zalgo!”. Readers built a legend around it: Zalgo as a nameless, Lovecraft-style entity that corrupts whatever it touches, with “He comes” as its calling card. Text that seems to break the screen it is shown on became the meme’s signature.
Its best-known appearance is a Stack Overflow answer by the user bobince, posted on 13 November 2009 in reply to a question about matching HTML tags with regular expressions. The answer argues that it cannot be done, and as it goes on the text itself decays into Zalgo, finishing with “he comes”. The Creeping curse here is built on the same idea: normal at first, consumed by the end.
Zalgo has escaped the screen at least once. In 2020 a student had “hamburger” in Zalgo text printed as a school yearbook caption, and the marks ran over his photo and the one below it. Print has no line box to clip them.
Creeping and dripping text
Creeping multiplies the Zalgo amounts by a factor that grows along the line, from nothing on the first letter to double on the last. The growth is squared, so the start stays clean for longer and the end goes bad quickly:
Worked example. At power 4, “It is right behind you” comes out with 0 marks on “It”, 1 on “is”, 9 across “right”, 49 across “behind” and 47 across “you”, three letters with as many marks as six. Because the average of 2t² over the line is two-thirds, Creeping uses about two-thirds of the marks of plain Zalgo, but puts them where the sentence lands. It works best on a line whose last words are the payoff.
Dripping puts every mark below the letters, so the text seems to hang and run downwards. Marks below are less likely to be cut off at the top of a chat bubble or post, which makes Dripping a good choice where the space above is tight.
The 30-mark ceiling
Unicode places no limit on how many marks can follow a letter, but its normalisation annex defines a Stream-Safe Text Format: no run of more than 30 combining marks. The number was chosen as far beyond anything a real language needs, so software can process text in small fixed buffers. Text over the limit is still valid, but programs that follow the stream-safe process insert an invisible joiner (U+034F) to break up long runs.
With the 30-mark option on, which is the default, no letter gets more than 30 marks however high the power goes. Only Abyss reaches it, as the table for “HE COMES” shows.
| Power | Tallest letter, no limit | Tallest, limited | Line length, limited |
|---|---|---|---|
| 2 | 11 | 11 | 83 |
| 4 | 21 | 21 | 155 |
| 6 | 32 | 30 | 218 |
| 8 | 43 | 30 | 218 |
| 10 | 53 | 30 | 218 |
Some apps have struggled with very long runs of marks. Wikipedia’s Zalgo text article cites reports of Zalgo messages crashing the iOS Messages app and Gmail. Those bugs have been fixed, but it is a good reason to keep the limit on and to avoid sending Abyss text to people who did not ask for it.
Cursed text and screen readers
Sighted readers see a word under the marks. Software does not. Screen readers handle combining marks in different ways: some read the letters and skip the marks, some announce each mark by name, and some give up on the word. Search, translation and text-to-speech treat the marks as part of the word, so cursed text is rarely found by searching for the plain word.
If what the text says matters, give the plain version too: in a post, put it in the caption or alt text; in an image, write it in the alt text. On a web page, show the cursed text to the eye and the plain text to assistive technology:
<h2> <span aria-hidden="true">I̷̢t̶ ̸i̧s̱ ̸r̶i̵g̶h̴t̲ ̷b̶e̶h̶i̸n̷d̵ ̴y̸o̶u̸</span> <span class="visually-hidden">It is right behind you</span> </h2>
Uncursing text
Paste cursed text into the box and an Uncursed row appears with the marks removed. The hard part is keeping real accents. A common trick, decomposing the text and deleting every combining mark, turns café into cafe and Việt into Viet along with the curse:
text.normalize('NFD').replace(/\p{M}/gu, '') // removes accents tooThe generator is more careful:
- Accented letters typed as one character, such as é, are never touched.
- A letter is cleaned if it carries three or more separate marks, or any overlay or rare mark.
- If more than 40% of the letters carry marks, the whole text is taken as cursed and every separate mark goes, because light curses look just like ordinary accents.
Worked example. “A̷n̷ ̷o̷l̷d̷ café”, with a slash through each of the first six characters, comes back as “An old café”: 6 marks removed and the é kept. “Crème brûlée, Việt Nam” pasted on its own is left exactly as it is.
Frequently asked questions
Why is the text running into the lines above and below?
That is how cursed text works: the marks are drawn outside the line and most apps do not make room. Use a lower power, the Dripping curse if the top is being cut, or give the text extra line spacing in your design.
Can I use cursed text in a Discord or Twitch name?
Display names usually accept it, though long stacks may be trimmed or overlap other names. Usernames and logins normally allow only plain letters, numbers and a few symbols.
Why does the same text give the same curse every time?
The curse is worked out from the position of each letter and the pattern number, so it is repeatable. Press New pattern for a different version.
Is cursed text harmful to devices?
Ordinary amounts are not. Very long runs of marks have crashed some apps in the past, which is why the 30-mark limit is on by default.
Can I print cursed text?
Yes, but leave space. On paper nothing clips the marks, so a high power will run into the text, images or lines around it. Print a test at the real size first, and use Uneasy or Haunted near other content.
Sources
- Wikipedia, Zalgo text: 2004 Something Awful origin, the yearbook caption, app crash reports
- bobince, answer to “RegEx match open tags except XHTML self-contained tags”, Stack Overflow, 13 November 2009: the answer that decays into Zalgo
- Unicode Standard Annex #15, Normalization Forms, section 13: Stream-Safe Text Format and its 30-mark limit
- Unicode, Combining Diacritical Marks code chart (U+0300–036F): the marks the curses use
- Unicode Standard Annex #29, Text Segmentation: how a letter and its marks are grouped into one character
Related Tools
Convert plain text to circled bubble Unicode text and back.
Typewriter text in six styles to copy and paste, and back to plain.
Tiny text in six styles: small caps, superscript, subscript and formulas, and back to plain.
Text to Morse and back, with sound, adjustable speed and WAV download.
Glitch text in five styles with intensity, letters hit and marks above, through or below.
Cursive and italic text styles to copy and paste.