Skip to main content
When you send a text message, carriers count it in segments, not characters. Understanding segments matters because they determine both cost and deliverability, and because the number of characters per segment changes depending on what you put in the message.

The 140-byte rule

Every SMS segment is 140 bytes. How many characters fit into those 140 bytes depends on the character encoding: When a message spans multiple segments, carriers use a small portion of each segment for a header that lets the handset reassemble the parts in order. That’s why concatenated messages have slightly fewer usable characters per segment (153 and 67 instead of 160 and 70).

GSM-7 vs UCS-2

GSM-7 is the standard encoding for basic Latin characters. It covers the full English alphabet, digits, and common punctuation. If every character in your message is in the GSM-7 character set, the 160-character-per-segment limit applies. UCS-2 activates automatically if your message contains any character outside GSM-7, including emoji, accented characters (like é, ñ, ü), curly quotes (“ ”), ellipses (…), and many symbols. When UCS-2 activates, the limit drops to 70 characters per segment.
This is the most common surprise for developers — pasting text from a word processor or rich text editor often introduces curly quotes or em dashes that silently switch the message to UCS-2 and cut the character limit by more than half.

Characters that trigger UCS-2

Common culprits:
  • and (curly double quotes, vs standard ")
  • and (curly single quotes, vs standard ')
  • (ellipsis, vs three periods ...)
  • (em dash, vs hyphen -)
  • Emoji of any kind: 😀 🎉 ✅
  • A small set of accented characters outside GSM-7 — the most common is ç. Most other Latin accents (é, à, ü, ñ) are in GSM-7 and do not trigger UCS-2 on their own.
If you’re interpolating user-provided content into messages, normalize the input to GSM-7-safe characters before sending.

Counting segments

A standard English message under 160 characters is one segment. A 300-character English message is two segments. Emoji are a common gotcha: each emoji counts as two characters under UCS-2, not one. So a message that looks like 69 characters plus a single emoji is really 71 characters of UCS-2, which exceeds the 70-character single-segment limit and spans two segments. To count segments before sending, use a client-side SMS segment calculator. This helps you estimate cost and flag unexpectedly long messages before they go out.

Segments as the billing unit

Surge bills per segment, not per message. A blast of 1,000 two-segment messages costs twice as much as 1,000 one-segment messages. Campaign rate limits (like 2,000 SMS segments per day to T-Mobile and 3.75 segments per second) are also counted in segments. Keep this in mind when estimating costs and when setting campaign volume levels during registration.

Segment count and automatic protocol selection

Segment count affects more than billing. It can determine whether your message is sent as SMS or MMS:
  • 10 segments is the SMS cap. Anything longer is sent as MMS automatically, in countries where MMS is available. This avoids the fragmented experience of long concatenated SMS on the recipient’s device.
  • 3 or more segments + Auto-MMS enabled → Surge converts the message to a single MMS instead of sending multiple SMS segments. Beyond 3 segments, MMS is cheaper per message than SMS, so enabling Auto-MMS reduces cost for platforms that send long messages routinely. Contact support to enable Auto-MMS for your platform.
In both cases, if the recipient’s carrier doesn’t support MMS, Surge falls back to SMS and delivers the full concatenated message. See Send to One Person for details.

Practical advice

  • Keep routine messages under 160 characters to stay within a single segment
  • Use straight quotes (" and ') instead of curly quotes in templates
  • Use three periods (...) instead of the ellipsis character ()
  • If you support emoji in user-facing message templates, budget for UCS-2 costs
  • Test any message template with a client-side segment counter before sending at scale