Why Do Emojis Take Up Extra Characters in Text?

If you have ever written a text message that looked comfortably under the character limit, added a few emojis, and suddenly watched the message count jump, you are not imagining it. Emojis can require more storage or encoding units than ordinary letters, and some emojis are actually built from several Unicode characters working together.

The important part is this: an emoji can look like one character on your screen while being represented by multiple underlying code units or Unicode characters. The exact count depends on the emoji, the encoding system, and the app or service doing the counting.

I ran into this distinction while working with character limits for text messages and social posts. Once you understand what is happening underneath the emoji, the strange numbers become much easier to explain.

What does it mean when an emoji takes extra characters?

An emoji may take extra characters because computers do not necessarily store every visible symbol as one simple character. Many emoji are represented using Unicode, and some require multiple code points or UTF-16 code units to represent what you see as one visual symbol.

For example, a simple letter such as A is straightforward. Some emoji, such as 😀, are represented using a Unicode code point outside the Basic Multilingual Plane, which means UTF-16 represents it using a surrogate pair: two 16-bit code units. Unicode specifically defines surrogate pairs as two code units representing one abstract character.

That does not necessarily mean the user sees two characters. The screen still shows one emoji.

This is why “visible characters” and “computer character counts” are not always the same thing.

Why can one emoji be made from several characters?

Not every emoji is a single Unicode code point. Some are emoji sequences made by combining multiple Unicode characters.

A good example is a family emoji or an emoji with a particular skin tone. Other examples include sequences involving the Zero Width Joiner (ZWJ), which allows separate emoji components to be displayed as one combined symbol.

Unicode’s Emoji specification treats these as emoji sequences, and the current Unicode Emoji charts include separate information for emoji sequences, skin tones, and ZWJ sequences.

For instance, what visually appears to be one person emoji with a particular skin tone may actually involve:

  • A base person emoji
  • A skin-tone modifier
  • Sometimes additional Unicode characters
  • A presentation selector or joiner in certain sequences

So you might see one picture, while the underlying text contains several Unicode elements.

That’s one of the biggest reasons emoji counting gets confusing.

Does every emoji count as two characters?

No. Saying “every emoji counts as two characters” is an oversimplification.

Some individual emoji are represented by one Unicode code point but may occupy two UTF-16 code units. Other emoji sequences can contain several code points. Meanwhile, an application may use a different definition of “character” when displaying its counter.

Unicode explains that supplementary characters require two UTF-16 code units, while characters in the Basic Multilingual Plane generally use one. Unicode also notes that the increased popularity of emoji has made supplementary characters much more common in everyday text.

There is another important distinction: a code point, a code unit, and a user-perceived character are not necessarily the same thing.

Think of it this way:

What you see:
😀

What a Unicode-aware system understands:
One emoji character represented by a Unicode code point.

What a UTF-16 implementation may store:
Two 16-bit code units.

What a complex emoji sequence may contain:
Several Unicode code points that render as one visible emoji.

This difference explains why two character counters can occasionally produce different results.

Note: Also use this tool for generating Random Wheel of Names !

Why emojis matter so much in SMS messages

SMS is where emoji can have a particularly noticeable effect.

Traditional SMS commonly uses GSM-7 encoding for compatible text. A single SMS segment can hold up to 160 GSM-7 characters. When the message uses Unicode/UCS-2 encoding instead, the single-segment limit is typically 70 characters. For concatenated messages, the practical limits are generally 153 GSM-7 characters or 67 Unicode characters per segment because some space is used for message concatenation information.

This means an emoji can affect the encoding of the entire SMS, not merely add one or two characters to the counter.

For example, imagine you have a long message containing ordinary English letters and punctuation. It may fit within the GSM-7 character set.

Then you add:

😀

If the emoji is not supported by the GSM-7 character set, the messaging system may switch the message to Unicode encoding.

Now you are dealing with a much smaller character capacity per SMS segment.

Twilio explains that when a message contains characters outside GSM-7, its SMS system can fall back to UCS-2, reducing the capacity from 160 characters to 70 characters for a single segment.

That’s a much bigger effect than simply saying, “The emoji used two characters.”

A practical SMS example

Suppose you are sending this message:

