FontifyText

Fancy Text Compatibility Guide

Fancy Text Compatibility: What Actually Works on Instagram, TikTok, Discord, WhatsApp, Facebook, X & Twitch

Our fancy text compatibility guide covers 8 Unicode styles — bold, italic, script, gothic, bubble, monospace, underline, and strikethrough — across 7 major platforms, plus why boxes, missing glyphs, and accessibility issues happen.

8

Text Styles Compared

7

Platforms Covered

4

Limitations Explained

Free

Cheat Sheet Download

Fancy Text Compatibility Table by Platform

Ratings reflect Unicode block coverage and widely-reported platform rendering behavior, not exhaustive device-by-device lab testing. Click a style to open its generator.

StyleExampleInstagramTikTokDiscordWhatsAppFacebookXTwitch
Bold𝗕𝗼𝗹𝗱 𝗧𝗲𝘅𝘁
Italic𝘐𝘵𝘢𝘭𝘪𝘤 𝘛𝘦𝘹𝘵
Script / Cursive𝒮𝒸𝓇𝒾𝓅𝓉 𝒯𝑒𝓍𝓉
Gothic / Fraktur𝔊𝔬𝔱𝔥𝔦𝔠 𝔗𝔢𝔵𝔱
Bubble / CircledⒷⓤⓑⓑⓛⓔ Ⓣⓔⓧⓣ
Monospace𝙼𝚘𝚗𝚘𝚜𝚙𝚊𝚌𝚎
UnderlineU̲n̲d̲e̲r̲l̲i̲n̲e̲
StrikethroughS̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶
ReliableMixedHigh risk

What the matrix tells you

Six of the eight styles are safe almost anywhere

Bold, italic, script, gothic, bubble and monospace are one Unicode character per letter, from blocks that have shipped in system fonts for well over a decade. If a style has to work, pick from those six.

Start with bold →

Underline and strikethrough are the ones that break

They are the only two built from combining marks, which the renderer has to position over the preceding letter. That is why they vary by app and why WhatsApp handles them worst. Use them for a short label you can check, not for anything load-bearing.

See the strikethrough styles →

The field matters more than the platform

The same app will accept a style in a caption and reject it in a handle. No platform in this table allows styled characters in an @handle, and Twitch will not let a display name differ from the username at all. Style the caption, the bio line or the title - never the identifier.

Instagram styles →

Rendering is the reader's problem, not yours

Every rating here describes whether the characters arrive intact. Whether they can be searched, or read aloud by a screen reader, fails separately and more often - which is the single most common reason to keep the important half of a line in plain text.

What screen readers do with it →

How these ratings were arrived at

Last reviewed 2026-08-20

What the ratings mean

Reliable means the style is a single Unicode code point per letter, drawn from a block with full A-Z coverage that has shipped in system fonts for over a decade. Mixed means it usually renders but has known failure modes on specific apps or older devices. High risk means it is frequently stripped, mangled, or blocked by the field itself.

Why two rows are riskier than the rest

Underline and strikethrough are the only styles here that are not single characters. They are ordinary letters followed by a combining mark - U+0332 and U+0336 - which the renderer has to position over the letter before it. That depends on the font and the text-layout engine, so it varies by app and device in a way a single code point does not. Every other row in this table is one code point per letter, which is why those rows behave consistently.

Twitch is a different case

Twitch does not let a display name differ from the username except in capitalisation, and its localized display name feature adds a name in Chinese, Japanese or Korean characters alongside the username rather than replacing it. So styled Unicode is not an option for a Twitch name the way it is for an Instagram or TikTok display name. The Twitch column above describes stream titles, panel text and chat, where Unicode does render.

What this is not

The platform ratings in the table are reasoned from documented Unicode block coverage and widely-reported platform behaviour. No cell in that table should be read as "verified on hardware on a date": no handset, and no Instagram, TikTok, Discord or WhatsApp account, was used to produce it. Two things below it were measured and are labelled as such — which font file supplies each letter, and what three browsers on one Windows machine actually draw. Neither of those measurements says anything about what an app does to the text after it renders, which is what most of the table is about.

