SMS Character Limits: 160 vs 70 Characters
Learn why SMS messages have different character limits (160 for GSM-7, 70 for Unicode) and how this affects message length for international text.
Detailed Explanation
SMS Encoding: GSM-7 vs UCS-2
SMS messages use two different encodings, and the character limit changes dramatically depending on which one is needed.
GSM-7 Encoding (160 characters)
The default SMS encoding uses a 7-bit character set called GSM 03.38. With 140 bytes per SMS segment and 7 bits per character: 140 × 8 / 7 = 160 characters.
GSM-7 supports:
- Latin alphabet (A-Z, a-z)
- Digits (0-9)
- Common symbols (@, !, ?, etc.)
- Some extended characters (using escape sequences, counting as 2 characters each): { } [ ] ~ \ ^ | €
UCS-2 Encoding (70 characters)
If any character falls outside the GSM-7 alphabet, the entire message switches to UCS-2 (essentially UTF-16). With 140 bytes and 2 bytes per character: 140 / 2 = 70 characters.
Characters that trigger UCS-2:
- Accented characters beyond GSM-7 (à, è, ì, ò, ù are in GSM-7, but ā, ē are not)
- CJK characters
- Emoji
- Arabic, Hebrew, Thai, Devanagari, etc.
Multipart Messages
When a message exceeds the single-segment limit, it is split into multiple segments with a 6-byte header per segment:
| Encoding | Single Segment | Multipart Segment |
|---|---|---|
| GSM-7 | 160 chars | 153 chars/segment |
| UCS-2 | 70 chars | 67 chars/segment |
Cost Implications
A message with one emoji in an otherwise ASCII text:
"Meeting at 3pm tomorrow 👍" (26 chars)
GSM-7: Would be 26/160 = 1 segment
UCS-2: Is 26/70 = 1 segment
But it MUST use UCS-2 because of the emoji!
"Please confirm your attendance for the meeting scheduled tomorrow at the downtown conference center 👍" (102 chars)
GSM-7: Would be 102/160 = 1 segment
UCS-2: Is 102/70 = 2 segments (double the cost!)
Practical Advice
- For cost-sensitive SMS: Avoid emoji and non-GSM characters
- For character counters: Show both limits and warn when UCS-2 is triggered
- For message splitting: Account for the 6-byte multipart header
- For international: Japanese, Chinese, Korean, Arabic text always uses UCS-2, so plan for 70-char segments
Use Case
When building SMS notification systems, marketing platforms, or 2FA code delivery, understanding the GSM-7 vs UCS-2 encoding switch is essential for cost estimation, message splitting, and ensuring messages are not unexpectedly split into multiple costly segments.