You typed one message. You pressed send to 20,000 people. Your invoice says you sent 40,000. Where did the other 20,000 come from?
They came from character 161. Or, more precisely, from a quirk of how SMS was engineered in the 1980s that still bills you today — the first segment of a text holds 160 characters, but the moment you spill over, every piece of the message shrinks to 153. A message you'd swear was "one text" quietly becomes two, and your per-blast cost doubles without a single warning on screen.
Full disclosure: I work for ReadySMS, so I have a stake in you caring about per-segment cost. But this cliff exists on every SMS platform on earth, including ours. Understanding it is the single cheapest optimization in SMS marketing — it costs you nothing but a few minutes of trimming.
Why 160 becomes 153
SMS runs on a protocol with a hard payload limit of 140 bytes per message. Using the GSM-7 encoding — 7 bits per character — that 140 bytes packs exactly 160 characters. That's your first segment, and it's the number everyone remembers.
The problem starts when your message is longer than 160. A single SMS can't carry more than 140 bytes, so the carrier splits it into multiple messages and staples them back together on the recipient's phone. To do that, each piece needs a small header — the User Data Header (UDH) — that says "this is part 2 of 3, reassemble in this order."
That header eats 6 bytes out of every segment. Six bytes of GSM-7 is 7 characters. So the usable space in a multipart message drops from 160 to 153 characters per segment.
Here's the table that matters:
| Message length (GSM-7) | Segments billed | Usable chars |
|---|---|---|
| 1–160 | 1 | 160 |
| 161–306 | 2 | 306 (153 × 2) |
| 307–459 | 3 | 459 (153 × 3) |
| 460–612 | 4 | 612 (153 × 4) |
Notice the trap on row two. Once you cross 160, you don't get 160 + 160. You get 153 + 153. So a 165-character message doesn't just tip into a second segment — it also loses 7 characters off the first one. You're paying for two segments to send content that a slightly tighter edit would have fit in one.
(If you use emoji or any non-Latin character, the encoding switches from GSM-7 to UCS-2 and the limits collapse to 70 and 67. That's a separate, brutal tax I've written about in The Hidden Emoji Tax — worth a read if you sprinkle 😊 into blasts.)
The 165-character message, billed
Let's make it concrete. Say your marketing team writes this:
"Hi Jordan! Our summer sale is officially live — take 25% off everything sitewide through Sunday only. Use code SUMMER25 at checkout. Reply STOP to opt out. Shop now: exmpl.co/sale"
Count it: 178 characters. That's over 160, so it splits into 153-char segments. 178 ÷ 153 = 1.16, which rounds up to 2 segments. Every recipient costs you double.
Now trim it:
"Hi Jordan! 25% off sitewide thru Sun — code SUMMER25 at checkout. Reply STOP to opt out. exmpl.co/sale"
That's 101 characters. One segment. Same offer, same code, same STOP language, same link. You cut nothing that matters and halved the send cost. That kind of rewrite is exactly what saved a campaign 50% in this teardown.
The 20,000-blast math, tier by tier
Trimming one message feels trivial. Multiply it across a real send and it stops being trivial fast.
ReadySMS bills per outbound segment plus a flat $0.0045/segment carrier pass-through — the fee carriers charge that most providers quietly fold into their "per-message" rate. (We itemize it separately, which I explain in the carrier pass-through breakdown.) So the true all-in per-segment cost is the tier rate + $0.0045.
Here's a 20,000-contact blast, comparing the 2-segment version to the 1-segment rewrite:
| Tier | All-in / segment | 2-segment blast (40k segs) | 1-segment blast (20k segs) | Saved |
|---|---|---|---|---|
| Starter | $0.0200 | $800.00 | $400.00 | $400.00 |
| Growth | $0.0170 | $680.00 | $340.00 | $340.00 |
| Enterprise | $0.0073 | $292.00 | $146.00 | $146.00 |
On the Starter tier, one edit — deleting 77 characters of filler — saves $400 on a single blast. Send weekly and that's over $20,000 a year. On Enterprise volume the per-message rate is lower, but the ratio is identical: the bloated version always costs exactly twice as much.
You can run these numbers on your own message lengths with the cost calculator.
Where the extra characters hide
Most 2-segment messages that should be 1-segment are carrying dead weight. The usual suspects:
- Full URLs.
https://www.example.com/summer-sale-2025is 40 characters. A short branded link is 15–20. (Just don't use shared public shorteners like bit.ly — they get carrier-filtered. Use a dedicated domain.) - Redundant greetings. "Hi {{first_name}}, I hope you're doing well today!" is 12 words of nothing. Personalization tokens also expand at send time — a name field that shows "Alexandria" is longer than the "Jordan" you tested with.
- Over-explained opt-out. "Reply STOP to unsubscribe from these messages at any time" is 57 characters. "Reply STOP to opt out" is 21 and just as compliant.
- Politeness padding. "We wanted to let you know that…" adds nothing a customer will read.
The single riskiest hidden character is the merge field. If you write 155 characters in your editor but your longest customer name pushes the rendered message to 162, that customer — and everyone like them — silently bills as 2 segments while your test send looked like 1.
How to stay under 160 on purpose
Treat 160 as a hard budget, not a soft ceiling. A few habits that keep you there:
- Draft to 155, not 160. Leave a 5-character buffer for merge-field expansion. Names, cities, and dynamic offers all grow at render time.
- Count the rendered message, not the template. A good platform shows you segment count live as you type. ReadySMS displays segments and encoding in the composer so you see the cliff before you cross it, not on the invoice.
- Shorten the link first. It's usually the biggest single block of characters and the easiest to cut.
- Say the opt-out in four words. "Reply STOP to opt out." Done. It satisfies carrier and TCPA expectations without a paragraph.
- Test with your longest data. Preview with a 12-character first name and a real dynamic offer, not "Jordan" and "20%."
When two segments are actually fine
I'm not going to pretend every message must be 160 characters. Sometimes it shouldn't.
If you're sending a genuinely detailed message — appointment details with address, date, time, provider name, and a reschedule link — cramming it into 160 characters can make it unreadable, and a confused recipient is worth less than the $0.02 you saved. A transactional confirmation that spans two segments and gets acted on beats a one-segment cryptogram that gets ignored.
The point isn't "never send two segments." It's never send two segments by accident. If your message needs 200 characters to do its job, spend the second segment deliberately. What kills margins is the 165-character promo that could have been 140 with a five-minute edit — paying double for filler nobody asked for.
For high-frequency, low-content sends — sale alerts, reminders, drips — that discipline compounds. If you're a retailer watching cost per send, the retail cost benchmarking guide is a good companion to this.
The takeaway
The 160-vs-153 boundary isn't a bug you can fix or a fee you can negotiate — it's baked into the protocol. What you can control is which side of it your messages land on. Character 161 costs you a second segment and seven characters off the first, and no platform pops up a warning when you cross it.
Before your next blast, paste your message into a segment counter and look at the number. If it says 2 and the content isn't genuinely worth two, you've found free money — usually $340–$400 per 20k send, every send.
Want to see exactly what your current message lengths are costing? Drop them into the ReadySMS calculator, or start with the 2,500 free credits and watch the live segment count as you write. The cliff is easy to avoid once you can see it.