Check a cell yourself

  1. Copy one styled word from the generator for the style you are checking.
  2. Paste it into the exact field you care about - a bio is not a caption, and a display name is not a chat message.
  3. View the result on a second device you did not paste from, since the sender often has fonts the reader does not.
  4. Record the platform, the field, the device and OS version, the browser or app version, and the date.
  5. Note the failure mode if there is one: boxes, stripped characters, clipped marks, or outright rejection.

Limitations

  • Platform behaviour changes without announcement, so any rating has a shelf life.
  • Rendering depends on the reader's device, not the writer's - a style that looks correct as you type it may not on someone else's phone.
  • Field type matters more than platform: the same app often accepts a style in a caption and rejects it in a handle.
  • These ratings describe display, not accessibility or searchability, which fail differently and are covered separately.

Why Each Style Behaves the Way It Does

Rendering issues almost always trace back to which Unicode block a style comes from and how complete that block is.

Bold

𝗕𝗼𝗹𝗱 𝗧𝗲𝘅𝘁

Mathematical Alphanumeric Symbols (Bold), U+1D400–U+1D433

Full A–Z, a–z, and 0–9 coverage in one contiguous block. On the Android and Windows font sets checked it has two covering fonts rather than one, so it has somewhere to fall back to — which is the measurable sense in which it is the sturdiest choice here. Reasonable for bios, captions and, where a platform allows Unicode in them at all, usernames.

Open the Bold Fonts generator →

Italic

𝘐𝘵𝘢𝘭𝘪𝘤 𝘛𝘦𝘹𝘵

Mathematical Alphanumeric Symbols (Italic), U+1D434–U+1D467

Nearly complete coverage. One quirk: italic mathematical "h" isn't in this block. It lives at U+210E (the Planck constant symbol), so generators substitute it in. On a few older fonts that one letter can look subtly different from the rest of the word.

Open the Italics Fonts generator →

Script / Cursive

𝒮𝒸𝓇𝒾𝓅𝓉 𝒯𝑒𝓍𝓉

Mathematical Script, U+1D49C–U+1D4CF (with gaps filled from Letterlike Symbols)

The script block has real gaps. Capital B, E, F, H, I, L, M, and R aren't defined in the math-script range, so generators borrow them from the older Letterlike Symbols block instead. Most modern phone fonts cover both blocks. Some desktop apps and older Android system fonts only ship one, which is where you occasionally see a stray box in an otherwise clean script word.

Open the Cursive Fonts generator →

Gothic / Fraktur

𝔊𝔬𝔱𝔥𝔦𝔠 𝔗𝔢𝔵𝔱

Mathematical Fraktur, U+1D504–U+1D537 (with gaps filled from Letterlike Symbols)

Same gap pattern as script text: capital C, H, I, R, and Z fall back to Letterlike Symbols glyphs. Fraktur is also the style most likely to get flagged or auto-stripped by display-name filters, since it can resemble an attempt to impersonate normal text.

Open the Gothic Fonts generator →

Bubble / Circled

Ⓑⓤⓑⓑⓛⓔ Ⓣⓔⓧⓣ

Enclosed Alphanumerics, U+24B6–U+24E9

One of the oldest blocks defined for this purpose, and every letter of it drew correctly in all three browsers tested. Note though that on the Windows machine checked it had only one covering font, where bold and italic had two — fewer places to fall back to, not more. The real downside isn't boxes. Screen readers often read each character out as "circled latin small letter a" instead of the plain letter, which hurts accessibility more than any other style in this table.

Open the Bubble Fonts generator →

Monospace

𝙼𝚘𝚗𝚘𝚜𝚙𝚊𝚌𝚎

Mathematical Monospace, U+1D670–U+1D6A3

Character coverage is complete and boxes are rare. The catch is cosmetic, not technical: these characters only look evenly spaced if the app's font renders them at a fixed width. Discord already has real backtick-code monospace via markdown, so pasting this style there is usually redundant and can look uneven next to Discord's own code font.

Open the Monospace Fonts generator →

Underline

U̲n̲d̲e̲r̲l̲i̲n̲e̲

