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 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.