Product
SMS links: segments, GSM-7 and the cost of four characters
An SMS is 160 GSM-7 characters, 153 once it splits, and 70 if a single emoji sneaks in. Where a short link saves real money, and where it triggers a carrier filter.
By Wasim Idrishi · Updated · 4 min read
SMS is the one channel where link length has a price list attached. Every other platform, the argument is aesthetics. Here it is arithmetic, and the arithmetic has a boundary you can walk into by adding a single wrong character.
The numbers that decide your bill
A message encoded in the GSM 7-bit alphabet holds 160 characters. That alphabet covers basic Latin letters, digits and a short list of symbols.
Put in one character outside it, a curly apostrophe pasted from a word processor, an emoji, any Devanagari or Tamil, and the entire message re-encodes as UCS-2, which holds 70 characters. Not 70 for the offending character and 160 for the rest. Seventy for the whole thing.
Longer messages split into parts, and each part gives up header space: 153 characters per part in GSM-7, 67 in UCS-2, as specified in 3GPP TS 23.038 and unchanged as of September 2026. You are billed per part.
So a 164-character message costs two segments. Trimming four characters costs nothing and halves the send.
Where the link sits in that budget
A campaign URL with UTM parameters runs 80 to 150 characters. On a 160-character canvas, that is the message.
A gc.mw link is ten characters on a paid plan, gc.mw/ plus a four-character code, and eleven on free. Put the UTM
parameters on the link as stored fields rather than in the URL and they still arrive at your analytics through the
redirect, while the message carries ten characters instead of a hundred and thirty.
A worked example
A pharmacy chain sent an offer to 22,000 numbers.
The first draft was 187 characters including a tracking URL of 94. Two segments, 44,000 billed parts.
The revision replaced the URL with gc.mw/med, nine characters, with utm_source=sms and
utm_campaign=sep-offer stored on the link, and replaced a curly apostrophe with a straight one. Final length:
104 characters. One segment. 22,000 billed parts.
Same message, same tracking, half the cost. The link change did most of it and the apostrophe did the rest.
The click data was the second win. SMS gateways report delivery, not clicks; the short link gave them 1,900 clicks with a country and device breakdown, and a spike between 7pm and 9pm that moved every subsequent send to the evening.
The filtering problem, which is real
Carriers and enterprise messaging gateways filter public shortener domains, because scam SMS uses them constantly. The filtering is inconsistent by carrier and by country, it rarely produces an error you can see, and the first symptom is usually a delivery report that says delivered and a click count that says nothing.
Two mitigations, in order.
Use your own domain. go.yourbrand.com/med is your reputation, not a shared one, and it cannot be blocked by
someone else's campaign. Three custom domains are included on Business.
Send a test to real numbers on every carrier you serve before the bulk send. Not to your own phone on one network. This takes ten minutes and catches the failure that costs you a whole campaign.
Where per-recipient links are worth it
Almost never for promotions. One link per campaign, read in aggregate, answers every question a promotion has.
They are worth it for transactional messages, order tracking, appointment confirmation, delivery windows, where the link genuinely points somewhere different per person. The API creates them in a batch and returns the codes; at 100,000 calls a day on Business that is not a constraint for any list you can legally message.
Count the characters before you send
URL Shortener
Open the full toolShorten the destination, count the final message in a plain text editor, and check where it lands against 160 and 153. Then run the same message past the segment boundary deliberately once, to see what your gateway charges, most teams have never actually verified their own billing behaviour.
The branded links page covers stored UTM fields and aliases, and custom domain links covers the domain change that keeps carriers from eating your campaign.
Questions people ask
How many characters fit in one SMS?
160 using the GSM 7-bit alphabet. Add one character outside that alphabet, a curly quote, an emoji, most Indic script, and the whole message switches to UCS-2 at 70 characters. Concatenated messages lose header space: 153 per part in GSM-7, 67 in UCS-2.
Do short links get blocked by carriers?
Public shortener domains are filtered by some carriers and enterprise gateways because scam campaigns use them heavily. A link on your own domain, registered and consistent, is far less likely to be caught. This is the single strongest argument for a custom domain in SMS.
How much does a shorter link actually save?
A 60-character tracking URL against a 10-character short link saves 50 characters. On a message already near the boundary that is the difference between one segment and two, which is a 100% increase in send cost across the whole list.
Can I track SMS clicks per recipient?
Not with one link, and mostly you should not want to. Use one link per campaign and read the aggregate, or generate one link per recipient over the API if the use case genuinely needs it, order tracking does, a promotion does not.
Sources
- 3GPP TS 23.038, alphabets and language-specific information · checked 5 September 2026