Fancy Text Generator: How Unicode Fancy Fonts Work and Where They Break
How a fancy text generator works: look-alike Unicode letters, not fonts. See what changes in search, on X, in text messages and for screen readers.
By TheTextKit TeamPublished

A card shows the word Hello in five fancy Unicode styles, each with a colored label. Bold, script, fraktur, circled and monospace. The styled letters are separate Unicode characters, not fonts.
A fancy text generator does not change a font. It swaps each letter you type for a different Unicode character that looks like a styled version of it, so πππ₯π₯π¨ is five separate characters and not the word Hello in bold. Because the result is plain text, you can paste it into a bio, a caption or a chat message. The same fact is what makes it break: the characters mean something different to search, to screen readers, to length limits and to text messages. This guide shows where the letters come from, what we measured on our own Fancy Text Generator, and when to use it.
How a fancy text generator works
Unicode contains a block called Mathematical Alphanumeric Symbols, which runs from U+1D400 to U+1D7FF. It holds the alphabet and digits in bold, italic, script, fraktur, double-struck, sans-serif and monospace so that mathematicians can write a bold vector next to an italic scalar. A generator looks up each letter you type in one of those alphabets. A few letters, such as the script capital B, were already in another block, so the generator uses those code points instead.
| Style | Example | Where the letters come from |
|---|---|---|
| Bold | πππ₯π₯π¨ | Mathematical Alphanumeric Symbols |
| Script | ββ―ππβ΄ | The same block, plus a few letters in Letterlike Symbols |
| Fraktur | βπ’π©π©π¬ | The same block, plus a few in Letterlike Symbols |
| Monospace | π·ππππ | Mathematical Alphanumeric Symbols |
| Circled | β½ββββ | Enclosed Alphanumerics, from U+24B6 |
| Fullwidth | οΌ¨ο½ ο½ο½ο½ | Halfwidth and Fullwidth Forms, from U+FF01 |
| Small caps | Hα΄ΚΚα΄ | Look-alike letters from several phonetic blocks |
| Strikethrough | HΜΆeΜΆlΜΆlΜΆoΜΆ | A combining mark, U+0336, after each letter |

A table of four sources of fancy text and their code points. Math alphabets such as bold and script start at U+1D400. Circled letters start at U+24B6. Fullwidth letters start at U+FF01. Strikethrough adds the combining mark U+0336.
Why some letters come from another block
The math alphabets have gaps. A script capital B should sit at U+1D49D, but that code point is unassigned, because the letter was already in an older block as U+212C. A generator that simply adds an offset to every letter would write an empty slot, which shows as a box or nothing. We checked all twelve math alphabets for unassigned code points and found 24 letters that live elsewhere: the italic h, 11 script letters, 5 fraktur letters and 7 double-struck letters. Our generator maps each of them to the right code point, and the tests confirm that none of its output is unassigned.

A table of four alphabets and the letters stored outside the main math block. Italic has the letter h. Script has 11 letters. Fraktur has 5. Double-struck has 7. In total there are 24.
Can it be turned back into normal letters?
Unicode gives the mathematical and enclosed letters a compatibility mapping to the plain letter they imitate. The normalization form that applies it is called NFKC, and it lets us test our own generator without trusting our own tables. We converted all 26 capitals, 26 lowercase letters and 10 digits into each style, ran NFKC on the result and compared it with the original. Twelve mathematical styles, the circled style and the fullwidth style returned the original text exactly. None of the 14 contained an unassigned code point.
| Style group | Back to plain letters with NFKC? |
|---|---|
| Bold, italic, bold italic, script, bold script | Yes |
| Fraktur, bold fraktur, double-struck | Yes |
| Sans-serif, sans bold, sans italic, monospace | Yes |
| Circled, fullwidth | Yes |
| Small caps, upside down | No, they are look-alikes |
| Strikethrough, underline | No, the marks stay |

