Why Your Fancy Font Turns Into Boxes

The boxes aren't a bug in your text. They're a missing glyph on the reader's device. Once you understand that, the fix is simple: choose styles that everyone's phone can actually draw.

Accessibility & Compatibility ⏱ 8 min read Style safety tiers
A styled letterform on the left degrading into empty tofu boxes on the right, showing a glyph the device cannot draw.

Key Takeaways

Boxes Are the Reader's Device Talking, Not Yours

You styled your name, it looked perfect, and a friend replied: "it's just squares for me." The instinct is to assume you did something wrong. You didn't.

Here is the one fact that explains the whole thing: the styled "fonts" you copy from a generator are not fonts at all. They're ordinary text made of special Unicode characters — the bold "𝗮" is a different character from a normal "a," not the same letter wearing a costume. When you paste them, the characters travel with your message. What happens next is entirely up to the reader's device.

Every device keeps a set of fonts that map characters to little pictures called glyphs. When a device meets a character it has no glyph for, it draws a placeholder: the .notdef box — □ or ▯ — nicknamed "tofu" (the font family Noto is literally named "no more tofu"). So the box isn't your text failing. It's the reader's device saying "I received this character, but I don't own a picture for it."

The Failure Is Invisible to the Author

This is what makes boxes so frustrating: you can't reproduce the problem on your own phone. Your device has the glyph, so it renders perfectly for you, every time. Meanwhile a chunk of your audience — often older Android phones, certain web browsers, or specific apps — sees a row of squares.

That asymmetry is why "my bio looks broken to some people" is one of the most-asked questions across Discord, Instagram and TikTok. The author and the audience are looking at the same characters through different fonts.

What you see: 𝕬𝖊𝖘𝖙𝖍𝖊𝖙𝖎𝖈  ·  What an older Android sees: ▯▯▯▯▯▯▯▯▯

The Style Safety Tiers

Not all styles are equally risky. Support tracks how widely a style's underlying Unicode block is shipped in device fonts. Here's the hierarchy, safest first.

TierStylesWhyUse for
1 · UniversalBold & italic sans, bold/italic serif, 𝚖𝚘𝚗𝚘, small capsMathematical Alphanumeric block — shipped almost everywhereAnything important: names, hooks, CTAs
2 · Mostly safeFullwidth, Ⓒⓘⓡⓒⓛⓔⓓ, monospace symbolsCommon blocks, occasional gaps on very old devicesDecorative emphasis, captions
3 · Risky𝔉𝔯𝔞𝔨𝔱𝔲𝔯, 𝕯𝖔𝖚𝖇𝖑𝖊-𝖘𝖙𝖗𝖚𝖈𝖐, enclosed/squared, decorativesSparse coverage on older Android & some appsThrowaway flair only — never load-bearing
4 · FragileZ̸̢a̵l̷g̶o, obscure symbol runs, regional decoratives ꧁☬꧂Combining marks & rare glyphs break or look brokenOne-off jokes; expect breakage

The rule of thumb: the prettier and more unusual a style looks, the fewer devices can draw it. Decorative cursive and blackletter are exactly the styles people reach for in bios — and exactly the ones most likely to turn into tofu.

Three Rules That Keep Your Text Readable

1. Never style a load-bearing word alone

If a word must be read — your name, a link, a price, a call to action — keep it in plain text or a Tier 1 style. If it turns to boxes, your message still survives.

Fragile 𝕯𝕸 𝖒𝖊 𝖙𝖔 𝖔𝖗𝖉𝖊𝖗 Safe 𝗗𝗠 𝗺𝗲 to order

2. Keep meaning in the plain layer

Treat styling as a topcoat, not the structure. A reader who sees only boxes should still get your point from the unstyled words around them.

3. Apply the 2-device test

Before a style goes into a bio, view it on a second device — ideally an older Android phone, the worst-case renderer. If it survives there, it'll survive almost anywhere.

Boxes vs Question Marks vs Garbled Text

□ Box (tofu)

The character arrived fine; the device has no glyph to draw it. A font problem. Fix it by choosing a safer style.

? or �

The character was lost or mis-decoded in transit. A data problem. The styling won't help — the text itself changed.

é garbage

"Mojibake" — bytes read with the wrong encoding. Also a data problem, usually from a broken copy/export step.

This guide is about the first one — a font problem you fix by choosing a safer style. The other two are data problems: the characters themselves changed in transit, so no style choice will bring them back.

Where Boxes Show Up Most

  • Discord — styled names render for most desktop users, but older Android clients and screen readers struggle. See Discord text formatting decoded.
  • Instagram & TikTok — bios render via the viewer's system fonts, so the same bio can look crisp on iPhone and broken on a budget Android.
  • Older Android, generally — the single most common source of tofu. If you only test on an iPhone, you're testing the easy case.
  • iPhone specifically — testing on iOS isn't a free pass. Apple's system font, San Francisco, doesn't cover the same Unicode ranges Google's Noto font does on Android, so certain decorative and rare-block styles that render fine on Android can still turn to boxes on iPhone. Treat both platforms as separate tests, not one stand-in for the other.
Your characters are never broken.
The reader's device simply ran out of pictures.

Style for the worst phone in the room, not the best.

Generate text in a device-safe style

Pick a Tier 1 style — bold, italic or small caps — and it'll render almost everywhere. Type it once, copy it, paste it anywhere.

Open the Text Generator →
Instagram TikTok Discord LinkedIn X WhatsApp
FAQ

Frequently Asked Questions

Because the boxes are drawn by the reader's device, not yours. A styled "font" is really a set of special Unicode characters. Your phone happens to have a font that can draw them, so you see them perfectly. When a friend's device has no glyph for a character, it falls back to the .notdef box (□), often called "tofu." Your text is intact — their device just can't paint it.

Bold and italic sans-serif, bold/italic serif, and small caps are the safest — they map to the Mathematical Alphanumeric block that nearly every modern device ships a glyph for. Monospace, fullwidth and circled styles are usually fine. Fraktur (blackletter), double-struck, heavily decorative and zalgo styles are the most likely to break on older Android and some apps. Make a safe one with the text generator.

Pick a Tier 1 style for anything important, keep the meaning readable even if the styling drops, and never put a load-bearing word (a name, link, or call to action) in a risky style alone. Then test on a second device — ideally an older Android phone — before you commit it to a bio.

No. A box (tofu) means the character arrived fine but the device has no glyph to draw it. A question mark or � means the character was lost or mis-decoded along the way (an encoding problem). Garbled "mojibake" means the bytes were read with the wrong encoding. Boxes are a font problem; the others are data problems.

It's usually the same tofu problem in a different shape. Shade and block characters (░ ▒ ▓ █) are real, valid Unicode symbols — often used deliberately for retro UI, glitch effects, or loading-bar aesthetics — but on a device or app with a thin font, they can render as generic boxes instead of their intended shading. If you typed or copied one on purpose, it isn't broken; check it on another device before assuming it failed.