SMS Character Limits: Encoding and Message Segments
Published · Updated
An SMS length check needs the message's encoding and segment budget, not just its visible character total. In Twilio's usual SMS rules, a single segment holds 160 GSM-7 units or 70 Unicode units. Longer messages use smaller budgets per segment.
The usual segment budgets
A unit is one slot in the encoding's length budget. It is not necessarily one visible symbol.
| Encoding | Single segment | Each multipart segment |
|---|---|---|
| GSM-7 | 160 units | 153 units |
| Unicode, called UCS-2 in provider documentation | 70 units | 67 units |
Twilio documents an exception for multipart toll-free SMS to the US or Canada: 152 GSM-7 units or 66 Unicode units per segment. Check your sender type and destination before applying the usual figures. See Twilio's message-length reference.
Why counting visible characters can mislead
A GSM-7 extension character can consume two units. For example, a right bracket needs an escape: 81 right brackets occupy 162 GSM-7 units, not 81. The GSM-7 reference explains the extension mechanism.
A curly quotation mark can move the whole SMS out of GSM-7. An editor's ASCII setting is not a reliable substitute for an encoding check; see Twilio's Unicode guidance.
Do not interpret “70” as a promise that 70 visible emoji will fit. Unicode's segmentation guidance distinguishes user-perceived characters from storage size. Complex symbols need the provider's own encoding calculation. The guide to string length explains those different units.
Three worked budget examples
These are calculations under the usual table above, not messages sent through a network. They exclude the toll-free exception and assume no text transformation.
- 161 basic GSM-7 units: this exceeds 160, so use the multipart budget. Round 161 ÷ 153 up to get 2 segments.
- 81 right brackets: 81 × 2 = 162 units. Round 162 ÷ 153 up to get 2 segments.
- 71 Unicode units: this exceeds 70. Round 71 ÷ 67 up to get 2 segments. For a concrete example, use 71 repetitions of the Chinese character 漢. Do not apply that one-unit assumption to arbitrary emoji.
Check the exact copy before sending
- Finish the actual message, including the link, signature and punctuation you intend to send.
- Check its encoding and segment count with the provider's tool. Twilio links its segment calculator from the Unicode guidance above.
- Inspect any character that changes the encoding. Only replace it if the replacement preserves the intended language and meaning.
- Repeat the check after the last edit and confirm any route-specific exception with your provider.
Use the character counter for drafting and the character-versus-word explanation for the basics. Keep the final SMS encoding check in your sending workflow. This researched guide does not report carrier testing or predict delivery.