Combining Low Line, U+0332 (applied after every character)

This isn't a letter substitution. It's a combining mark stacked on top of every normal character. Short strings usually display fine. Long strings risk clipped marks (each one counts against character limits), marks dropped by text normalization, or removal by anti-spam filters that treat repeated combining marks as a zalgo pattern. Cursor placement and editing inside the field can also behave oddly.

Open the Underline Text generator →

Strikethrough

S̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶

Combining Long Stroke Overlay, U+0336 (applied after every character)

Same combining-character mechanics and the same risks as underline text. WhatsApp is the most likely to disappoint here, since it already has its own native ~strikethrough~ markdown. Pasted Unicode combining marks can render inconsistently across WhatsApp mobile, desktop, and Web depending on the client version.

Open the Strikethrough Text generator →

Why a Box Appears, and Which Font Is Really Doing the Work

Measured 2026-09-28 against 10 font files

A box — the empty rectangle, sometimes called tofu — is not the platform refusing your text. It means the device looked through the fonts it has and none of them contained a drawing for that character, so it drew a placeholder instead. That part of the question does not need a lab: it can be answered by reading the fonts.

We read the character tables out of the fonts Android ships and the fonts installed on a Windows machine. Every style in the table above is covered by at least one font on both — so on a current Android phone or Windows machine none of them should be a box. Those are the two font sets that were read; an iPhone or a Mac may differ, and this check cannot say. The interesting part is which font covers them:

StyleOn Android, drawn byOn Windows, drawn by
BoldNoto Sans MathSegoe UI Symbol, Cambria Math
ItalicNoto Sans MathSegoe UI Symbol, Cambria Math
ScriptNoto Sans MathSegoe UI Symbol
GothicNoto Sans MathSegoe UI Symbol, Cambria Math
BubbleNoto Sans Symbols, Noto Sans JPSegoe UI Symbol
MonospaceNoto Sans MathSegoe UI Symbol, Cambria Math
UnderlineNoto Sans and every other font checkedSegoe UI, Arial, Calibri, Cambria Math
StrikethroughNoto SansSegoe UI, Arial, Calibri, Cambria Math

Not one of the lettering styles comes from the interface font. Bold, italic, gothic and monospace arrive from a maths font; bubble letters from a symbol font, which is a different file again. Two things follow, and they explain most of what people report. A styled word can look subtly mismatched beside ordinary text, because it is literally set in another typeface. And an app that pins one font to a field, rather than letting the system fall through to its fallbacks, has nowhere to find these characters — which is when the boxes appear even though the device owns a font that could draw them.

Underline and strikethrough behave differently again: they are ordinary letters plus a combining mark, so every font checked can draw them. Their failure mode is not a box but a misplaced line.

If you are seeing boxes right now

  1. Check the same text on a second device. If it is fine there, the problem is the reader’s fonts, not your text.
  2. Try bubble letters instead of a maths-block style, or the reverse — they come from different font files, so one often survives where the other does not.
  3. If only one app shows boxes, that app is pinning a font to the field. Nothing in the text can fix that; use plain letters there.
  4. If the boxes are only on underline or strikethrough, the mark is being mispositioned rather than missing — switch to a style that needs no combining mark.
  5. Keep anything that must be read, searched or typed back in ordinary letters regardless.

What this does not cover. iOS and macOS fonts are not available to this check, and nothing here describes what a platform does after rendering — stripping a character, rejecting a field, or normalising the text. Those remain reasoned, or checked by hand using the steps above.

What Three Browsers Actually Drew

Measured 2026-09-30 · Windows 11 Pro 10.0.26200, desktop

Reading a font file tells you a glyph exists. It does not tell you the browser will find it. So the next step was to put every letter of every style on a real page, in Google Chrome 154, Microsoft Edge 154 and Chromium 149, draw each one, and compare it against the box.

