Fancy text generator
Generated in your browser · nothing is uploaded
Type once and the same text comes back in nineteen Unicode styles: bold, italic and bold italic, script and bold script, fraktur, double-struck, sans bold and sans italic, monospace, circled, squared, fullwidth, small caps, superscript, upside down, and struck through, underlined or slashed. Tap any line to copy it.
How to use the fancy text generator
Most of what is on this page comes out of one block. Unicode 3.1 added Mathematical Alphanumeric Symbols at U+1D400, a contiguous run of over a thousand codepoints, so that a paper could distinguish a bold vector from an italic variable as characters rather than as formatting. Ten of the nineteen styles here are that block, and because it is contiguous each one is a flat offset from ASCII: bold A is U+1D400, bold B is the next codepoint, and so on to the end of the alphabet. That arithmetic is what makes a generator like this three lines of code, and it is also what makes the exceptions worth naming.
Script is the famous exception. B, E, F, H, I, L, M and R had already been encoded years earlier in Letterlike Symbols, so Unicode refused to encode them twice and left eight holes in the new block. A generator that only adds an offset produces blanks or unrelated glyphs on exactly those letters, which is why so much cursive text on the web has gaps in it; this substitutes the older characters, so every letter renders. Fraktur and double-struck have the same shape of hole in fewer places.
The styles that are not from the maths block each come from somewhere with its own reason. Circled letters — bubble text, which is what almost everybody calls them — were encoded for numbered lists and diagram callouts. The block runs ① to ⑳, but this styles one character at a time, so it uses ⓪ to ⑨ only and a longer number comes out digit by digit: 20 is ②⓪ rather than ⑳. Squared letters exist as uppercase only, because they were encoded for signage and abbreviations. Fullwidth comes from CJK typesetting, where a Latin letter is drawn to fill the same square cell as a Chinese character, which is exactly what produces the airy spaced out look — the spacing is the cell, not added padding. Upside down is scavenged from all over: the turned a is a phonetic vowel, the turned e is a schwa, the turned capital A is a logical quantifier, and the string is reversed as well, which is the half of the trick most tools forget. Small caps and superscript are the two here borrowed from the phonetic alphabets, and their missing letters are set out on the small text generator.
Two consequences follow from all of this being real characters and not formatting. Everything from the maths block sits above U+FFFF, so in UTF-16 each letter is a surrogate pair: a twenty-letter name is forty units against any limit counted that way, which is most of them. And search behaviour depends entirely on normalisation — under NFKC these fold back to plain letters, so a system that normalises before indexing will match 𝐡𝐞𝐥𝐥𝐨 against hello and one that does not never will. You cannot tell which you are dealing with from the outside.
The last three styles are different in kind. Strikethrough, underline and slash append a combining mark after each character instead of replacing it, so the underlying word is untouched: it still matches a search and a screen reader still reads it. That makes them the only ones here that cost nothing but character count, and they double it.
What people use it for
- Styling a display name or bio in bold, italic or script
- Getting cursive and bold-script letters that paste into a message
- Getting bubble letters — circled or squared — for a list or a diagram
- Striking text through on a platform that offers no formatting
- Flipping a line of text upside down
- Spacing a line out with fullwidth characters
- Checking how a style renders before pasting it anywhere
Questions
It swaps each letter for a different Unicode character that happens to look styled. No font is involved, which is why it survives a paste.
No, and you can test it: change the font on this page and the styled lines do not change with it. A font redraws the letter A. This hands you a different character that was drawn to look like a styled A.
Not as words. A name in the maths block is announced character by character or skipped entirely, so 𝓙𝓪𝓷𝓮 is a run of symbols rather than a name. The three combining-mark styles are the exception.
Usually. Instagram accepts most of these in the bio and name fields, though it rejects some in usernames.
On some platforms. Many restrict usernames to plain ASCII while allowing a styled display name.
The device has no glyph for those codepoints. Older Android and some Windows versions are missing several of these blocks.
Usually double. Everything from the maths block is above U+FFFF, so it is a surrogate pair in UTF-16 and a twenty-letter name spends forty units of a limit counted that way.
Strikethrough, underline and slash. They add a combining mark rather than replacing the letter, so the word underneath is intact.
Unicode left holes in the script block where letters already existed elsewhere. A naive offset produces blanks on B, E, F, H, I, L, M and R. These are patched here.
Two separate Unicode alphabets. Bold script is heavier and generally renders more reliably on Android.
It depends on the system. NFKC normalisation folds these back to plain letters, so anything that normalises before indexing matches the ordinary word and anything that does not never will.
It is the Circled style. Bubble letters are the enclosed alphanumerics ⓐ to ⓩ and Ⓐ to Ⓩ, with ⓪ to ⑨ for the digits, and the squared style below it is the boxed version of the same idea.
Because each character is styled on its own: 20 becomes ②⓪ rather than ⑳. Unicode does encode ① to ⑳ as single characters, but they are a separate run from the digits ⓪ to ⑨ this uses, and above ⑳ there is nothing at all.
Latin letters drawn to fill the same square cell as a Chinese character in CJK typesetting, which is why they look widely spaced.
Each letter is swapped for a rotated lookalike from elsewhere in Unicode, then the whole string is reversed so it reads correctly when turned around.
Some platforms normalise or strip combining marks on save. Nothing can be done about it from this end.
On the glitch text generator, which stacks combining marks at an intensity you choose. Stacking is a different mechanism from the styles here.
On the case converter. Alternating caps changes the case of the letters you already have, which nothing on this page does: every style here swaps in a different character.