A table of three groups. Fourteen styles, the math alphabets, circled and fullwidth, return to plain letters under NFKC. Small caps and upside down are look-alikes that do not. Strikethrough and underline keep their combining marks.
A mapping exists, but that does not mean the software you care about uses it. A search engine, a hashtag index or a username check that does not apply NFKC treats πππ₯π₯π¨ as a different word from Hello. We did not test any search engine, so do not rely on a match.
The upside-down style is a different kind of text. It reverses the order of the letters and replaces many of them with look-alikes from other writing systems. Of the 62 letters and digits, 42 become Latin letters, 11 become math or punctuation symbols, and the rest come from Greek, Canadian syllabics, Bopomofo, Hangul and Cyrillic. The digit 2, for example, becomes a Hangul letter, and the digits 4 and 7 become Bopomofo letters. A spam filter that flags mixed scripts can react to that, and a font may fall back to another one for them.
What fancy text costs: length, X and text messages
Most of the mathematical letters sit above the Basic Multilingual Plane, so each takes two UTF-16 code units. We measured Hello World, which is 11 characters in every style, with the same code that powers our Character Limit Checker:
| Style | Characters | UTF-16 units | Weight on X | Text message |
|---|---|---|---|---|
| Plain | 11 | 11 | 11 | GSM-7, 160 per message |
| Bold | 11 | 21 | 21 | Unicode, 70 per message |
| Fullwidth | 11 | 11 | 22 | Unicode, 70 per message |
| Small caps | 11 | 11 | 15 | Unicode, 70 per message |
On X, each letter above U+10FF weighs 2, as we explain in our guide to the Twitter character limit. A post in bold letters therefore holds about 140 letters, not 280. In a text message, one styled letter switches the whole message to Unicode, which holds 70 characters per segment, or 67 when the message is split, instead of 160. A message of 70 bold letters needs 3 segments, and 160 plain letters fit in one.

A table of the phrase Hello World in four styles. Plain text is 11 characters, weighs 11 on X and uses the GSM-7 encoding for text messages. Bold weighs 21 on X, fullwidth 22 and small caps 15, and all three use Unicode encoding.
Screen readers and search
The W3C's MathML specification is blunt about this. In its section on Mathematical Alphanumeric Symbols, it says the characters "should not be used for styled prose", because doing so hinders searching, restyling, including for accessibility, and other processing. Eric Meyer wrote about the same trick in Unicoding Font Styles and quoted the standards expert Chris Lilley, who put the chance of a screen reader understanding such text at near zero. We did not test screen readers ourselves, so treat that as a warning from people who know the field, not as our measurement.
When to use fancy text, and when not to
- Do use it for a short decoration, such as a name in a bio or a heading in a caption, where the meaning does not depend on it.
- Do not use it for anything people must find, type back or have read aloud: names, hashtags, usernames, keywords, links, prices and instructions.
- Look at it on another device. A device whose fonts have no glyph for a character shows an empty box instead, and the rarer styles, such as fraktur and double-struck, are the most likely to be missing.
- Check the length before you post. A styled message can be double the weight on X and several text message segments.
- Do a quick test. Replace the styled words with plain ones in your head. If the sentence still makes sense, the styling was decoration. If it does not, move the meaning into plain text.
- Keep a plain copy. If you need the original, run NFKC on the text. In JavaScript,
text.normalize("NFKC")restores the styles listed in the table.
Frequently asked questions
How does a fancy text generator work?
It swaps each plain letter for a different Unicode character that looks like a styled version of it, such as a bold or script letter. The result is ordinary text, so you can copy and paste it anywhere that accepts Unicode. No font is involved.
Is fancy text accessible to screen readers?
Often not. The W3C advises against using mathematical alphanumeric characters for styled prose, because it hinders searching and restyling, including for accessibility. We did not test screen readers ourselves, so keep anything important in plain text.
Why does fancy text use more characters on X?
X weighs most characters above U+10FF as 2, and the mathematical bold, italic and script letters sit far above that. Hello World is 11 on X in plain letters and 21 in bold, so a styled post holds about half as many letters.
Can fancy text be turned back into normal letters?
For most styles, yes. Unicode compatibility normalization, called NFKC, maps bold, italic, script, fraktur, double-struck, sans-serif, monospace, circled and fullwidth letters back to plain ones. Small caps, upside down text and strikethrough or underline do not map back.
Does fancy text work in text messages?
It sends, but it changes the encoding. A message with any of these characters is sent as Unicode, which holds 70 characters per segment instead of 160, so a long message costs more segments.
Try the generator
Type your text into the Fancy Text Generator to see it in 18 styles, and copy the one you want. Everything runs in your browser. For the length of a post on X or in a text message, paste the result into the Character Limit Checker. To change plain text between upper case, lower case and title case without special characters, use the Case Converter.