972 glyphs were drawn and 0 were boxes. A clean result is only worth reading if the test could have failed, so every run was also handed three Unicode code points that have never been assigned and therefore cannot be in any font. All three came back as boxes, in all three browsers. The test can see a box; there were none to see.

  • All 52 letters of bold, italic, script, gothic, bubble and monospace drew a real glyph in all three browsers. 972 observations, zero boxes.
  • The two combining-mark styles added no width of their own — the mark sits over the letter rather than beside it — and the mark was visibly drawn, not silently dropped.
  • Styled text read back from a DOM selection code point for code point, unchanged, for all eight styles. That is the step a copy is built on.

The check most people write for this is wrong

There is a well-travelled trick for detecting a missing character: measure how wide it is, and compare that to the width of the box. It is quick, it needs no canvas, and it is the first thing this test did. It was also wrong, and worth showing why.

The box has one advance width — 64.5625px at a 100px font size in Chromium 149, Windows 11. Real letters are free to share it. Of 312 styled letters checked, 5 sit within half a pixel of the box while drawing perfectly:

LetterCode pointStylePlain letterMeasured width
𝐕U+1D415BoldV64.65625px
𝑋U+1D44BItalicX64.515625px
𝒶U+1D4B6Scripta64.359375px
ℭU+212DGothicC64.609375px
𝔍U+1D50DGothicJ64.703125px

Five of 312 styled letters measure within half a pixel of the box. A width-based check calls all five missing; all five draw correctly. If you are testing whether a character will show up, compare what is drawn, not how wide it is. The results above therefore come from comparing pixels: each letter is drawn into a canvas and its image compared with the box’s. Two characters that produce the same pixels are the same glyph, and no width coincidence survives that.

What this does not cover. One operating system, and three browsers that all use the same engine and the same installed fonts. Their agreement rules out a bug in one browser; it is not evidence about a different engine, and none about iOS, macOS or Android, which were not tested. Nothing here describes what a platform does to text after it renders — stripping it, rejecting a field, or normalising it.

Unicode Homoglyphs: Why Styled Text Is Not the Lookalike Problem

Measured 2026-10-01 · Chromium 149, Windows 11

A homoglyph is a character that reads as a different one. The word gets attached to styled text a great deal — 𝐕 is not V, so surely it is a homoglyph of V — and it is worth measuring rather than arguing about, because the answer changes what you should actually worry about.

Each character drawn at 100px, centred on the baseline, and compared with the plain ASCII letter it imitates. The figure is the share of inked pixels that differ: 0% means the two were drawn as the same shape.

Not one of 416 styled letters was drawn as the same shape as the plain letter it stands for. 36 of 39 cross-script lookalikes were. Styled alphabets are built to look different — that is the entire point of them — so they make poor disguises. The characters that genuinely deceive are ordinary letters from another script, and most people have never been shown one.

The styles on this page

StyleAverage differenceClosest letter
Fullwidth41.2%21.4%
Bold42.4%27%
Monospace44.6%16.2%
Italic58.1%41.8%
Double-struck64.8%43.4%
Gothic66.1%31.9%
Script71.9%55.6%
Bubble75.3%57.4%

Letters from another script

ScriptCheckedAverage differenceIdentical
Cyrillic210%21
Greek142.5%13
Latin extended44.4%2

Eight of them, so you have seen one

Each pair below was drawn as the same pixels on the machine tested. The left character is not a Latin letter.

LookalikeCode pointWhat it actually isPasses as
аU+0430Cyrillic small aa
еU+0435Cyrillic small iee
оU+043ECyrillic small oo
рU+0440Cyrillic small erp
сU+0441Cyrillic small esc
οU+03BFGreek small omicrono
ΙU+0399Greek capital iotaI
ԁU+0501Cyrillic small komi ded

What this means in practice

  • You cannot catch these by looking. That is the measured finding, not an opinion — the shapes are the same shapes. Checking a link or a name by eye is not a check.
  • This is why handles reject Unicode. A platform that allows a non-Latin letter in a username allows two accounts that look identical. Every platform in the table above refuses styled characters in a handle, and that restriction is doing real work.
  • Browsers already defend against it in addresses. A domain mixing scripts is shown as its punycode form — the xn-- version — rather than the letters it would like to show you. If an address bar looks like that, this is why.
  • To check, decode rather than squint. Read the code points instead of the shapes — a Unicode inspector or an editor’s hex view will show you anything outside the Basic Latin range. The full method, and the reasons the obvious shortcuts fail, are in the guide linked below.
  • Styled text is not a disguise. Nothing generated on this site was drawn as a plain letter in this test. It is visibly decorated, so it fails as an impersonation tool, which is the one job it is accused of being good at.

