Why does a website form cut my text off before the stated limit when it contains emojis?

Because many forms and systems do not count characters the way you see them; they count technical units. An emoji you see as one symbol can take two units, and a joined emoji such as the family 👨‍👩‍👧 takes eight. The word counter shows every count side by side, characters as read, code points, UTF-16 units and UTF-8 bytes, so you can see which one the form is limiting and trim to that.

Published · 3 min read

One text, four different lengths

We pasted a short Arabic offer line with two fire emoji and a family emoji into the Word and character counter: «عرض خاص 🔥🔥 👨‍👩‍👧». These are the tool's results:

  • Words: 2, because emoji are not words.
  • Characters as read: 12, what your eye counts (6 Arabic letters, 3 spaces and 3 emoji, the family counting as one).
  • Code points: 16, because the family emoji alone is 5 points: three faces and two invisible joiners.
  • UTF-16 units: 21, because each emoji symbol takes two units in that encoding and each joiner one.
  • UTF-8 bytes: 41, because an Arabic letter is 2 bytes, each emoji symbol 4 and each joiner 3.

So the same text is 12, 16, 21 or 41 long, depending on who counts. If a field allows 20 and counts UTF-16 units, this very short text is rejected or cut, even though you see only 12 characters. An English line such as 'Summer sale 🔥🔥' plus the family emoji behaves the same way: 16 characters as read, 20 code points, 25 UTF-16 units.

How to tell which number the form uses

  1. Type plain text with no emoji into the form until it stops or cuts, then paste it into the counter. If characters as read match the stated limit, the limit is in ordinary characters.
  2. Add a single emoji and try again. If the form now stops one or two characters early, it counts code points or UTF-16 units.
  3. If Arabic text gets cut at roughly half the limit, the system is most likely counting bytes, since an Arabic letter is two bytes.

You do not need to know how the site was built. You compare the form's behaviour with the four numbers, and whichever one matches is the one to watch.

Practical fixes when the limit is tight

  • Swap joined emoji for simple ones: one face instead of the family, or drop the skin tone, since each of those adds code points.
  • Do not repeat an emoji. '🔥🔥' costs twice '🔥' on every measure.
  • Remove doubled spaces and blank lines with the Whitespace cleaner; every space is a unit on every measure.
  • If the limit is in bytes, every Arabic letter you cut saves two, and every emoji at least four.

Why the tool does not give you one number

Because a single number misleads you in exactly this situation. The tool does not know the rule of the form in front of you, and assumes no rule for any site or platform. What it does is keep the character a reader sees separate from the technical units, never mixing them, so you decide which number matters.

Common questions

Does an emoji count as a word?

No. Words in the tool are letters and digits; emoji and punctuation are not counted as words, though they do count as characters and units.

Is a flag such as 🇸🇦 one character?

Yes as read, but it is two code points and 8 bytes, so it takes more of a technical limit than it looks.