Your appointment is confirmed for Friday at 10 AM. Please arrive 10 minutes early.

The exact number of characters is not the only thing that matters. The encoding matters too.

Now change it to:

Your appointment is confirmed for Friday at 10 AM 😀 Please arrive 10 minutes early.

The emoji can cause the message to be encoded differently.

If you are sending messages through a service such as Twilio, this can affect how many SMS segments are required. Twilio specifically provides a Message Segment Calculator that can show the encoding and segment count before sending a message.

This is particularly useful for businesses sending appointment reminders, delivery notifications, verification messages, marketing texts, or other automated SMS.

Why one emoji can sometimes increase your SMS bill

This is one of the easiest mistakes to make with automated messaging.

Suppose your message is carefully written to stay just under an SMS segment limit. You add an emoji at the end because it makes the message feel friendlier.

The emoji itself is not necessarily the expensive part. The problem is that it can cause the message to switch from GSM-7 to Unicode encoding, reducing the number of characters available in each segment.

Twilio gives an example where a message containing 152 GSM-7-compatible characters plus one Unicode character can be split into three messages under its encoding rules.

So if you manage SMS campaigns, don’t judge the cost of an emoji by looking only at the number of visible symbols it adds.

Check the encoding and segment count.

What about iPhone and Android messages?

The situation is different when you use modern messaging systems such as iMessage or RCS.

These services are not identical to traditional SMS. The way a message is transmitted and counted depends on the messaging system, carrier, application, and device.

For example, Apple’s Messages app can send messages through iMessage when the required conditions are met, while Android devices may use RCS through supported messaging applications and carriers. If a message falls back to SMS, traditional SMS encoding limitations can become relevant again.

That’s why you shouldn’t assume that the character behavior you see in one messaging app will automatically apply to another.

The same emoji can be displayed identically while the underlying transmission rules are completely different.

Why character counters sometimes disagree

If you paste the same sentence into several character-counting websites or applications, you may occasionally get different results.

The reason is that “character count” can mean different things.

A counter may measure:

  1. Unicode code points
  2. UTF-16 code units
  3. UTF-8 bytes
  4. Grapheme clusters, which are closer to what users perceive as individual characters
  5. A platform-specific character-counting system

These are different measurements.

For ordinary English text, the differences are often invisible. With emoji, accented characters, non-Latin scripts, and combined symbols, the differences become much easier to notice.

This is why a character counter designed specifically for emoji-aware text can be more useful than simply checking the length of a string in a basic text editor.

What is a grapheme cluster?

A grapheme cluster is a sequence of Unicode code points that a user generally perceives as one character or visual unit.

This concept is particularly useful when talking about emoji.

Consider an emoji that visually appears as one symbol but is constructed from multiple Unicode components. A basic programming string-length function might count several underlying units, while a grapheme-aware counter can treat the entire visible sequence as one user-perceived character.

This distinction is important for developers building:

  • Character counters
  • Social media tools
  • SMS platforms
  • Text editors
  • Comment systems
  • Form validation
  • Writing applications

If the goal is to tell a normal user how many “characters” they have typed, simply counting UTF-16 code units may produce a confusing result.

How to check whether emojis are affecting your character count

If you’re trying to stay under a character limit, I recommend testing the exact text you intend to publish or send, rather than estimating how much space each emoji uses.

A simple workflow is:

  1. Write your complete message.
  2. Add all emojis, punctuation, URLs, and special symbols.
  3. Paste the final version into an emoji-aware character counter.
  4. Check both the character count and, for SMS, the encoding and segment count.
  5. Remove or replace unnecessary emojis if the message crosses an important limit.
  6. Test the final version again before sending.

For SMS platforms, use the provider’s segment calculator when available. Twilio’s Message Segment Calculator is useful because it identifies the message encoding and segment count rather than giving you only a raw character total.

A realistic example: checking a customer SMS

Imagine you run an online store and want to send this:

Your order has shipped! 📦 Track it here: example.com/track

At first glance, the emoji looks like just one small addition.

Before sending the message to thousands of customers, however, you would want to check:

  • Total characters
  • Whether the text remains GSM-7 compatible
  • Whether the emoji changes the encoding
  • Number of SMS segments
  • Whether your SMS provider charges per segment

