← Back to Blog

Putting a Link in an SMS Campaign Without Wasting Half the Message

Nitheesh KR
Nitheesh KR
Founder & CEO
• 10 Min Read
Marketing
Two SMS links compared with bars showing their length: a long tracking URL at 52 characters above a short branded link at 16.

You write a promo text. It looks short on screen. Your provider bills you for two messages and you cannot see why.

One SMS holds 160 characters. Go one over and you do not get 320 — you get two parts of 153. A short link for SMS protects that budget. But use a short domain you own, because US carriers filter shared public shorteners.

The rest of this post is the arithmetic, the traps, and the one country where the advice flips.

Why does one SMS hold only 160 characters?

The limit is not a round number someone picked. An SMS carries 140 bytes of user data, which is 1,120 bits.

The default alphabet, GSM-7, packs each character into 7 bits. 1,120 divided by 7 is 160. Twilio shows the same sum in its GSM-7 guide.

Unicode is where it gets expensive. UCS-2 spends 16 bits per character. 140 bytes divided by 2 is 70.

A long message is not one long SMS. It is cut into several ordinary messages, and each part has to carry reassembly instructions.

Those instructions sit inside the same 140 bytes. Twilio's character limit page puts the cost at about seven characters' worth of header.

So a split GSM-7 message holds 153 characters per part, not 160. UCS-2 falls from 70 to 67. Vonage's concatenation guide does the same sum for plain text. Two parts hold 306 characters: 160 minus 7, twice.

A two row table of SMS character limits, showing 160 and 153 for plain text and 70 and 67 once an emoji is added.

What drops your limit from 160 to 70?

One character can re-encode the whole message. If a character is not in the GSM-7 alphabet, the message switches to UCS-2. All of it, not just that character.

Twilio names two everyday causes.

Emoji. Any emoji at all. One smiley takes your message from 160 characters to 70.

Curly quotes. The ones a word processor makes: “ ” ‘ ’. You paste copy out of a doc and the quotes come with it. Nothing looks wrong on screen. Your segment count doubles.

Non-Latin script does the same thing, so Chinese, Hindi and Arabic all need UCS-2. Em dashes and ellipses are missing from those tables too, so in practice treat them the same way.

Two columns comparing the same 120 character message with and without an emoji, and what each version costs to send.

Two things that cost you nothing

The euro sign does not force UCS-2. You will read that it does. That is wrong. The € sign sits in the GSM-7 extension table in 3GPP TS 23.038, the spec that defines the alphabet. It stays in GSM-7 and costs two slots. More on that below.

A plain web address does not force UCS-2 either. Every character in a normal URL is in the basic GSM-7 set. Letters, digits, : / . - _ ? = & and the rest.

So https://links.acme.com/autumn is 29 ordinary characters, and it changes nothing about your encoding.

Which characters quietly cost you two?

Nine printable characters are missing from the basic 128-slot alphabet. They live in an extension table, reached with an escape code. Each one takes two slots instead of one.

Here is the complete list, from 3GPP TS 23.038 section 6.2.1.1:

^ { } \ [ ~ ] | €

That is all of them. A message of 155 plain characters plus three pipe symbols uses 161 slots, so in practice it splits into two parts.

The spec also describes what an old handset does with an escape it does not understand. It "shall display it as a space character". And a phone that cannot draw the euro sign shows a plain e, because the euro reuses that letter's code.

Watch your slug. The characters ~ [ ] { } \ ^ and | are all legal in a URL. Each one costs two slots, not one. A slug with a tilde quietly costs double.

Does a short link for SMS save enough to matter?

Take a campaign URL with tracking tags on it:

https://www.acme-store.com/collections/autumn-sale?utm_source=sms&utm_medium=sms&utm_campaign=autumn26

That is 102 characters. Out of 160, you have 58 left for the message itself. Barely a sentence.

Now the same destination behind your own short domain:

https://links.acme.com/autumn

That is 29 characters, so you bought back 73 — most of two sentences.

The tracking tags do not disappear. They live on the destination, so your analytics still get them.

There is a second reason to use a link. The carrier reports that a message was delivered. It cannot report a tap, because the tap happens in a browser. The link is the only place a tap can be counted. Chat apps have the same gap, which is why WhatsApp reports no taps on a link you send either.

A link can also do work that plain text cannot. It can send iPhone and Android readers to different pages, which matters when your message points at an app.

Why carriers care which shortener you use

Saving characters is the easy half. Getting delivered is the other half.

US carriers filter messages, and shared public shorteners are a known risk. The industry says so in writing.

The CTIA is the US wireless industry body. Its Messaging Principles and Best Practices is dated May 2023 and is still the current edition. Section 5.3.2 covers links inside messages:

"Message Senders should use a shortener with a web address and IP address(es) dedicated to the exclusive use of the Message Sender."

