CARRIER TRUNKS: 24 ACTIVE | GATEWAY: D1 EDGE REPLICATED | SYSTEM STATUS: OPERATIONAL
MODEL CONTEXT PROTOCOL (MCP) READY

SMS Character Splitting: GSM-7 vs UCS-2

Diagnose unexpected SMS segment billing spikes and character corruption caused by GSM-7 vs UCS-2 encoding mismatches and Unicode characters.

Systematic Delivery Diagnostic Tree

1

The GSM 03.38 7-bit Basic Character Set

Standard SMS uses 7-bit encoding, allowing 160 characters per segment. Certain symbols (€, [, ], ~, ^) require 2 bytes from the GSM extension table.

2

The UCS-2 Unicode Trap (160 to 70 Characters)

Including even a single Unicode character (such as an emoji, smart quote, or non-Latin letter) forces the entire message into 16-bit UCS-2 encoding, cutting segment size from 160 to 70 characters.

3

User Data Header (UDH) Concatenation Overhead

When messages span multiple segments, carriers require a 6-byte UDH header, reducing GSM-7 segments from 160 to 153 chars, and UCS-2 segments from 70 to 67 chars.

Frequently Asked Questions

Why did my 162-character message get billed as 3 SMS segments?

If your message contains a Unicode character, it flips to UCS-2 encoding (67 chars/segment when multi-part). 162 characters across 67 chars/segment requires 3 billable segments.

How can developers prevent unexpected SMS billing spikes?

Sanitize outbound text to replace smart quotes, em-dashes, and emojis with standard GSM-7 equivalents, and use SMSRiver's SMS Segment Calculator.

Copied to clipboard