Single SMS message technically supports up to 160 characters, or up to 70 if the message contains one or more Unicode characters (such as emoji or Chinese characters).
However, modern phones and mobile networks support message concatenation, which enables longer messages to be sent. Messages longer than 160 characters are automatically split into parts (called "segments") and then re-assembled when they are received. Message concatenation allows you to send long SMS messages, but this increases your per-message cost, because SMS are billed per segment.
The 160-character limit is for messages encoded using the GSM-7 character set. Messages not encoded with GSM-7 are limited to 70 characters. For detail on how these character limits change on concatenated (multi-segment) messages, see below.
For example, a 161-character message will be sent as two messages: one with 153 characters and a second with eight characters.
If you include non-GSM-7 characters, such as Chinese script or emoji, in SMS messages, those messages have to be sent using the UCS-2 encoding. Messages containing one or more UCS-2 characters can contain up to 70 characters in a single, non-segmented message. UCS-2 messages of more than 70 characters will be split into 67-character segments.
What is the history behind SMS message length?
The Short Messaging Service (SMS) is a standardized communication protocol that enables devices to send and receive brief text messages. It was designed to "fit in between" other signaling protocols, which is why SMS message length is limited to 160 7-bit characters, i.e., 1120 bits, or 140 bytes. SMS was first standardized as part of the 1985 GSM protocol and was subsequently codified into the SMPP signaling protocol that transmits SMS.
But things get tricky because GSM-7, the original character set designed for SMS, can only encompass 128 different characters, thanks to that 7-bit limit. So if you want to include characters from extended Latin or non-Latin scripts, you'll need to use UCS-2.