If removing 📦 keeps the message in GSM-7 and reduces the number of segments, you have a practical reason to remove it.

If the message remains within one segment either way, keeping the emoji may have no meaningful effect on your SMS cost.

The right choice depends on the actual message and encoding, not on a blanket rule that “one emoji equals two characters.”

What about X character limits?

Social platforms can use their own counting rules, so you should always check the platform’s current documentation rather than applying SMS rules to social media.

For example, X currently describes a standard post as allowing up to 280 characters. X also offers longer posts for Premium users, with documentation stating that longer posts can contain up to 25,000 characters.

That doesn’t mean you should calculate an X post using SMS’s 70-character Unicode limit. X and SMS are different systems with different counting and transmission rules.

This is an important mistake I see when people discuss emoji character limits: they take a rule from one platform and assume it applies everywhere.

It doesn’t.

Common mistakes when counting emoji

Mistake 1: Assuming every emoji equals two characters

Some emoji can occupy two UTF-16 code units, but that doesn’t mean every emoji has exactly the same representation.

Better approach: Use the counting method required by the platform you’re targeting.

Mistake 2: Counting only what appears on screen

One visible emoji can represent several Unicode code points.

Better approach: Use a Unicode-aware or grapheme-aware counter when precision matters.

Mistake 3: Ignoring SMS encoding

A message may look short enough based on its visible character count but still require additional SMS segments after Unicode encoding is triggered.

Better approach: Check encoding and segments, not just character length.

Mistake 4: Blaming the emoji itself for every count increase

Sometimes the real issue is the platform’s counting method rather than the emoji’s visual size.

Better approach: Find out whether the counter measures code points, UTF-16 units, bytes, grapheme clusters, or a platform-specific limit.

Mistake 5: Testing an incomplete message

A character count can change after you add a URL, smart quotation mark, emoji, hashtag, or other special character.

Better approach: Test the final version exactly as it will be sent.

A quick way to think about emoji character counts

When I need to troubleshoot a character-limit problem, I use three questions:

What does the user see?
Usually one emoji.

How is the emoji represented internally?
It may be one Unicode code point, multiple code points, or multiple UTF-16 code units.

What does the platform count?
That depends on the application and its rules.

Once you separate those three questions, most of the confusion disappears.

Frequently Asked Questions

Does an emoji count as one or two characters?

It depends on what is doing the counting. An emoji may be one Unicode code point while occupying two UTF-16 code units, and some emoji are sequences containing multiple code points. Therefore, there is no universal rule that every emoji counts as exactly two characters.

Why does one emoji reduce my SMS character limit?

An emoji can cause an SMS to switch from GSM-7 encoding to Unicode encoding. A standard GSM-7 SMS segment can contain up to 160 characters, while a Unicode SMS segment generally holds up to 70 characters.

Do all emojis use the same number of characters?

No. Emoji can have different underlying Unicode representations. Some are individual code points, while others are sequences involving skin-tone modifiers, joiners, or other Unicode characters.

Why does my character counter show a different number after adding an emoji?

Different counters can measure different things, such as Unicode code points, UTF-16 code units, bytes, or user-perceived characters. The difference becomes especially noticeable with emoji and other complex Unicode sequences.

Can I avoid extra characters by removing emojis?

If you’re dealing with a strict character or SMS segment limit, removing an emoji can help, but it isn’t always necessary. For SMS, the more important question is whether the emoji changes the message’s encoding and segment count; for other platforms, you should follow that platform’s own counting rules.

The simple takeaway

Emojis don’t magically become “two visible characters” when you type them. The confusion comes from the difference between what you see and how computers represent text.

Unicode allows modern systems to represent an enormous range of symbols, including thousands of emoji and complex emoji sequences. Some emoji require two UTF-16 code units, while others are assembled from multiple Unicode code points.

For everyday chatting, you usually don’t need to worry about any of this. But when you’re writing an SMS close to its limit, building a character counter, or preparing a post with a strict character allowance, the distinction matters.

The safest habit is simple: don’t guess how much an emoji counts. Check the final text using the counting system used by the platform you’re actually sending it through.

Scroll to Top