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.

Platform Limits

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

  1. For cost-sensitive SMS: Avoid emoji and non-GSM characters
  2. For character counters: Show both limits and warn when UCS-2 is triggered
  3. For message splitting: Account for the 6-byte multipart header
  4. 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.

Try It — String Length Calculator

Open full tool