The character limit for a single SMS message is 160 characters. However, most modern phones and networks support concatenation; they segment and rebuild messages up to 1600 characters. Messages not using GSM-7 encoding are limited to 70 characters.
When you send a SMS message over 160 characters, the message will be split. Large messages are segmented into 153 character segments and sent individually, then rebuilt by the recipient's device. For example, a 161-character message will be sent as two messages, one with 153 characters and the second with 8 characters.
If you include non-GSM characters, such as Chinese script, in SMS messages, those messages have to be sent via UCS-2 encoding. Messages containing any UCS-2 characters are limited to 70 characters and will be concatenated into 67 character message segments, even if the messages contain fewer than 160 characters.
SMS is a standardized communication protocol that enables devices to exchange short text messages and was defined as part of the 1985 GSM protocol. Originally, it was designed to "fit in between" existing signalling protocols, which is why SMS length is limited to 160 seven-bit characters. It was subsequently codified into the SMPP signalling protocol that transmits SMS and is limited to precisely 140 bytes (or 1120 bits).
But things get tricky because GSM-7, the original charater set designed for SMS, only has the ability to denote 128 different characters in those 7 bits. So if you want to include more Latin or non-Latin scripts, you'll need to use UCS-2.
A common mistake is to inadvertently use a UCS-2 character, thinking it's GSM-7 character. GSM-7 isn't a supported character set in many text editors. The classic mistake is to use "curly quotes" not realizing that they're part of UCS-2 and not GSM7.
We recommend that you check any mass messages in our Message Segment calculator before you send them out. It will flag any UCS-2 characters to avoid you being double-charged for messages. If you use Twilio, you can see whether a message was encoded as UCS-2 or GSM7 by viewing an individual message in your console logs.