Skip to content
Part of: Fonts
General

Why Your Fancy Text Shows as Boxes — and How to Fix It

Fancy text shows as boxes because the viewer's device has no glyph for that Unicode character — fix it by choosing well-supported styles like sans-serif bold and keeping critical info in plain text.

Shreyas Bagal·Jun 18, 2026·7 min

Fancy text shows as boxes because the viewer's device has no glyph for that Unicode character — fix it by choosing well-supported styles like sans-serif bold and keeping critical info in plain text.

Key takeaways

  • A box (▯) or square — called "tofu" — means the device or app has no glyph installed for that Unicode character. The character is fine; the font on that device just can't draw it.
  • It looks perfect on your phone and broken on someone else's because glyph support varies by OS, app, and font version — old Android and some niche apps are the usual offenders.
  • Sans-serif bold (𝗯𝗼𝗹𝗱) and italic are the single most reliable styles. Small caps (ꜱᴍᴀʟʟ ᴄᴀᴘꜱ) are mostly safe but draw a couple of letters from rarer blocks and can still tofu on older Android. Riskiest are decorative sets like double-struck, fraktur/gothic, and ornate script.
  • Fix it by switching to a safer style, previewing on a second device before publishing, and never putting links, prices, or dates in fancy text.
  • A plain ? means the character was dropped in an encoding step; the � replacement character means a decoder hit invalid bytes; a box means the character is intact but the font lacks a glyph. The practical fix is the same.
  • Glyph rendering is a separate problem from accessibility — boxes are about whether text shows at all, screen readers are about whether it can be read aloud.
Why Your Fancy Text Shows as Boxes — and How to Fix It

Definition

Your bio looked flawless when you built it. Then a friend texts you a screenshot from their phone and half of it is empty rectangles. Or a follower comments that your TikTok username is "just boxes." The text is there — you can see it — but on their device it collapsed into ▯▯▯.

This is one of the most common surprises with Unicode styled text, and it's also one of the most fixable. The short version: the box doesn't mean your text is broken. It means the device looking at it doesn't have the right glyph to draw that character. Here's what's actually happening and how to stop it.

What does the box (▯) actually mean?

That box has a nickname: tofu. When a device receives a character its installed fonts don't know how to draw, it has nothing to paint — so it falls back to a placeholder rectangle. (The font that started shipping these fallbacks is literally named "Noto," short for "no more tofu.")

The key thing to understand is why there's no glyph to draw. The "fonts" from any font generator aren't fonts at all — they're real, distinct Unicode characters. When you make bold text, your normal a (code point U+0061) gets swapped for 𝗮 (U+1D5EE), a completely separate character that's drawn to look bold. The mechanism behind that swap is covered in how text formatters and generators work, but the part that matters here is simple: these are individual characters, and every character needs a glyph — a drawing — in the viewer's font to appear on screen.

If the viewer's device has a glyph for 𝗮, it shows the bold letter. If it doesn't, it shows tofu. The character arrived perfectly intact; the device just can't render it.

Why does it look fine on my phone but boxes on someone else's?

Because glyph support isn't universal — it depends on the device, the operating system, the app, and even the font version. Your phone happens to have a font that includes the styled characters you used. Someone else's phone might not.

A few things move that needle:

  • OS and version. Newer Android and iOS ship fonts with broad Unicode coverage. Older Android (think a budget phone running an outdated version) often lacks glyphs for the rarer styled ranges.
  • The app, not just the phone. Some apps render text using the system font; others bundle their own. An app with a limited bundled font can show tofu even on an up-to-date phone.
  • Where the text lives. A game username field, an embedded webview, or an older desktop client may use a more limited font than the same person's main browser.

So "it works on my phone" is genuinely true — and genuinely useless as a test, because you're checking the one device guaranteed to support the style you just picked. Your audience is a spread of devices, and the rarer the style, the more of them fall off.

Why does some text show as boxes and other text shows as question marks?

These look similar but they fail at different stages, and it's worth being precise about which is which.

A box (▯ or □) means the character is intact but the font has no glyph for it — a font-coverage gap at the very last step, the drawing.

A plain question mark (?) usually means the character was dropped earlier, in an encoding step that couldn't represent it (think a pipeline that isn't UTF-8 forcing the character down to a charset that has no slot for it). It got substituted before it ever reached a font.

The replacement character (�) is different again: it means a decoder hit a sequence of bytes it couldn't interpret as valid text, so it stamped that placeholder in. The character wasn't styled away — the bytes themselves arrived garbled.

