Why does my SMS cost 2× more when I include an emoji?
SMS has two encodings: GSM-7 fits 160 characters in a single message. But the moment you type an emoji, smart quote, accented letter or non-Latin script, SMS switches to UCS-2 and only fits 70 characters per segment.
Paste your message into the field above. The tool shows which encoding it will be sent in, how many segments it will use, what it will cost at Twilio, MessageBird, Plivo, and which specific character is forcing the more expensive encoding.
Runs in your browser, the text never leaves your device. Standard compliant with GSM 03.38 / 3GPP 23.038.
How to use it
- Type or paste your message in the field at the top. It counts characters live.
- Check the encoding in the first stat card ("GSM-7" or "UCS-2") and how many segments the SMS will use.
- If you see UCS-2, some character (emoji, accented letter, smart quote, long dash) is forcing the expensive encoding. The list of offending characters is shown below.
- Click "Strip diacritics" to convert characters like "café" to "cafe" and "naïve" to "naive" back to GSM-7 (160 chars/segment instead of 70).
- In the "Cost" section pick a provider (Twilio, MessageBird, Plivo, Polish operators...) or enter your own price per segment to estimate campaign spend.
When this is useful
Real situations where this calculator saves you money:
- Bulk SMS via Twilio, MessageBird, Plivo, Vonage: estimate the campaign cost before pressing send. 10 000 messages in UCS-2 (2 segments) instead of GSM-7 (1 segment) = paying 2× as much.
- Transactional notifications: "Your code is 123456" fits in 1 segment of GSM-7. "Your code is 123456" with smart punctuation is already UCS-2 = potentially 2 segments at the same length.
- OTP and verification messages: most providers cap free OTP at 160 GSM-7 characters. Including a single emoji can double the cost without warning.
- Marketing SMS: A/B testing copy length is meaningless if one variant goes UCS-2 and the other stays GSM-7.
- System alerts: Sentry/PagerDuty/Opsgenie sending alerts via SMS. Long stack traces = many segments = expensive.
- Shipping notifications from carriers: "Order shipped" stays GSM-7. "Order shipped." with an en-dash auto-inserted by your editor flips to UCS-2.
- Replace verbose phrasing with short: "hrs" instead of "hours", "min" instead of "minutes". Every character saved near the 160/153 boundary is potentially a saved segment across thousands of messages.
After checking message length, also see our character counter for longer copy, URL encoder for tracking links, or SMS QR code for offline campaigns.