Fancy Text Generator
Fancy text generator with 23 Unicode styles: bold, italic, cursive, Fraktur, small caps, circled. Keeps accents and emoji intact; turns fancy text back to plain.
- Runs in your browser
- Your data never leaves your browser
- Free · No Sign-Up
Scan with WeChat to share this tool
Examples, details and FAQ Worked examples, how it compares with other tools, and answers to common questions.
Examples
A shop name with accents. Most fancy text generators skip accented letters, so “Café” comes out as 𝐂𝐚𝐟é with a plain é. This tool splits é into e plus a combining acute accent (Unicode Normalization Form D, UAX #15), styles the e, and keeps the accent:
Input: Café Müller · Est. 2026
Bold Sans: 𝗖𝗮𝗳𝗲́ 𝗠𝘂̈𝗹𝗹𝗲𝗿 · 𝗘𝘀𝘁. 𝟮𝟬𝟮𝟲
Script (Cursive): 𝒞𝒶𝒻ℯ́ ℳ𝓊̈𝓁𝓁ℯ𝓇 · ℰ𝓈𝓉. 2026 (No Script (Cursive) form: 2 0 6)
Script has no digits in Unicode, so 2026 stays plain, and the card says so instead of leaving you to spot it.
Restyling a name copied from a profile. Paste 𝓙𝓾𝓵𝓲𝓪 𝓒𝓸𝓼𝓽𝓪. The Plain text card shows Julia Costa, and the styles start from that plain text:
Plain text: Julia Costa
Bold Fraktur: 𝕵𝖚𝖑𝖎𝖆 𝕮𝖔𝖘𝖙𝖆
Small Caps: Jᴜʟɪᴀ Cᴏꜱᴛᴀ
Chemistry and math notes. Subscript and superscript only exist for some letters:
Input: CO2 and x2+1
Subscript: CO₂ ₐₙd ₓ₂₊₁ (No Subscript form: C O d)
Superscript: Cᴼ² ᵃⁿᵈ ˣ²⁺¹ (No Superscript form: C)
Emoji in a strikethrough. Strikethrough and underline add a combining mark (U+0336 or U+0332) after each character. The tool adds it after each grapheme cluster (UAX #29), so Hi 👋🏽 SALE 50% becomes H̶i̶ ̶👋🏽̶ ̶S̶A̶L̶E̶ ̶5̶0̶%̶ and the waving hand keeps its skin tone. Splitting the string into UTF-16 code units instead puts the mark between the two halves of the emoji, and the copied text shows two replacement characters.
Where the letters come from
| Styles | Unicode source | Gaps |
|---|---|---|
| Bold, Italic, Bold Italic, Script, Bold Script, Fraktur, Bold Fraktur, Double-Struck, Sans-Serif (4 weights), Monospace | Mathematical Alphanumeric Symbols, U+1D400–U+1D7FF, added in Unicode 3.1 | 24 letters were already encoded as Letterlike Symbols, for example italic h is U+210E PLANCK CONSTANT and double-struck R is U+211D; the tool uses those. Italic, script and Fraktur have no digits. |
| Circled, Negative Circled, Squared, Negative Squared | Enclosed Alphanumerics (U+2460–U+24FF) and Enclosed Alphanumeric Supplement (U+1F100–U+1F1FF) | Squared and negative letters are capitals only. 🅰 🅱 🅾 🅿 are also emoji (the blood-type buttons in emoji-data.txt), so apps that draw them in emoji style show red icons. |
| Small Caps, Superscript, Subscript | Phonetic modifier letters and small capitals | No small capital X; no superscript C F Q S q or subscript w y z in Unicode before 14.0. Unicode 14.0 and 18.0 added some of them, but common fonts do not have them yet, so the tool leaves those letters plain. |
| Fullwidth | Halfwidth and Fullwidth Forms, U+FF01–U+FF5E, plus U+3000 for spaces | None for ASCII |
| Strikethrough, Underline | Combining marks U+0336 and U+0332 | Rendering depends on the font. |
Names and code points are from UnicodeData.txt for Unicode 18.0.
Bold is the one serif style with no gaps, so an offset is enough in code. For italic, script, Fraktur and double-struck you also need the 24 Letterlike exceptions.
// Mathematical bold: A–Z from U+1D400, a–z from U+1D41A, 0–9 from U+1D7CE
const toBold = (s) => s.replace(/[A-Za-z0-9]/g, (c) => {
const n = c.charCodeAt(0);
if (n <= 57) return String.fromCodePoint(0x1D7CE + n - 48);
if (n <= 90) return String.fromCodePoint(0x1D400 + n - 65);
return String.fromCodePoint(0x1D41A + n - 97);
});
toBold('Hello 42'); // '𝐇𝐞𝐥𝐥𝐨 𝟒𝟐'
Screen readers, search and plain text
The Unicode Consortium says the Mathematical Alphanumeric Symbols “are intended for use only in mathematical or technical notation; they are not intended for use in non-technical text” (UTR #25, section 2.1). In practice:
- Screen readers. A screen reader that does not normalize text may read each styled letter by its character name, or skip it. NVDA added Unicode normalization for speech in version 2024.3, citing “the bold and italic characters commonly used on social media”, and turned it on by default in 2025.1 (NVDA change log, issue #11570). Normalization does not help with small capitals or negative squared letters, which have no compatibility mapping to plain letters in Unicode. Keep names, links and key facts in plain text, and use styled letters for a word or two of decoration.
- Search and matching. 𝐁𝐨𝐥𝐝 and Bold are different strings. Software that applies NFKC normalization, such as JavaScript’s
String.prototype.normalize('NFKC'), folds most styles back to plain letters. The Plain text card uses the same NFKC mapping, plus a table for the styles NFKC leaves alone. - Storage. Mathematical letters are outside the Basic Multilingual Plane. MySQL’s
utf8mb3character set “supports BMP characters only” (MySQL 8.4 manual), so a form backed by an oldutf8column rejects them. Useutf8mb4.
How this differs from other fancy text generators
We ran the same inputs through LingoJam’s Fancy Text Generator (Bing’s first result for “fancy text”) and SymbolDb’s generator on 2026-10-01 in desktop Chromium:
Café Müllercame out as 𝐂𝐚𝐟é 𝐌ü𝐥𝐥𝐞𝐫 in both: the accented letters stayed plain. Here they keep the accent and take the style.Hi 👋🏽in their strikethrough and underline styles split the emoji into lone surrogates, which show as � when copied. SymbolDb did the same to an input of 𝐁𝐨𝐥𝐝. This page’s own previous version had the same bug; it is fixed here.- Pasting already-styled text such as 𝐁𝐨𝐥𝐝 returned it unchanged in every style on both sites. Here it is turned back into plain letters and restyled.
- Neither site says which letters a style could not convert.
Limits
- Only Latin letters, digits and a few symbols have styled forms. CJK, Hangul, Cyrillic and Greek text passes through unchanged.
- Accents are kept only in the serif, sans-serif, script, Fraktur, double-struck and monospace styles. Circled, squared, fullwidth, small-caps, superscript and subscript letters cannot carry an accent cleanly, so é stays as typed and is listed on the card.
- The Plain text card removes the strikethrough and underline marks U+0332, U+0333 and U+0335–U+0338 everywhere in the input, including any you typed on purpose.
- Whether a style shows up depends on the fonts on the reader’s device. A device without a font for a character draws an empty box in its place.
For hidden characters in pasted text, use the Invisible Character Detector. To turn styled text into JavaScript escapes such as \ud835\udc01 for code, use String Escape.
FAQ
Is fancy text a font?
No. Each styled letter is a separate Unicode character, for example U+1D401 MATHEMATICAL BOLD CAPITAL B instead of B. That is why it survives copy and paste into bios and chat boxes that have no bold button, and also why search, spell check and screen readers treat it as different text.
Why do some letters stay plain in a style?
Unicode does not encode every letter in every style. There is no small capital X, no italic digits, and no subscript b, c, d, f, g or q in fonts most people have. The card lists the letters it left as typed, so you can pick another style or rephrase.
Can I turn fancy text back into normal text?
Yes. Paste it into the box. The Plain text card shows the readable version, and every style is generated from that plain text, so you can switch a cursive name to bold in one step.
Do Chinese, Japanese or Korean characters get styled?
No. The styled alphabets in Unicode cover Latin letters and digits only. CJK and Hangul characters pass through unchanged, and the tool tells you which characters it could not style.
Is my text uploaded?
No. The conversion runs in your browser tab; the text is not sent anywhere.