How this calculation works
The encoded size controls segmentation, rather than the visible letter count alone. GSM extension characters consume two septets; a non-GSM character switches the whole message to a Unicode-unit model. A supplementary Unicode character such as a simple emoji occupies two UTF-16 units.
Choose encoding → count encoded units → pack whole characters into 160/153 or 70/67 unit capacitiesA worked example
A five-letter Hello message uses five GSM-7 septets and one segment. With 161 ordinary GSM characters, multipart capacity is 153 units, so two segments are needed.
Good to know
A standard-capacity estimate, not a provider bill or delivery guarantee. No smart encoding, added unsubscribe text, national-language shift table, sender-specific capacity or grapheme-cluster packing. A two-unit character is kept together; providers may use other packing or line-ending conventions.
Reference: Twilio: SMS length, encoding and multipart segment capacities (opens in a new tab) ↗
A visible character is not always one encoded unit
A simple Latin letter usually consumes one GSM-7 septet. An extension character such as a brace or euro symbol consumes two. Adding a character outside that alphabet changes the encoding model for the whole message.
That is why a short edit can change the segment count unexpectedly. This calculator leaves the entered text intact: it does not replace curly punctuation, remove emoji or apply a provider’s smart-encoding feature.
The reading and speaking time calculator concerns how long people may take with text. An SMS segment calculator measures encoded capacity instead.
Multipart messages have less space per part
The standard-capacity model allows 160 GSM-7 septets in a single message. Once the message needs multiple parts, the modeled capacity falls to 153 per part to allow concatenation information. Unicode-unit limits are 70 and 67 respectively.
For 161 ordinary GSM characters, the model packs 153 into one part and eight into another. Extension characters and supplementary Unicode characters are kept as whole two-unit characters, so a part can have one unused unit before the next character.
Check the provider’s final message too
An added sender prefix, unsubscribe instruction, substituted punctuation or different line-ending handling can change the final payload. The estimate here uses the exact supplied code points, including spaces and line breaks.
Unicode code points are shown separately from encoded units. A multi-code-point emoji sequence can look like one icon on screen. This model does not promise to preserve that whole visual grapheme in one segment; compare your provider’s own final-payload estimator before relying on a bill.
A few questions, answered
Does this send my message?
No. It calculates locally and has no SMS-sending endpoint.
Why can an emoji change every segment limit?
A non-GSM character selects the Unicode-unit model for the entire message, including the ordinary letters already present.
Why can dividing total units by 153 undercount?
A two-unit character is not split across parts in this model. Unused capacity at a boundary can therefore require an extra part.