For everyday purposes you don't need to diagnose which one you're seeing, because the practical fix is identical: use characters with broad support, and keep anything load-bearing in plain text. That's also the length-and-counting side of the same trade-off — fancy characters take up more space and break counters too, which we cover in how fancy text inflates your character count. Choose well-supported characters and the failure, whichever flavor it is, mostly disappears.

Which fancy text styles are safest?

This is the practical heart of it. Not all styles are equally risky, because not all of them live in equally well-supported parts of Unicode.

Safest — the widest support available:

  • Sans-serif bold: 𝗧𝗵𝗶𝘀 𝗶𝘀 𝘀𝗮𝗳𝗲
  • Sans-serif italic / bold italic: 𝘵𝘩𝘪𝘴 𝘵𝘰𝘰

These come from the contiguous Mathematical Alphanumeric Symbols block, which ships with most modern system fonts. They render on the large majority of modern devices, which is why they're the workhorses of stylish text generators and the styles a good Instagram bio leans on.

Mostly safe, with a caveat — small caps:

  • Small caps: ꜱᴍᴀʟʟ ᴄᴀᴘꜱ

Small caps look like a single tidy style, but they're actually stitched together from scattered phonetic ranges (IPA Extensions, Phonetic Extensions, and Latin Extended-D) rather than one coherent block. Most letters are well covered, but a few — notably small-cap S (ꜱ, U+A731) and small-cap R — are drawn from rarer blocks that some older or budget Android fonts simply don't include. So small caps render well on most modern devices but can still tofu on exactly the phones this article warns about. If you need maximum reliability, sans-serif bold or italic is the single safest choice; reach for small caps when the look matters more than the last few percent of coverage.

Riskier — show tofu more often:

  • Double-struck (blackboard bold): 𝕥𝕙𝕚𝕤 𝕞𝕒𝕪 𝕓𝕠𝕩
  • Fraktur / gothic: 𝔱𝔥𝔦𝔰 𝔬𝔣𝔱𝔢𝔫 𝔟𝔯𝔢𝔞𝔨𝔰
  • Ornate cursive script and rare decorative sets: 𝓽𝓱𝓲𝓼 𝓲𝓼 𝓹𝓻𝓮𝓽𝓽𝔂 𝓫𝓾𝓽 𝓻𝓲𝓼𝓴𝔂

The decorative styles in a fancy text generator are gorgeous and absolutely worth using — you just want to know they carry more rendering risk, so you preview them rather than trusting them blind. A general rule: the more unusual and ornamental a style looks, the rarer its code points, and the more devices lack the glyph.

How do I fix fancy text that shows as boxes?

Four moves, in order of impact.

1. Switch to a safer style. If a decorative script is boxing out, the same words in sans-serif bold or italic will render on the large majority of devices. You lose a little flair and gain the widest support available. Generate a few options at once with an all-styles text generator and pick the most-supported look that still fits the vibe.