How this was kept honest. A letter compared with itself reads 0%, and letters nobody confuses — o against W, i against M, l against g — read 84% to 94% apart. A comparator that returned a plausible figure for everything would have measured nothing.

What this does not cover. One font stack, on one machine. A different font can pull a pair closer together or further apart, and a few of these shapes do differ in some typefaces — which is exactly why none of this should be relied on by eye. It is also a statement about shapes only: it says nothing about which of these characters a given platform will accept or reject.

This section answers whether the styles on this page are a risk. If what you actually need is to check something that was sent to you — a name, a link, a sender — that is a different job, and spotting a lookalike character covers it: all 36 pairs by code point, what your browser already does, and how to decode text rather than squint at it.

Which Style to Use: Work Down the List

Work down from the top. The first question that matches your case gives the answer; you do not need the ones below it.

  1. 1. Does the text have to be typed back, searched for, or read aloud?

    Yes — Use plain letters. No style in this table survives any of those three — the characters are different code points, so search will not match them and a screen reader will not read them as words. This outranks every other consideration.

    No — Carry on to the next question.

  2. 2. Is it going in a username, handle or @mention?

    Yes — Use plain letters. Not one platform in the table above permits styled characters in a handle, and the reason is the lookalike problem below, not fussiness. Style the display name instead, where the platform keeps them separate.

    No — Carry on.

  3. 3. Will it be read on a device you cannot check?

    Yes — Pick from bold, italic, gothic or monospace, and keep the important words plain. Those four had two covering fonts on both font sets read here; script and bubble had one, so they have less to fall back on. Put the style on the decoration, not on the message.

    No — Carry on.

  4. 4. Do you need an underline or a strikethrough specifically?

    Yes — Use the app’s own formatting if it has any — WhatsApp, Discord and Slack all do. The Unicode versions are a letter plus a combining mark, which is the one construction in this table that depends on the text engine rather than the font, and the only one whose failure is a misplaced line rather than a clean box.

    No — Carry on.

  5. 5. Is it a short decorative line you can look at after posting?

    Yes — Use whichever style you like, then look at the posted result on a second device. Everything in this table drew correctly in the browsers tested; the variable is the reader’s device, and the only way to know is to look.

    No — If none of the above fits, default to plain letters with one styled word for emphasis. That is the choice that degrades most gracefully when something in the chain does not cooperate.

Boxes, Missing Glyphs, Searchability & Accessibility

Four limitations apply to fancy Unicode text no matter which platform you're posting on.

Why you sometimes see a box (□) instead of a letter

A box, sometimes called "tofu," appears when the viewer's device has no font installed for that exact Unicode code point. Fancy text styles aren't new letters. They're separate, lookalike characters from specialized Unicode blocks, mostly Mathematical Alphanumeric Symbols and the older Letterlike Symbols block. Reading the font files themselves showed that none of these letters come from the font a phone or browser uses for its interface — every one is served by a maths or symbol fallback, such as Noto Sans Math on Android or Segoe UI Symbol on Windows. That is why a box is a property of the reader's device and not of the text. It also shows which styles have the least margin: on the Windows machine checked, bold, italic, gothic and monospace were each covered by two fonts, while script and bubble were covered by one. Those two are not missing letters there — they simply have no second font to fall back to if the first is absent.

Why underline and strikethrough text are the least stable

Underline and strikethrough work by inserting an invisible combining character after every visible letter, instead of swapping in a new letter shape. That makes them fragile in three ways. Character-limit counters count each combining mark separately, so a caption can run out of room faster than it looks. Some apps run text through Unicode normalization that merges or drops combining marks. Anti-spam filters sometimes flag long runs of combining marks as a zalgo/glitch-text pattern and strip or reject them outright.

Fancy text is not searchable the way normal text is

