Everyone knows a text message holds 160 characters. Fewer people know that the limit can drop to 70 without warning, because of a single character you may not even have typed. For a person texting a friend, it means a long message quietly splits in two. For a business sending thousands of reminders, it can double or triple the bill.
Where 160 comes from
SMS was designed in the 1980s to ride on spare capacity in the signaling channel of GSM mobile networks, which left room for 140 bytes per message. To fit as much text as possible into those bytes, the designers used a compact alphabet called GSM-7, in which each character takes 7 bits instead of 8. 140 bytes is 1,120 bits, and 1,120 divided by 7 is 160.
GSM-7 holds 128 characters: the English alphabet in both cases, digits, common punctuation, and a selection of accented letters chosen for Western European languages, such as é, ü, ñ and å. A small extension table adds a few more, including { } [ ] ~ \ | ^ and the euro sign, at the cost of two slots each.
The switch to Unicode
Any character outside GSM-7 cannot be written in 7 bits. When a phone finds one, it does not encode just that character differently. It switches the entire message to UCS-2, an encoding that spends 16 bits on every character. 1,120 bits divided by 16 is 70. One character is enough to cut the capacity of the whole message by more than half.
The characters that most often cause it:
- Curly quotes and apostrophes (’ “ ”), inserted automatically by phones, word processors and many website editors in place of the straight ones you typed.
- Dashes and ellipses: the en dash (–), em dash (—) and the single-character ellipsis (…), which autocorrect produces from three periods.
- Emoji, which are worse than they look: most take two UCS-2 units each, so a single smiley uses up 2 of the 70.
- Accented letters not in GSM-7, such as ç (lowercase), õ or ł, and every character of non-Latin scripts such as Greek, Cyrillic, Arabic, Hindi or Chinese.
- Invisible characters, like non-breaking spaces pasted from a web page or a document.
Long messages are split and cost more
A message over the limit is sent as several segments that the receiving phone stitches back together. Each segment carries a small header saying how to reassemble them, which uses 6 of its 140 bytes, so segments hold a little less than a single message would:
| Segments | GSM-7 (standard) | UCS-2 (Unicode) |
|---|---|---|
| 1 | up to 160 characters | up to 70 characters |
| 2 | 161 to 306 | 71 to 134 |
| 3 | 307 to 459 | 135 to 201 |
| Each segment after the first | 153 more | 67 more |
Carriers and SMS platforms bill per segment, not per message. A 150-character appointment reminder is one segment. Change one apostrophe to a curly one and the same 150 characters become three segments, tripling the cost of every message in the campaign.
What does not count as SMS
iMessage, WhatsApp, Signal, Telegram and RCS chats are not SMS. They travel over the internet and have far higher limits, so emoji and long messages cost nothing extra. The 160 and 70 rules apply when a message actually goes out as SMS: texting a phone that cannot receive those services, the green bubbles on an iPhone when RCS is not available, and almost all business messaging, from verification codes to delivery updates.
How to keep messages in one segment
- Check before you send. Paste the message into the Character Counter. Its SMS panel shows the encoding, the number of segments and exactly which characters forced Unicode.
- Straighten the punctuation. Replace curly quotes with straight ones, dashes with a hyphen, and the ellipsis character with three periods.
- Leave emoji out of business texts unless the message is already in Unicode for another reason, such as a non-Latin language.
- Turn on character replacement if your SMS provider offers it. Several platforms can automatically swap common Unicode look-alikes for their GSM-7 equivalents before sending.
- Watch templates. A customer's name inserted into a template can contain a character outside GSM-7 and push a message that tested fine into Unicode. Leave room for it.
Character & Word Counter: Words, characters, reading time, SMS segments and platform limits.
Open the tool
