Emoji shows as □ / tofu / empty box (missing glyph)

The number arrived fine. The device just has no picture for it yet, so it draws a blank box nicknamed tofu.

What "tofu" means

Designers nicknamed the empty rectangle □ "tofu" because it looks like a blank block of bean curd. It appears when the text engine knows a Unicode code point exists but none of the fonts it searched contain a glyph for that point. The bytes are intact; only the picture is missing.

What you seeUsually meansData still there?
Empty / dotted box □Missing glyph (tofu): font too old or no colour emoji fontYes
Black diamond � (U+FFFD)Replacement character: bytes were invalid or already lostNo (already discarded)
😊-style gibberishUTF-8 read as Latin-1 / Windows-1252Yes, if you re-decode
? or ????Often a 3-byte MySQL utf8 column or a Latin-1 sinkNo for 4-byte emoji
Pieces of a family emojiZWJ sequences not supported; glue failedYes

Interactive walkthrough of these four scenes: Wirebook's Who stole the emojis? lesson (Emoji X-ray + crime scenes).

Why new emojis break first

How to check which problem you have

  1. Copy the "box" into another app (Notes, a modern browser, Wirebook's Emoji X-ray). If a real emoji appears elsewhere, it was tofu on the first device.
  2. Inspect the code point. In a capable editor or the X-ray, a tofu'd melting face still shows as U+1FAE0. A real � shows as U+FFFD.
  3. Check the byte length. Paste into the word & character counter or encode with the Base64 tool (UTF-8). A single modern emoji is typically 4 UTF-8 bytes (or more with ZWJ). If you only have EF BF BD (the UTF-8 for �), the original was already lost.
  4. Not sure what the blob is? Paste mystery text into What is this?.

Fixes

Related

Why emoji make text messages shorter · Mojibake / ðŸ / é · MySQL Incorrect string value / utf8mb4 · Invisible zero-width characters · Base64 is not encryption · Wirebook emoji lesson · What is this? · Anvil text X-ray API · UnicodeDecodeError utf-8

Questions

Why does an emoji show as a box or square?

The device received the Unicode code point but has no glyph (picture) for it in any installed font. That blank box is nicknamed tofu. Update the OS or install a colour emoji font.

What does tofu mean for emoji?

Tofu is the empty rectangle □ drawn when a font is missing a glyph. The character is still in the text; only the artwork is missing.

Is � the same as a tofu box?

No. � is U+FFFD, the replacement character, meaning the original bytes were invalid or already discarded. Tofu means the code point is fine but undrawable.

Why do only some people see boxes?

Their phone, OS or browser has an older emoji font that predates that Unicode version. Others with newer fonts see the real picture.

How do I fix emoji boxes on Linux?

Install a colour emoji font such as fonts-noto-color-emoji, then restart the browser. Flatpak/Snap browsers sometimes need the font inside their sandbox too.

Published · updated .

Try it

Related guides

Newest guides