Every style in this table uses a different set of Unicode code points than plain A-Z. A search engine, in-app search bar, or hashtag index matching the word "bold" won't match "𝗯𝗼𝗹𝗱" unless the platform specifically normalizes styled Unicode back to plain letters before indexing, and most platforms don't. That means fancy text in a bio or caption headline generally won't surface in on-platform search. Using it for an entire caption, instead of just a short stylized hook, can hurt discoverability.

Accessibility limitations for screen reader users

Screen readers pronounce characters by their formal Unicode name, not their visual shape. Circled/bubble letters often get read out as "circled latin small letter a," character by character, instead of the word itself. Mathematical bold, italic, script, and fraktur letters may be read with their formal Unicode names, or skipped, depending on the screen reader's symbol-handling settings. Combining marks like underline and strikethrough can be announced as separate characters or force words to be read letter by letter. Treat fancy text as a short decorative accent, not a substitute for body copy that needs to stay accessible.

Download the one-page cheat sheet

The full compatibility table above, condensed into a single printable PDF — handy for content calendars, moderator FAQs, or a quick reference when you're not sure a style will render.

Download PDF cheat sheet

Frequently Asked Questions

Which fancy text style is safest to use everywhere?

Bold, italic and bubble/circled text have the most complete Unicode coverage, and all three drew correctly in every browser tested here. Across Instagram, TikTok, Discord, WhatsApp, Facebook and X they are also the styles most widely reported to survive intact — reported, not tested on those apps by us. If you want one style that is least likely to cause trouble, pick one of those three, and check it in the field you actually care about.

Why does my fancy font look fine on my phone but broken for someone else?

Rendering depends on the fonts installed on the viewer’s device and the app’s own font stack, not on the text itself. The same Unicode characters can display perfectly on a recent iPhone or Android phone and show as boxes on an older device, a desktop browser missing certain fonts, or a third-party client with a limited font set.

Can I use fancy Unicode fonts in my username?

It depends on the platform and the specific field. Bio and caption fields are usually permissive. Username/handle fields are frequently restricted to plain ASCII on Instagram, TikTok, and Facebook, while display-name fields (which are separate from the handle) are often more permissive but may still filter out styles like fraktur/gothic that resemble impersonation attempts.

Will people be able to find my post if I use fancy text in the caption?

Only partially. Fancy characters are different code points than plain letters, so in-app search and hashtags matched against plain text usually won’t surface fancy-text captions. Keep hashtags and key search terms in plain text, and use fancy styles for a short decorative hook instead.

How can I tell whether a character will show as a box before I post it?

Look at it, on the device the reader will use — there is no shortcut that works from your own screen. If you are checking this in code, do not compare the character’s width to the width of the box: real letters share that width. Measuring 312 styled letters in Chromium on Windows found five that sit within half a pixel of the box while drawing perfectly, among them mathematical bold V and fraktur C. Draw the character and compare the pixels instead, or read the font’s character table directly.

Are fancy Unicode fonts homoglyphs, and are they a security risk?

They are lookalike characters in the sense that they stand in for letters, but they are poor ones, and that is measurable. Drawing 416 styled letters and comparing each with the plain letter it represents found none drawn as the same shape — the closest style still differed by 41% of its pixels on average, because looking different is the whole purpose. The characters that genuinely deceive are ordinary letters from other alphabets: of 39 Cyrillic, Greek and Latin-extended lookalikes checked, 36 were drawn pixel-identical to a Latin letter, including Cyrillic а, е, о, р and с. That is why platforms refuse non-Latin characters in usernames and why browsers show mixed-script domains in punycode. You cannot spot those by eye; decode the text instead of inspecting it.

Why do underline and strikethrough text break more often than other styles?

They’re built from combining characters stacked on top of normal letters rather than single lookalike letters. That makes them more likely to be clipped by character limits, altered by text normalization, or stripped by anti-spam filters — especially in WhatsApp, which also has its own native strikethrough formatting that can conflict with pasted Unicode versions.

Generate any of these styles now

Every style in the table above is available in the free generator — type once, preview all styles, and copy the one that fits your platform.