AI Content Creation

Count Emojis in Google Sheets (LEN Says 11 for One Emoji)

One family emoji is one thing on your screen and eleven characters to a spreadsheet. Every counting formula inherits that gap.

By FITS TeamAugust 4, 20264 min read

Counting emojis looks like counting characters, so people reach for LEN and SUBSTITUTE. Then the numbers come back wrong and nobody can see why, because the cause is invisible on screen.

The reason is worth knowing, because it also explains why the regex answer you found does not work either.

The Old Way (LEN and SUBSTITUTE)

Start with the simplest test. Put a single thumbs up in a cell and measure it.

=LEN(A2)

For one thumbs up, that returns 2. Add a skin tone and it returns 4. A family emoji returns 11. A flag returns 4. None of those are typos.

Sheets measures string length in UTF-16 code units. Most emojis sit above the basic plane, so each one is stored as a surrogate pair worth two units. Skin tones are a separate modifier character appended to the base. A family is four people emojis stitched together with invisible zero width joiners, which are themselves characters.

Now the counting idiom everyone uses for a specific emoji.

=(LEN(A2) - LEN(SUBSTITUTE(A2, "👍", ""))) / LEN("👍")

This one is worse than simply wrong, because it is sometimes right. It works for a bare thumbs up. It overcounts when the cell contains a skin toned thumbs up, because that value still contains the base emoji as a substring, so SUBSTITUTE tears the modifier off and leaves an orphan character behind.

The next stop is regex, usually something like this.

=COUNTA(SPLIT(REGEXREPLACE(A2, "[\x{1F600}-\x{1F64F}]", "|"), "|"))

Google Sheets uses the RE2 engine, which has no Unicode property classes at all. The Emoji and Extended_Pictographic property classes that other regex flavors give you simply do not exist here, so there is nothing to match emojis as a category. You are left hand listing hex ranges, and the range above is only the original emoticons block. It misses transport, flags, keycaps, supplemental symbols, and everything added to Unicode in the last decade. Widen the range far enough and you start matching ordinary symbols instead.

The FITS Way

The job is counting things a human would point at, not counting code units. Ask for that directly.

=FITS("Count the emojis in this text. Count a multi-part emoji such as a family or a skin toned emoji as one. Return only the number: " & A2)

The rule about multi part emojis is doing real work in that prompt. Leave it out and you are back to arguing about whether a family is one emoji or four, which is genuinely ambiguous. State the rule and the column is consistent.

Counting one specific emoji across a column is the same shape.

=FITS("How many thumbs up emojis appear in this text? Count any skin tone variant as a thumbs up. Return only the number: " & A2)

Then total the column with the arithmetic you already know.

=SUM(B2:B)

If what you actually want is which emojis appear rather than how many, ask for the list instead of the count.

=FITS("List every distinct emoji in this text, separated by commas. Return NONE if there are no emojis: " & A2)

And if the emojis are noise rather than data, count is the wrong question and you want them gone. That is removing emojis, which has the same surrogate pair trap in reverse.

When to Use Each

If you are counting one plain emoji with no variants, the SUBSTITUTE idiom is free and fine. Reach for =FITS() once skin tones, joined sequences, or an open ended set of emojis are in play. The neighbouring jobs work the same way: counting specific text, removing special characters without killing accents, and reading sentiment out of the same messages. The full tour is in automating Google Sheets tasks you used to need regex for.

Stop Counting Code Units

FITS puts plain-English AI formulas inside Google Sheets. Count what a reader would see, not what UTF-16 stores. Free tier included.