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.
Runs locally in your browser. Provider smart encoding, carrier behavior, and billing rules can vary.
See where your SMS splits
Each card shows the encoded capacity used by that billable segment. Extended GSM characters count as two septets.
Find characters that change your encoding
Only safe punctuation and spacing equivalents are auto-optimized. Emoji, names, and language characters are never silently removed.
Preview the savings before changing your text
Smart punctuation and Unicode spacing can often be replaced with visually similar GSM-7 characters without changing the meaning.
GSM-7
No safe replacements needed.
Preview optimized message
Your optimized preview will appear here.
Estimate billable segments and cost
Enter your own recipient count and provider cost per segment. No provider pricing is hard-coded.
Choose the segmentation profile
Standard SMS uses 153 GSM-7 or 67 Unicode units per multipart segment. Twilio documents a US/Canada toll-free exception of 152 / 66.
The toll-free profile reflects Twilio's documented US/Canada exception. Other providers and destinations can apply different behavior, so verify billing-critical sends with your provider.
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.