2. Preview on a second device — ideally an older or different-OS one. This is the single most reliable check. Paste your styled bio or caption, then open it on another phone (especially an Android device, or a friend's) before you commit. What you see is what a chunk of your audience sees. The bundled-font apps and game username fields are the exception that proves this rule — they can show tofu even on current phones, which is exactly why you preview rather than assume.

3. Keep critical information in plain text — always. Never run a link, a price, a date, a discount code, or a deadline through a generator. If those characters tofu out, the cost isn't aesthetic — it's a missed sale or a broken instruction. Style the decorative words; leave the load-bearing ones plain. This is also why you shouldn't push @handles, #hashtags, or URLs through a generator: beyond rendering risk, some apps stop treating them as tappable links once they're styled.

4. Use real line breaks instead of decorative spacing tricks. If you're stacking styled text to lay out a bio, use a proper Instagram line break tool rather than padding with rare blank-space characters that can themselves render as boxes.

Isn't this the same as the accessibility problem?

No — and it's worth keeping them separate, because they fail differently and need different fixes.

Tofu is a rendering problem: can the device draw this character at all? It affects everyone whose device lacks the glyph, sighted or not. Accessibility is a reading problem: even when a styled character renders perfectly, a screen reader may announce it letter-by-letter or skip it, because to assistive tech 𝗯𝗼𝗹𝗱 is a string of math symbols, not the word "bold." The two problems happen to share one fix — keep essential information in plain text — but here that fix earns its place purely for the rendering reason: plain characters have a glyph on every device. The screen-reader mechanics are a separate story, covered fully in are Unicode fonts accessible and the deep dive on screen readers and fancy text. Style for emphasis and decoration; never style the things that have to work for everyone.

The one-line version

A box means the viewer's device has no glyph for that Unicode character — not that your text is broken. It looks fine on your phone because your phone supports that style; it boxes on others because glyph support varies. Lean on sans-serif bold and italic (with small caps as a mostly-safe second tier), preview on a second device, and keep links, prices, and dates in plain text. Do that, and "why is my fancy text not showing" stops being a problem.

Ready to put this into practice?

Browse all formatters

Spotted an error? Email hello@boldlytype.com — we update guides quarterly and welcome corrections.

Frequently asked questions

Latest questions readers ask us about this topic.

Why does my fancy text show as boxes (▯) on some phones?

Because that device's installed fonts have no glyph to draw that Unicode character. Styled "fancy" text is made of real but uncommon Unicode characters, and every character needs a matching glyph in the viewer's font to appear. When the glyph is missing, the device falls back to a placeholder rectangle — nicknamed "tofu." The character arrived intact; the device simply can't render it. Switching to a well-supported style fixes it.

Why does fancy text look fine on my phone but show squares on someone else's?

Glyph support isn't universal — it varies by device, operating system, app, and font version. Your phone has a font that includes the styled characters you used; their phone (often older Android or a niche app with its own bundled font) may not. That's also why testing on your own phone proves nothing: it's the one device guaranteed to support the style you just chose. Preview on a second, different device instead.

Which fancy text styles are safest from boxing out?

Sans-serif bold (𝗯𝗼𝗹𝗱) and italic are the most reliable, because they come from a single contiguous Unicode block that most modern fonts include. Small caps (ꜱᴍᴀʟʟ ᴄᴀᴘꜱ) are mostly safe but draw a couple of letters from rarer phonetic blocks, so they can still tofu on older Android. The riskiest styles are rare decorative ones — double-struck, fraktur/gothic, and ornate script — which use uncommon code points many fonts lack.

What is Unicode tofu?

"Tofu" is the nickname for the empty box (▯ or □) a device shows when it receives a character its fonts can't draw. The name inspired Google's "Noto" font family — short for "no more tofu." It's a font-coverage gap, not a corrupted character: the Unicode character is valid and intact, but the viewing device has no glyph for it, so it paints a placeholder rectangle instead of the intended symbol.

How do I fix fancy text that shows as boxes?

Switch to a better-supported style — sans-serif bold or italic instead of script or double-struck. Preview your text on a second device, ideally an older or different-OS phone, before publishing. Keep links, prices, dates, and other essential info in plain text so a rendering failure never breaks something important. Generate several style options at once and pick the most widely-supported look that still fits your aesthetic.

Why does some text show question marks instead of boxes?

A box means the character is intact but the font has no glyph for it. A plain question mark (?) usually means the character was dropped in an encoding step that couldn't represent it, while the � replacement character means a decoder hit bytes it couldn't read as valid text. All three point to a system that couldn't fully handle that character. The fix is the same: use characters with broad support and keep critical information in plain text.

The sub-questions readers ask next — answered, with where to go.

They're symbols, not fonts. A 'fancy font' generator doesn't change your typeface — it swaps each letter for a look-alike character from a different Unicode block (𝗮 is a different code point than a). Because the styling lives in the characters themselves, it travels with the text when you copy and paste, which is why it survives into Instagram or LinkedIn where real custom fonts don't. The trade-off is that the text is no longer plain letters, so treat it as decoration for short phrases, not body copy.

Try every style at once

That's a missing-glyph fallback. When an app or older device doesn't have a glyph for a rarer Unicode style (some scripts and decorative blocks), it renders a box (▯) or question mark instead. Sans-serif bold and italic are the most widely supported; bold script, fraktur and double-struck are the most likely to break on older Android keyboards or low-end devices. Always preview on a phone before you post, and keep the safe styles for anything that matters.

Use the safe social styles

Yes. Neither editor has a bold button because both are plain-text by design, but both render Unicode. Generate the bold text, copy it, and paste it straight into the bio field — the bold survives. Keep it to one emphasised phrase rather than a whole bold bio, since a wall of bold reads as shouting and is harder for screen readers. Links and @handles should stay in plain characters so they remain tappable.

Open the bold generator

Bold Unicode (𝗯𝗼𝗹𝗱) is for emphasis and hooks — the first thing a reader's eye lands on. Italic Unicode (𝘪𝘵𝘢𝘭𝘪𝘤) signals nuance: titles, product names, quotes and wry asides. Both come in sans and serif variants, and there's a combined sans bold-italic for text that's both. The rule is the same for each: use them on a single word or phrase, never for full paragraphs, and never on links or hashtags.

Open the italic generator

Related in this series

See all in Fonts

Explore the topic cluster

More tools and guides across this topic cluster.

Get the next post.

Craft notes on writing for the internet. One short email, every other week. No spam.

Keep reading