You paste a neat little ✿ into your Instagram bio, and on your friend's phone it shows up as an empty box. Or your "𝓯𝓪𝓷𝓬𝔂" Discord nickname quietly reverts to plain letters. Text symbols are supposed to be simple, so why do they break?
Text symbols are real Unicode characters, not images. That's what makes them so useful. It also means whether they show up depends on fonts, platforms and filters you don't control. Once you know the four ways they fail, it's easy to pick symbols that work for nearly everyone.
Why symbols work at all
Every character you type, whether A, ♥ or →, is a code point in the Unicode standard. ♥ is U+2665, "Black Heart Suit". ★ is U+2605, "Black Star". When you paste one into a bio, a chat or a document, you're pasting text, just like a letter. That's why it stays selectable and searchable, and why it scales with the font size.
The catch is that a character in the text is one thing, and a font that can draw it is another. The text carries the code point. The viewer's device has to supply the drawing.
Failure 1: the empty box ("tofu")
That empty rectangle, □, often nicknamed "tofu", means the character is there but the current font has no drawing for it. Nothing is corrupted. Copy that box and paste it somewhere with better font support, and the symbol often reappears.
Tofu is most common with:
- Rare ornaments and dingbats from little-used Unicode blocks.
- Kaomoji that borrow Japanese, Thai or Kannada characters. One missing glyph breaks the whole face.
- Newer emoji on phones that haven't been updated in a while.
The fix is to choose more widely supported characters. Classic ones like ♥ ★ ✓ → ✿ ☾ have been in Unicode for decades and display almost everywhere. There's a longer fix-it checklist in the symbol not showing guide, including which fonts to switch to in Google Docs or Photoshop.
Failure 2: the heart changes color
Some characters have two looks: a flat text style and a colored emoji style. The red ❤️ you see in most chat apps is the same base character as the black ❤ (U+2764). It's followed by an invisible "variation selector" (U+FE0F) that asks for the emoji presentation.
That causes two kinds of surprises:
- An app or font may ignore the selector and show the flat version, or force the emoji version when you wanted the flat one.
- Emoji artwork differs by platform. Your heart, face or sparkle can look quite different on an iPhone, an Android phone and Windows.
If you want a consistent look, use characters that only exist in text style. ♥ (U+2665) always stays a flat, font-colored heart. Save the colored emoji for places where a bit of variation doesn't matter.
Failure 3: "fancy fonts" that aren't fonts
Bold, script and gothic letters like 𝐁𝐨𝐥𝐝, 𝓢𝓬𝓻𝓲𝓹𝓽 and 𝔊𝔬𝔱𝔥𝔦𝔠 aren't a font at all. They're separate characters, mostly from Unicode's "Mathematical Alphanumeric Symbols" block, which was meant for equations. A fancy-text generator swaps each normal letter for its lookalike.
That trick works in many places, but it has real costs:
- Search. Your name in script letters doesn't match a search for your name, because the characters are different. On a profile you want people to find, that matters.
- Screen readers. Many assistive tools read these characters by their long Unicode names or skip them, so a stylized name can be unreadable for blind and low-vision visitors.
- Platform filters. Some username and nickname fields normalize or reject them. That's why a Discord nickname or an app username field may silently revert to plain letters.
- Font gaps. Coverage for this block is patchy, especially on older Android devices, which brings back the tofu problem.
A good compromise is to keep your name in normal letters and decorate around it: ✦ your name ✦, or ꧁ your name ꧂. If you do want a stylized word, use it for one short word, not your whole bio. The fancy text generator shows several styles side by side, so you can check which ones display on your own phone before you commit.
Failure 4: the platform strips it
Even when a symbol displays fine, a particular field may not accept it. Bios, display names, usernames and captions often follow different rules within the same app. A rule of thumb:
- Messages and captions are the most permissive.
- Bios are usually fine with dingbats and emoji, but long decorative strings may be trimmed by character limits. Some symbols also count as two characters.
- Usernames and handles are the strictest. Expect letters, numbers and a few punctuation marks only.
A short checklist for bios and names that work everywhere
- Lead with readable text and use symbols as decoration, not as replacement letters.
- Prefer long-established symbols (♥ ★ ✦ ✿ → ✓ ☾ ✉) over rare ornaments.
- Use a flat ♥ instead of a colored ❤️ when the look needs to be consistent.
- Keep stylized letters to one word, if you use them at all.
- Count characters. Bios have tight limits, and some symbols use up two "characters" of space.
- Test on another device before you rely on it, ideally both an iPhone and an Android phone.
If you want a starting point, the Instagram bio symbols page has ready-made lines like "✧ collabs welcome ✧" and "↓ link in bio ↓" that you can copy with one tap and edit.
When you actually need an image
Sometimes the text approach is the wrong tool. In slides, thumbnails, stickers and design files, you can't control which fonts the viewer has, and you don't need the symbol to stay selectable. In those cases an image is more reliable than text.
I built Free Text Symbols to cover both cases. You can search the library by name, keyword or code point (U+2665 works) and click a symbol to copy it as text. Each symbol card also shows its Unicode name, HTML entity and CSS escape, and can export a PNG from 64 to 1024 px. Use text for bios and chats, and the image for design work.
The short version
Text symbols break in predictable ways: missing fonts (tofu), emoji vs text presentation, math letters pretending to be fonts, and fields that strip characters. Choose established symbols, keep real words readable, and test on a second device. Your ✿ will then show up the way you meant it.
Ankur Bhardwaj
Top comments (0)