SMS character limits: 160, 153, 70, and the curly-quote trap
A text message holds 160 characters only if every character is in the GSM-7 alphabet. One character outside it, like a curly quote or an emoji, drops the limit to 70.
If you send text messages in bulk, for appointment reminders, delivery updates, or marketing, the character count is not just a style question. Most SMS providers bill per message part, so a message that splits into three parts costs three times as much as one that fits in one. The rules that decide the split are older than smartphones and full of surprises.
Two alphabets: GSM-7 and UCS-2
An SMS can be encoded in one of two main ways.
GSM-7 is a compact 7-bit alphabet defined for the GSM mobile standard. It covers the basic Latin letters, digits, common punctuation, and a small set of accented letters and symbols. Because each character takes only 7 bits, one message holds 160 characters.
UCS-2 is a 16-bit encoding that can represent almost any character. Each character takes twice the space, so one message holds only 70 characters.
The phone or the sending service picks the encoding for the whole message. If every character is in the GSM-7 alphabet, the message goes as GSM-7. If even one character is not, the whole message switches to UCS-2.
Long messages split into parts
When a message is too long for one SMS, it is sent as several parts and reassembled on the recipient’s phone. Each part has to carry a small header that says which message it belongs to and where it goes in the sequence. That header takes space from the text:
| Encoding | Single message | Per part when split |
|---|---|---|
| GSM-7 | 160 characters | 153 characters |
| UCS-2 | 70 characters | 67 characters |
So a 161-character GSM-7 message is not “one message and one character”. It becomes two parts of up to 153 characters each. A 307-character message needs three parts, because two parts hold only 306.
Characters that count as two
The GSM-7 alphabet has a basic table and an extension table. Characters in the extension table are sent as an escape code followed by the character, so each one uses two of your 160 spaces. The extension table includes:
| Character | Name |
|---|---|
| € | euro sign |
| [ ] | square brackets |
| { } | curly braces |
| \ | backslash |
| ^ | caret |
| ~ | tilde |
| | | vertical bar |
It also includes an invisible form-feed control character, which you are unlikely to type.
A message with a price in euros and a pair of brackets has used five extra spaces before you have written anything else.
The curly-quote trap
This is the mistake that costs the most money. Word processors, phones, and many content systems replace straight quotes with curly ones automatically. The straight apostrophe (‘) is in the GSM-7 alphabet. The curly apostrophe (’) is not.
Watch out: A single curly apostrophe in “we’re” switches the entire message to UCS-2. A 150-character message that fit in one SMS now needs three parts of up to 67 characters.
The same thing happens with:
- Emoji. None are in GSM-7. Many emoji also take two UCS-2 units, so a single emoji can use 2 of the 70 spaces.
- Em dashes and en dashes. Use a plain hyphen instead.
- Ellipsis characters. The single-character ellipsis (…) is not in GSM-7; three periods are.
- Many accented letters. GSM-7 includes some, such as é, è, à, ñ, and ü, but not others, such as á, ó, and ê. A Spanish word like “canción” switches the message to UCS-2.
Some SMS providers offer an option that swaps lookalike characters for GSM-7 equivalents before sending, such as replacing curly quotes with straight ones. If yours does, check what it replaces and whether it is on by default.
How to keep messages short and cheap
- Check the final text before you send. Our character counter checks it against the SMS limit. Search the text for curly quotes, dashes, and emoji too, so one stray character doesn’t go out ten thousand times.
- Write in a plain-text editor. Drafting in a word processor invites smart quotes and dashes.
- Spell out symbols. “EUR 20” fits GSM-7 at one space per character; “€20” uses an extra space for the euro sign.
- Cut, then cut again. Reminders rarely need a greeting and a sign-off. The recipient knows who sent it.
Before: Hello! We’re just reaching out to remind you that your appointment with Dr. Lee is scheduled for tomorrow at 3:00 pm. Please don’t hesitate to call us if you need to reschedule.
After: Reminder: your appointment with Dr. Lee is tomorrow at 3:00 pm. Call 555-0142 to reschedule.
The first version is longer than one UCS-2 message on its own, and its curly apostrophes force UCS-2. The second fits comfortably in a single GSM-7 message.
Try it on your own text
SMS
- Without spaces
- 0
- Letters
- 0
- Lines
- 0
- UTF-16 code units
- 0
- UTF-8 bytes
- 0