When you send a message whose text is longer than the maximum number of characters per SMS (160 characters for normal text messages), the carriers will automatically split the message and send multiple SMS so that your whole message will be shown as one SMS on the receiving handset.
Carriers charge us for each separate SMS part that we send through their networks. This means that if a SMS that you sent via one API call to our platform has a long message text so that 3 SMS are needed to send it to the recipient we need to charge you with the same price for each of these SMS parts individually.
If you are using special characters or even emoji icons in your SMS than the encoding needs to change and the maximum number of characters for one SMS is reduced even more, because of the extra overhead that for example unicode brings with it.
This table should give you a good overview:
The maximum number of characters per single message depends on the encoding:
| Encoding type | number of characters | maximum number of characters |
|---|---|---|
| 7-bit encoding (e.g., latin-1/9 and GSM8) | 160 | 153 |
| 8-bit encoding (binary) | 140 | 134 |
| 16-bit encoding (Unicode) | 70 | 67 |
Because of the need of inclusion of concatenation headers in concatenated messages the maximum number of characters is slightly reduced even more - see third column in the table above.
This means if for example you send a SMS message whose contents need Unicode encoding then the message is split in parts after each 67 characters and carriers will charge for each of the individual parts.
How to Reduce SMS Costs
Since SMS costs are tied to the number of parts, not just the number of messages, you can take some steps to avoid unnecessary splitting:
1. Avoid Unicode Characters
Using only characters from the GSM 7-bit character set allows for up to 160 characters per part. Once you include a single Unicode character (e.g., “é”, “–”, emojis), the entire message is encoded in Unicode, and only 70 characters fit into each part.
👉 Use this tool to test your messages and check encoding behavior:
https://developer.vonage.com/en/messaging/sms/guides/concatenation-and-encoding#encoding
2. Keep Messages Short and Clear
Shorter messages naturally reduce the number of parts needed. Try to:
-
Remove unnecessary words or repetition
-
Avoid extra line breaks (e.g.,
\n) -
Combine multiple short texts into a single clear message if possible
3. Escape or Avoid Problematic Characters
Some characters that appear harmless can trigger Unicode encoding:
-
Line breaks (
\n) and backslashes (\\) in API requests must be escaped properly. Otherwise, they may be interpreted as Unicode. -
Characters like “é”, “è”, “É”, “È” may also be treated as Unicode depending on formatting. Replacing them with unaccented letters (e.g.
e) helps prevent unnecessary encoding switches.
4. Avoid Text Formatting and Emojis
SMS does not support formatting (bold, underline, etc.) or rich content like images or emojis. Attempting to include these will require Unicode encoding or simply fail to display correctly.
Comments
0 comments
Please sign in to leave a comment.