Free tool · Messaging
SMS character and segment counter
Paste a message to see its encoding, its character count and how many segments it sends as, with the characters that force Unicode highlighted.
Your text stays in your browser; nothing is uploaded.
- Encoding
- GSM-7
- Characters
- 0
- Segments
- 0
- Left in the last segment
- 160 of 160
Characters that force UCS-2
Your message, with those characters highlighted
Segment counts are an estimate: networks can substitute characters or split long messages their own way.
Spanish and Portuguese: á, í, ó, ú, â, ê, ô, ã, õ and ç are not in GSM-7 and switch a message to UCS-2; é, ñ, ü and à are.
How this works and its limits
Runs in your browser: what you enter stays on your device and is never uploaded.
The counter applies the GSM 7-bit default alphabet and its extension table from 3GPP TS 23.038. A message that uses only those characters is sent as GSM-7; one character outside them switches the whole message to UCS-2, which fits fewer characters per segment.
Segment counts are an estimate: some operators substitute characters or split long messages in their own way, so the count on a given route can differ.
Data sources and licences
Operator names, brands and codes shown here are public reference data compiled from national regulators and other public sources. Their appearance does not indicate any partnership, endorsement, agreement or connectivity between unicomam.com and the named operators. All trademarks belong to their owners. Data is provided “as is” with no warranty; verify against the official source before relying on it for routing, billing or compliance decisions.
Regulatory information is for reference only and is not legal advice; check the regulator link and the “last verified” date.
Calculations follow 3GPP TS 23.038 / 23.003 / 27.007 / 36.101 / 38.101 (Release 18). This tool is not affiliated with or endorsed by 3GPP or ETSI.
Part of: A2P SMS, from first code to production
How SMS encoding and segments work
An SMS is sent in one or more segments, and its encoding decides how much text fits in each. A message written only with characters from the GSM 7-bit alphabet uses the GSM-7 encoding, which carries the most characters per segment. One character outside that alphabet, such as an emoji, a curly quote or a Chinese character, switches the whole message to UCS-2, which carries less than half as many. Longer messages are split into several segments that the handset joins back together.
The GSM 7-bit alphabet covers unaccented Latin letters, digits, common punctuation and a set of accented letters used in Western European languages. A few symbols, including the euro sign, square and curly brackets, the backslash, the caret, the tilde and the vertical bar, live in an extension table, and each takes the room of two characters. Everything else is outside GSM-7, including most of the accented letters used in Spanish and Portuguese, such as á, ó, ã and ç.
When a message is too long for one segment, each part carries a small header that tells the handset how to put the message back together. That header takes room from every part, so a long message holds fewer characters per segment than a single one, and adding one character to a message that just fits can add a whole segment. A part also never splits a character that takes two positions, which can leave it one position short.
Each segment is delivered and counted on its own, so the encoding and length of a template matter for every message of a campaign. A template that looks plain can still carry typographic characters pasted from a word processor: curly quotes, long dashes, non-breaking spaces or invisible zero-width characters. Replacing them with their plain equivalents keeps the message in GSM-7 without changing the wording.
Messages in Chinese, Arabic, Cyrillic and other non-Latin scripts are always UCS-2, so plan their length with that in mind; most emoji take two positions each even in UCS-2. Some networks also substitute characters or split long messages their own way, so treat the count as an estimate and test important templates on the route you use.