BroadNet
Fundamentals BroadNet answer

GSM 7-bit vs UCS-2 encoding — when each is used

Last reviewed 1 min readReviewed by BroadNet engineering
Quick answer

An SMS body can be encoded in GSM 7-bit (160 characters per segment, covers ASCII plus a small extension table) or UCS-2 (70 characters per segment, covers any Unicode codepoint including Arabic, Chinese, emoji). The choice happens automatically — your aggregator scans the body and picks the narrowest encoding that fits. Mixed encoding is not allowed within a single SMS; one non-GSM-7 character forces the whole message to UCS-2.

Plain-language definitionVendor-neutralReviewed May 27, 2026
The long answer

Everything worth knowing, nothing that isn't.

§01

The 160 vs 70 cliff

If your message fits in GSM 7-bit, you get 160 characters per segment. If you add a single em-dash (—), curly quote (""), or any Arabic / Chinese / emoji character, the whole message becomes UCS-2 and you get 70 characters per segment. A 150-character message that fits in one GSM segment becomes a 150-character message that needs 3 UCS-2 segments — tripling your cost. For high-volume sends, normalise punctuation to GSM-7 ASCII equivalents at composition time.

§02

Concatenation (multipart SMS)

Messages longer than one segment are split client-side and stitched together by the recipient handset using the User Data Header (UDH). UDH-concatenated segments are 153 chars (GSM-7) or 67 chars (UCS-2) — three bytes per segment are consumed by the UDH itself. Most aggregators bill per segment, not per message — a 320-char GSM-7 message is billed as 3 segments.

§03

When to deliberately use UCS-2

Always for Arabic, Chinese, Japanese, Korean, Cyrillic, or emoji content. Always for European languages with diacritics not in the GSM-7 extension (Polish ł, Czech ř, Vietnamese ă). Arabic-language SMS in MENA is essentially 100% UCS-2 — budget accordingly (Arabic OTP messages typically run 2 segments).

§04

The 8-bit option (rarely used)

SMPP also supports raw 8-bit binary encoding for binary data — used for OTA SIM commands, ringtone delivery (1990s), and very niche M2M scenarios. Almost never seen in commercial A2P A2P traffic.

BNWritten by the BroadNet engineering team·Operating carrier-grade messaging since 2003, headquartered in Dubai·Editorial standards
Build with this

Need help wiring this up?

The pages below are the products and integration guides that put this concept on the wire. If you'd rather walk through it live, our engineering team takes calls same-day during MENA working hours.

Talk to our engineering team
Feedback

Was this answer helpful?

Your vote helps us prioritise which answers to expand with examples, diagrams, and code snippets.

Was this answer helpful?
Thanks — noted. We'll keep this answer maintained.
Got it. Tell us what was missing — send a quick note.

How we write and review content

Still need help?

Talk to a real engineer about your build.

We reply within one business day, and production accounts get 24/7 support. Our solutions engineers ship code, not scripts.

$ curl -X POST https://api.broadnet.me/sms/sendSms
Response SLA
Test-access requestsReply within 1 business day
Production24 / 7 · < 15 min
Operator NOC24 / 7 · pager