That is a should, from a trade association, and it is guidance rather than law.

T-Mobile is blunter. Its Code of Conduct, version 2.2 of November 2020, says this in section 4.7:

"The practice of using public URL shorteners in bulk messaging is highly discouraged, and messages containing them may be subject to blocking."

Section 3.3 of the same document goes the other way. It says "a branded short URL may be used to deliver custom links."

Twilio puts it strongest of all. Its toll-free guidance says shared shorteners are "forbidden by US carriers and will result in filtering".

Three sources, three different strengths. Only Twilio's toll-free page uses the word forbidden. Be wary of any page that tells you public shorteners are simply banned in the US. All three agree on the direction, though. Use a domain that belongs to you and matches the brand named in the message.

A dedicated short domain is exactly what the CTIA wording asks for, and it costs less than people expect. The free plan at clik.so includes one custom domain, and setup is a single CNAME record.

The part shorteners would rather not mention

The same T-Mobile document has a section 4.8, about URLs that redirect to another URL and then redirect again. Its verdict:

"This sending practice may result in immediate suspension of services."

A shortener is a redirect. One hop, from your own domain, to a page you control, is what section 3.3 permits. Stacking a shortener on a tracking redirect on another shortener is the thing that gets accounts suspended.

So: one hop, your domain, one honest destination. Do not chain them.

There was no October 2025 rule change

Some blogs claim the CTIA updated its messaging rules in October 2025 to restrict public shorteners. That did not happen.

CTIA did publish a document in October 2025. It is called Messaging Security Best Practices, and it never mentions URL shorteners. The Messaging Principles document is still the May 2023 edition, and the section 5.3.2 wording has not changed since 2019.

Registration comes first

None of this helps if your number is not registered. US traffic sent from an application over a normal 10-digit number needs A2P 10DLC registration.

Twilio's changelog says messages from unregistered 10DLC numbers have been blocked since 1 September 2023, returning error 30034. Unverified toll-free numbers have been blocked since 31 January 2024.

No shortener rescues unregistered traffic, ours included. Register the number first, then worry about the domain.

A tick and cross list of SMS link rules: register first, use your own domain, one redirect hop, no public shortener, no chains.

Where short links are not allowed

SMS rules are national, and there is no worldwide standard. Advice written for the US can get your messages blocked somewhere else.

India is the clearest case, and it affects a lot of readers.

Twilio's India SMS guidelines state it plainly: "Sending messages with shortened URL is not allowed."

We sell a URL shortener, and we are telling you not to put one in an Indian SMS. That is what the guidance says. Pretending otherwise would cost you delivered messages.

The reason is India's DLT system. Senders register their company, sender IDs and message templates on a platform run by the telecom operators. Most industry reporting agrees that each URL in a template has to be whitelisted there before it can go out.

A short link defeats that by design. The whitelisted address is the one approved to send, and a shortener swaps it for a different host.

So in India, a short link belongs in WhatsApp, email and social — not in SMS. None of those channels has a DLT template. Your tracking survives everywhere else; only SMS loses it.

Sending to more than one country? Read your provider's country page before you write the copy. Twilio publishes one per country, and they differ.

FAQ

Does a short link count as one character in an SMS?

No. It counts every character it contains, exactly like ordinary text. A short link helps because it is shorter, not because SMS treats links differently. The address https://links.acme.com/autumn is 29 plain GSM-7 characters.

Will one emoji really double my SMS cost?

It can. An emoji re-encodes the whole message as UCS-2, so your budget falls from 160 characters to 70. Anything above 70 then splits into parts of 67 each. A 120-character text that was one message becomes two.

Can I use Bitly or TinyURL for an SMS campaign?

You can, but US carrier guidance points the other way. T-Mobile's Code of Conduct says messages with public shorteners may be subject to blocking. Twilio says shared shorteners are forbidden on toll-free traffic. A branded domain you own is the safer choice.

Do I still need 10DLC registration if I use a branded domain?

Yes. They fix different problems. Unregistered 10DLC traffic to US numbers has been blocked since 1 September 2023. A branded domain improves how your delivered messages are treated. It cannot make an unregistered number send at all.

Does the euro sign break GSM-7?

No. The € sign is in the GSM-7 extension table in 3GPP TS 23.038. It stays in GSM-7 and takes two character slots instead of one. Emoji and curly quotes are the ones that force UCS-2 and cut you to 70.

Want to try this yourself?

Write your message. Count it. Swap the long URL for a branded short one and count it again. The difference is usually a whole sentence, and checking costs nothing. The free plan at clik.so gives you one custom domain and 2,000 tracked clicks a month, with no card required.


Nitheesh KR

Written by Nitheesh KR

Founder & CEO

Follow on LinkedIn →
Short Link for SMS: Save Characters, Avoid Filtering | ClikSo