The SMS character limit is 160 characters in GSM-7 encoding or 70 characters in Unicode (UCS-2) for a single message. Longer messages are split into segments of 153 GSM-7 or 67 Unicode characters, and each segment is billed as one SMS. One character outside the GSM-7 alphabet, such as an emoji or a curly quote, switches the whole message to Unicode.
Why the limits are 160 and 70
The payload of one SMS is 140 bytes (1,120 bits). The encoding decides how many characters fit:
| Encoding | Bits per character | Single SMS | Per segment in a long SMS |
|---|---|---|---|
| GSM-7 (default alphabet) | 7 | 160 | 153 |
| 8-bit data | 8 | 140 bytes | 134 bytes |
| UCS-2 (Unicode) | 16 | 70 | 67 |
In a long message each segment carries a 6-byte header (UDH) that tells the phone how to reassemble the parts, which is why the per-segment limits are lower. How that works is covered in long (concatenated) SMS explained.
What is in the GSM-7 alphabet
GSM-7 covers basic Latin letters, digits, common punctuation and some accented letters used in Western European languages, such as é, è, ü, ñ and à. It does not include many other accented letters (for example á, í, ó, ú, ê or õ), nor Cyrillic, Arabic, Chinese, or any emoji. Some Greek capital letters are included, a legacy of the original standard.
A few characters belong to the extension table and take two characters of space each, because they are sent with an escape code:
- ^ { } \ [ ] ~ | and the euro sign
A message with five euro signs therefore has 155 characters of room, not 160.
What triggers Unicode
If even one character is not in GSM-7, the whole message is sent as UCS-2 and the limit drops from 160 to 70. Common accidental triggers:
- Curly quotes and apostrophes copied from word processors (use straight ' and ")
- Long dashes and ellipsis characters (use a hyphen and three dots)
- Non-breaking spaces and zero-width characters from web forms
- Emoji, which in UCS-2 often take two character slots each
- Letters outside the alphabet, such as Polish ł or Turkish ş
A 150-character English message with one curly apostrophe becomes three segments instead of one. On large campaigns that triples the cost. Pricing per segment is explained in how A2P SMS pricing works.
Languages that need Unicode
Arabic, Russian, Hindi, Chinese, Thai and many other scripts always need UCS-2, so 70 and 67 are the real limits there. Some networks support national language shift tables (defined for Turkish, Spanish, Portuguese and several Indian languages) that keep 7-bit encoding with a different character set, but support depends on the route and handsets, so do not rely on it without testing.
How to set encoding over SMPP and HTTP
- SMPP: the data_coding field says how the message is encoded. 0 means the SMSC default alphabet (often GSM-7, but some platforms treat it as Latin-1), 8 means UCS-2. Ask your supplier which default they use, because a mismatch garbles characters. See SMPP vs HTTP API.
- HTTP APIs: you usually send UTF-8 text and the platform chooses the encoding. Check how it counts segments before launch.
Rejections such as invalid data coding or invalid message length are listed in common SMPP error codes.
Practical tips
- Run outgoing text through a sanitiser that replaces curly quotes, dashes and invisible characters.
- Count segments in your system before sending and log them, so you can reconcile invoices.
- Keep OTP and alerts in a single GSM-7 segment. See OTP SMS best practices.
- Test special characters on real handsets in each country before a campaign.
VoIPMatcher sources A2P SMS routes that support both GSM-7 and Unicode traffic. Request an SMS route and tell us the languages you send in.
Free SMS character counter
- Encoding
- GSM-7
- Characters
- 0
- Billed SMS
- 0
- Characters left in this SMS
- 160
Frequently asked questions
What is the SMS character limit for Unicode?
A single Unicode (UCS-2) SMS holds 70 characters. When the message is longer, it is split into segments of 67 characters each, because every segment carries a header. Arabic, Cyrillic, Chinese, Hindi and many other scripts always use Unicode, and a single emoji or curly quote also switches an English message to it.
Do emojis count as two characters in SMS?
Many do. An emoji forces the whole message into Unicode, which drops the limit from 160 to 70 characters, and most emoji use two UCS-2 character slots. A short message with one emoji can therefore turn into two or more segments. Leave emoji out of OTP and alert messages to keep them in one segment.
Do spaces count in the SMS character limit?
Yes. Spaces, line breaks and punctuation all count as characters, and in GSM-7 each takes one. Invisible characters copied from web forms, such as non-breaking or zero-width spaces, are not in GSM-7 and switch the message to Unicode, so clean the text before sending it.
How do I count SMS characters before sending?
Check every character against the GSM-7 alphabet: count basic characters as one and extension characters such as the euro sign or square brackets as two. If any character is outside GSM-7, count the message in Unicode instead. Then divide by 153 or 67 to get the segments. Many platforms run this count for you.
Need a route?
Send the destination, route type and target rate. We reply with what we can deliver.