GSM-7
SMS Character & Segment Counter
Paste an SMS to see exactly where it splits, identify Unicode characters that change encoding, preview safe GSM-7 fixes, compare before-and-after segment savings, and estimate campaign cost. Everything runs locally in your browser.
Write or paste your SMS
See exactly how encoding, Unicode characters, and multipart rules affect the final segment count.
Segment overview
See how the message is divided into billable SMS parts under the selected profile.
Character detail
Inspect segment boundaries, encoding state, spaces, line breaks, and characters that consume extra units.
Unicode inspector
Spot non-GSM characters and see whether a safe GSM replacement is available.
GSM optimization
Compare the current message with safe GSM-friendly replacements before applying anything.
GSM-7
No safe replacements needed.
Preview optimized message
Your optimized preview will appear here.
Campaign estimate
Scale the current segment count across recipients and your own per-segment rate.
How to use the SMS character counter
Diagnose the current encoding, see each billable segment, inspect Unicode triggers, and test safe optimizations before you send.
1. Paste the exact SMS message
Use the final message body, including punctuation, emoji, personalization text, and line breaks. The calculator updates immediately.
2. Inspect the segment map
Review how many billable segments the message uses and where the text splits under the selected segmentation profile.
3. Check Unicode triggers
The Unicode inspector lists each non-GSM-7 character, its code point, occurrence count, and a safe replacement when one is available.
4. Compare optimization and campaign impact
Preview safe GSM-7 fixes before applying them, then enter recipients and your own cost per segment to estimate the difference at campaign scale.
How SMS segment counting works
SMS capacity depends on encoding, not only on the number of visible characters.
GSM-7: 160 or 153 units
A single GSM-7 SMS can carry up to 160 septets. Once the message becomes multipart, space is reserved for concatenation data, leaving 153 septets per segment.
Unicode: 70 or 67 units
When text contains characters outside GSM-7, many SMS platforms use Unicode/UCS-2-style encoding. A single segment holds 70 16-bit units, while multipart messages commonly use 67 units per segment.
Some GSM characters use two units
Characters in the GSM extension table—such as ^, {, }, \, [, ], ~, |, and €—use an escape code and therefore consume two GSM-7 septets each.
SMS optimization and billing tips
Use optimization only where it preserves meaning, and treat provider-specific pricing or segmentation as a final verification step.
Optimize punctuation, not language
Safe optimization targets smart quotes, dashes, ellipses, and Unicode spacing with obvious GSM-7 equivalents. Emoji, names, and language characters are not silently removed.
Count billable segments, not just characters
A message can look short but become expensive when one Unicode character changes the whole encoding. Segment count is the metric that usually matters for billing.
Use the right profile
Standard multipart SMS commonly uses 153 GSM-7 or 67 Unicode units per segment. Twilio documents a US/Canada toll-free exception of 152 and 66.
SMS character counter FAQ
How many characters fit in one SMS?
A standard GSM-7 SMS can hold up to 160 encoding units in one segment. A Unicode/UCS-2 SMS can hold up to 70 16-bit units in one segment.
Why does a long GSM-7 SMS use 153 characters per segment?
Multipart SMS messages reserve space for a User Data Header so the receiving device can reassemble the parts. That leaves 153 GSM-7 septets per part instead of 160.
Why can an emoji make my SMS use more segments?
Emoji and other characters outside the GSM-7 set switch the message to Unicode/UCS-2-style encoding on many SMS platforms. The single-segment capacity then drops from 160 GSM-7 units to 70 Unicode units.
Do characters like ^, {, }, and € count extra in GSM-7?
Yes. GSM-7 extension-table characters are encoded with an escape code plus the character, so each uses two septets even though it looks like one visible character.
Is the segment count guaranteed to match my provider bill?
The calculator follows standard GSM-7 and Unicode SMS segmentation rules. Providers may apply smart encoding, carrier-specific behavior, or product-specific limits, so verify the final count in your messaging provider when billing is critical.
What does Apply safe GSM fixes change?
It only replaces selected Unicode punctuation and spacing characters with obvious GSM-7 equivalents, such as curly quotes with straight quotes and long dashes with hyphens. It does not remove emoji, names, or language-specific characters.
Why is there a US/Canada toll-free profile?
Twilio documents a toll-free multipart exception for SMS sent to the US or Canada: 152 GSM-7 units or 66 UCS-2 units per segment instead of the standard 153 or 67. Other providers can behave differently.
How does the campaign cost estimate work?
The calculator multiplies message segments by the recipient count and your own cost-per-segment input. TextBases does not hard-code provider pricing because rates vary by provider, sender type, carrier, and destination.


