# GSM-7 vs Unicode: how message length really works

> Why one message costs one segment and another three, which characters switch the encoding, how concatenation works and how to write for a single segment.

Updated 2026-08-15. Level: Intermediate. By SMSMeteor.

## Key takeaways

- One character outside GSM-7 switches the whole message.
- Concatenated parts hold 153 or 67 characters.
- Curly quotes and emoji are the usual culprits.
- Non-Latin scripts are always Unicode: plan for it.

## Two alphabets

An SMS carries 140 bytes. With the GSM-7 alphabet, seven bits per character, that is 160 characters (153 per part when concatenated). With Unicode (UCS-2), sixteen bits per character, that is 70 characters (67 per part when concatenated). The alphabet is decided for the whole message: one character outside GSM-7 and every character is billed at the Unicode size.

## Segments and concatenation

A longer text is split into segments that the handset reassembles. Each segment gives up six bytes to a header that says "part 2 of 3", which is why the per-part capacity drops to 153 and 67. You pay per segment, up to 6 parts per message. The composer and the API response both show the segment count before anything is sent, so the price is never a surprise.

## What switches the encoding

GSM-7 covers the basic Latin letters, digits, common punctuation and a handful of accented characters used in Western European languages. It does not cover smart quotes, the em dash, most emoji, or letters like ő, ș, ă. Any one of those switches the message to Unicode. The most common accidental switch is a curly apostrophe pasted from a word processor.

## Writing for one segment

- Type straight quotes and a plain hyphen.

- Skip emoji in transactional messages; they halve your capacity for no delivery benefit.

- Keep links short and stable; a tracking link of 30 characters is a fifth of the segment.

- Preview with real data: a variable like a name can push the longest row over the limit while the template fits.

## Non-Latin scripts

Arabic, Cyrillic, Greek, Hebrew, Devanagari, Thai, Chinese, Japanese and Korean are always Unicode. That is not a problem to solve, it is the cost of the script: 70 characters (67 per part when concatenated) per part. Codes, alerts and short confirmations fit in one segment in any language; write marketing copy in two parts on purpose rather than in one and a half by accident. The [country pages](https://smsmeteor.com/coverage) say which encoding to expect for each destination.

---
Source: https://smsmeteor.com/guides/gsm7-vs-unicode (HTML). Generated by SMSMeteor from the same data as the page. Summary of the whole site: https://smsmeteor.com/llms.txt
