You wrote a tight 150-character promo. It should be one segment. You send it to 40,000 people, check the invoice a week later, and the segment count is nearly double what you expected. Nothing in the copy looks wrong. The culprit is almost always invisible: a curly apostrophe your word processor helpfully "corrected" for you.
Full disclosure: I work at Ready, and we bill per outbound segment plus a transparent $0.0045 carrier pass-through, so when a hidden character doubles your segment count, it doubles the number we charge you. I'd rather you catch it before you hit send.
What actually happens: GSM-7 vs UCS-2
SMS doesn't send "characters" the way a text editor thinks about them. It sends encoded bytes, and there are two encodings that matter.
GSM-7 is the default. It covers the Latin alphabet, digits, basic punctuation, and a handful of symbols. Because each character fits in 7 bits, you get 160 characters per segment. Multipart messages split at 153 characters each (7 bytes per segment go to reassembly headers).
UCS-2 is the fallback. The moment your message contains even one character that isn't in the GSM-7 set, the whole message switches to UCS-2, where every character eats 16 bits. That drops your limit to 70 characters per segment, and multipart UCS-2 splits at 67 characters.
There's no partial penalty. One out-of-set character taxes the entire message. A 150-character promo that would have been a single GSM-7 segment becomes, at 70 chars per segment, three UCS-2 segments.
The characters that flip the switch
Here's the frustrating part: the offenders usually don't come from you typing them on purpose. They come from autocorrect, from pasting out of Google Docs or Word, or from an emoji you added to "warm up" the copy.
The usual suspects:
| Character | What it looks like | Where it sneaks in |
|---|---|---|
Curly apostrophe ’ | We’re instead of We're | Word/Docs autocorrect |
Curly quotes “ ” | “Sale” instead of "Sale" | Same autocorrect |
Em-dash — / en-dash – | Deal—today only | Autocorrect on double-hyphen |
Ellipsis … | The single-character … vs ... | Autocorrect |
| Any emoji 😊 🔥 🎉 | Obvious, but the cost isn't | Added on purpose |
Accented letters é ñ ü | Product names, customer names | Merge fields |
Bullet •, degree °, arrows → | Fancy formatting | Copy-paste |
The GSM-7 set does include a few things people assume it won't: the plain straight apostrophe ', straight quotes ", the standard hyphen -, and € £ $. The problem is that the straight apostrophe and the curly one look nearly identical at a glance, and your tools default to the expensive one.
A before/after rewrite audit
Let's run a real promo through it.
Before (as pasted from a doc):
Don’t miss it — our biggest sale’s here! Save 25% today only 🎉 Shop: rdy.co/x
Count the characters and it's about 76. Feels like one segment. But it contains a curly apostrophe (twice), an em-dash, and an emoji. That forces UCS-2, so the boundary is 70/67, and 76 characters becomes 2 segments.
After (GSM-7 clean):
Dont miss it - our biggest sale is here! Save 25% today only. Shop: rdy.co/x
Same message, straight punctuation, no emoji, contraction reworded. Now it's plain GSM-7 at roughly 75 characters, comfortably 1 segment.
You just cut this send's cost in half by changing punctuation nobody will notice was different.
The money, worked out
Say you send that promo to 40,000 opted-in subscribers on Ready's Standard tier ($0.02/segment + $0.0045 carrier = $0.0245 all-in per segment).
Curly version, 2 segments each: 40,000 × 2 × $0.0245 = $1,960
Clean version, 1 segment each: 40,000 × 1 × $0.0245 = $980
A single autocorrected apostrophe and one emoji cost you $980 on one blast. Send weekly and that's roughly $51,000 a year in segments you never needed to buy.
It gets worse at scale in the other direction, too, the automatic Growth rate ($0.016/segment, applied once you pass 50,000 segments in a month) kicks in based on segment volume. Padding your sends with UCS-2 inflation gets you to the discount faster, sure, but you're paying full freight on the padding to get there. Not a strategy.
If you want to sanity-check numbers like this before a big campaign, the Black Friday segment budget walkthrough runs the full math on an 80,000-contact list.
Emoji deserve their own warning
A curly quote is an accident. An emoji is usually a choice, and it's the single most expensive character you can add to a promo. One 😊 doesn't just flip you to UCS-2; because emoji are surrogate pairs, they often count as two UCS-2 characters, eating into your already-halved 70-character budget faster than you'd guess.
I'm not saying never use them. A 45-character message with one emoji still fits in a single 70-char UCS-2 segment, and emoji can lift engagement on the right audience. The rule is: know you're paying the tax, and stay under the new boundary. We broke the full emoji math down separately in The Hidden Emoji Tax if you want the per-segment breakdown.
How to catch it before you send
A short pre-send checklist that costs nothing:
- Turn off smart quotes in whatever you draft in. In Google Docs: Tools → Preferences → uncheck "Use smart quotes." In Word: File → Options → Proofing → AutoCorrect → uncheck straight/smart quote replacement.
- Draft in a plain-text editor (Notepad, TextEdit in plain mode, VS Code) so nothing gets "helped."
- Reword contractions when it's cheap: "Don't" → "Do not" or "Dont" reads fine in a text and drops the apostrophe entirely.
- Replace em-dashes with a hyphen
-and ellipses with three periods.... - Watch your merge fields. A customer named "José" or a product called "Café Blend" can silently flip an otherwise-clean template to UCS-2 for that contact. If your list has accented names, budget for it.
- Check the encoding in your composer. Ready shows you the segment count and encoding as you type, so you see the message flip from 1 GSM-7 segment to 2 UCS-2 the instant you paste a bad character, before it's a line item.
For sends where every segment counts, the 12-character rewrite that halved a campaign's cost is a good companion read, it's the same discipline applied to length instead of encoding.
The one exception worth naming
If your audience genuinely needs non-Latin characters (Spanish accents in a bilingual list, non-English scripts) you cannot avoid UCS-2, and you shouldn't try to butcher the language to save a penny. Text that reads wrong to your customer costs you more than a segment. In that case, plan the budget around the 70-character boundary from the start: write shorter, front-load the offer, and put the link where it survives a split. The encoding isn't the enemy; accidental encoding is.
The takeaway
The GSM-7 to UCS-2 flip is the quietest cost leak in SMS marketing because the character that triggers it is usually invisible to the human eye. One curly apostrophe, one em-dash, one emoji, and your 160-character budget collapses to 70, often doubling or tripling the segment count on a message that looked perfectly fine.
The fix is free: kill smart quotes, draft in plain text, and watch the encoding indicator before you send. On a 40,000-contact blast that's the difference between $980 and $1,960, for punctuation nobody will miss.
If you want to see the segment count and encoding update live as you write, that's built into the Ready composer, start with 2,500 free credits and audit your next campaign before you spend a cent on a curly quote.