Skip to main content
← Back to glossary
Messaging protocols

GSM-7 / UCS-2 encoding

What is GSM-7 / UCS-2 encoding?

GSM-7 and UCS-2 are the two character encodings SMS can use: GSM-7 is a 7-bit alphabet covering basic Latin letters, digits, and common punctuation, fitting up to 160 characters in one segment, while UCS-2 is a 16-bit encoding needed for emoji, non-Latin scripts (Arabic, Chinese, Cyrillic), and characters outside the GSM-7 set, but fits only 70 characters per segment. A message automatically switches to UCS-2 the moment it contains a single unsupported character, shrinking the per-segment limit for the whole message.

More detail

Common culprits that force a whole message into UCS-2 include emoji, curly “smart” quotes, em dashes, and non-Latin scripts — even one such character anywhere in the message triggers the switch.

Because UCS-2 messages hold fewer characters per segment, the same message length can cost more billable segments purely due to encoding, independent of the actual character count.

Frequently asked

Why did adding a curly apostrophe change my message's segment count?
A “smart” curly apostrophe isn't in the GSM-7 character set, so its presence forces the entire message into UCS-2 encoding, which cuts the character limit per segment roughly in half.
How can I avoid unexpected UCS-2 encoding costs?
Stick to plain GSM-7 characters — straight quotes, standard Latin letters and punctuation, no emoji — when message cost per segment matters, since a single non-GSM-7 character anywhere switches the whole message to UCS-2.

Build it on Orbit

Voice, messaging, email, video, and AI agents on one platform and one pay-as-you-go bill. Start free — no credit card required.