Same message. Very different bill.
SMS encoding is selected for the whole message. One unsupported character can move every character from the GSM-7 budget into the smaller UCS-2 budget.
GSM-7 in plain language
GSM-7 is the compact alphabet used for many Latin-script SMS messages. Its default alphabet covers common letters, digits and punctuation. A separate extension table adds characters such as {, }, [, ], ^ and €; each uses an escape plus the character and therefore consumes two septets.
When UCS-2 takes over
If a message contains a character outside the supported GSM-7 tables, providers generally encode the entire message as UCS-2. Curly quotes, em dashes, many accented characters, CJK text and emoji are common triggers. The single-segment capacity then drops from 160 GSM-7 septets to 70 UCS-2 code units.
| Property | GSM-7 | UCS-2 |
|---|---|---|
| Typical single-part capacity | 160 septets | 70 units |
| Typical multipart capacity | 153 per part | 67 per part |
| Common use | Basic Latin SMS | Unicode text |
| Cost risk | Extension chars count double | Smaller segment capacity |
It is necessary for many languages and symbols. The goal is to detect it intentionally and forecast the correct segment count—not to remove meaningful content blindly.
Use encoding-aware rules
- Preserve characters that carry language or brand meaning.
- Normalize typography only when the replacement is semantically safe.
- Count after template variables have been rendered.
- Model the sender profile when multipart capacities differ.
- Show both the original and optimized result for human review.
See the encoding decision.
Paste real copy into TextPreflight and inspect the exact code points, segment boundary and safe replacements.