Trimming 12 Characters Cut This Campaign's Send Cost in Half
Here's a message I pulled from a real campaign last month. It was 172 characters. The sender thought it was "one text." It wasn't — it was two, and they were paying for two on every single send. We rewrote it down to 158 characters, kept the offer, kept the link, kept the STOP footer, and cut the bill in half.
Full disclosure: I work for ReadySMS, so I bill per segment and I notice this stuff for a living. But the math here is carrier-level math — it's true no matter who you send through. The only thing my employer changes is that our transparent per-segment billing makes the waste obvious instead of burying it.
The 160/153 boundary, and why it bites
A plain-text SMS (GSM-7 encoding) fits 160 characters in a single segment. The moment you hit 161, the message splits into multipart segments of 153 characters each — the extra 7 chars per part go to the headers that stitch the parts back together on the recipient's phone.
So the cost cliff looks like this:
| Character count | Segments billed |
|---|---|
| 1–160 | 1 |
| 161–306 | 2 |
| 307–459 | 3 |
The cruel part is the cliff at 161. A 161-character message costs the same as a 306-character message — both are 2 segments. If you're sitting at 165 or 172, you are paying double for a handful of characters you almost certainly don't need.
(And if you've ever dropped a single emoji into a message, the cliff moves to 70 characters because the whole text switches to unicode encoding. That's its own expensive trap — I broke it down in The Hidden Emoji Tax.)
The message we started with
Here's the original, character count in brackets:
Hi {{first_name}}! 🎉 Don't miss out — our Summer Sale is officially LIVE! Get 25% off your entire order this weekend only. Shop now at https://bit.ly/summer25 — Reply STOP to unsubscribe.
Two problems immediately. First, the emoji drops us into unicode, so this is already a unicode message capped at 70 chars per segment — that one 🎉 alone pushes this to 3 segments. Second, even without the emoji, the plain text runs 178 characters, which is 2 segments.
For the worked example below I'll assume we drop the emoji first (the single biggest lever) and then tighten the copy. After removing 🎉, the text is GSM-7 and 174 characters — still 2 segments.
Where the wasted characters actually live
When I audit a message over the boundary, I look at the same five places almost every time:
- The greeting. "Hi {{first_name}}!" is fine, but "Hello there, {{first_name}}!" or a long merge field can blow the budget. Note that merge fields count as their resolved length —
{{first_name}}becomes "Christopher" (11 chars), not 14. - Hype words that say nothing. "officially LIVE," "Don't miss out," "this weekend only" — these are reflexes, not information. The offer carries the urgency.
- The link. A
bit.lylink is ~22 characters, and shorteners like that are increasingly a deliverability liability — carriers filter shared shortener domains. (More on that in Why Your Bit.ly Links Are Getting Blocked.) A branded short domain is both safer and often shorter. - The compliance footer. You need opt-out language, but "Reply STOP to unsubscribe" (25 chars) can become "Txt STOP to opt out" or, on a registered campaign with automatic STOP handling, simply "Reply STOP" (10 chars) on promotional sends after the first.
- Punctuation and spacing. Double spaces, em-dashes spelled out, redundant exclamation points. Small, but they add up right at the cliff.
The rewrite, line by line
Here's the same offer, tightened:
{{first_name}}, 25% off your whole order this weekend. Shop: rdy.sh/summer25 Reply STOP to opt out.
Let me account for every change:
- Dropped the emoji → back to GSM-7, 70-char cliff gone.
- "Hi … ! Don't miss out — our Summer Sale is officially LIVE! Get" → just the offer. ~50 characters saved.
- "your entire order" → "your whole order." 4 chars.
- Branded short link
rdy.sh/summer25instead ofbit.ly/summer25. Shorter and less filterable. - "Reply STOP to unsubscribe." → "Reply STOP to opt out." 4 chars, same compliance intent.
Resolved with an 11-character first name, that lands at 158 characters — one segment. We kept the offer, the discount, the link, and the opt-out. We lost nothing a customer cares about.
The money, at volume
Say you're sending this to 50,000 contacts. On ReadySMS's Standard tier the rate is $0.0064/segment, plus the $0.0045 carrier pass-through that gets billed separately and un-marked-up. So your all-in per segment is $0.0109.
Original (2 segments, GSM-7 version):
50,000 × 2 × $0.0109 = $1,090
Rewritten (1 segment):
50,000 × 1 × $0.0109 = $545
That's $545 saved on a single send, from deleting words that weren't doing any work. Run that promo weekly and you've saved roughly $28,000 a year on copy edits alone.
And if the original had kept the emoji — making it 3 unicode segments — you'd have been at 50,000 × 3 × $0.0109 = $1,635. The rewrite isn't a 50% cut against that baseline; it's a 67% cut. The emoji really is that expensive at scale. (The separate $0.0045 line item, by the way, is the same carrier fee everyone pays — most providers just hide it inside their "per-message" price. I unpacked it in The $0.0045 Line Item.)
A checklist you can run before every blast
Before you hit send on anything going to more than a few thousand people:
- Count characters with the merge field resolved to your longest realistic value. A name field that averages 6 chars can spike to 12. Test against the worst case.
- Strip every emoji unless one genuinely lifts conversion enough to pay for the unicode penalty. That's a high bar.
- Replace shortener links with a branded short domain. Better deliverability, usually fewer characters.
- Cut hype adjectives. If the sentence still makes sense without the word, the word was costing you money.
- Use the shortest compliant opt-out phrasing your campaign allows. With automatic STOP handling on a registered 10DLC campaign, you don't need to over-explain it every time.
- Aim for 155 or under, not 160. Leave headroom so a longer name doesn't silently tip you to two segments.
When two segments is the right call
Honesty check: not every message should be squeezed to one segment. A 2-segment message with a clear, complete value proposition will out-earn a cramped 1-segment message that confuses people. If trimming costs you the actual offer, the link, or required disclosure language, stop trimming — the doubled send cost is trivial against a dead conversion rate.
The point isn't "never send two segments." It's "never send two segments by accident." The waste I see is almost always a message that should fit in one but spills over because of a 🎉, a long shortener, and three adjectives nobody reads.
The takeaway
The 160/153 boundary is a hard carrier rule, and a handful of characters on the wrong side of it doubles your bill on every send. Most over-boundary messages are 10–20 characters of fixable fat: an emoji, a bloated link, hype words, and a long opt-out footer. Cut those and you often land back under 160 with the offer fully intact.
If you want to see what a tightened message actually costs at your volume, run a few versions through the cost calculator and watch the segment count flip. The cheapest optimization in SMS is usually the delete key.