URL shortener for SMS — keep the message in one segment
SMS character math is brutal — 160 chars per segment in GSM-7, 70 in UCS-2. A URL shortener built for SMS keeps your message in one segment and earns the click.
A URL shortener for SMS is the difference between a one-segment message that costs you $0.0075 to send and a two-segment message that costs you $0.0150 — for the same words. The carrier doesn't care that you only added 12 characters; once you cross 160, your single text bills as two. Multiply that across a 10,000-recipient campaign and the wrong link choice costs you $75 you didn't have to spend, plus a slower send queue and a higher fail rate on aging carriers.
This post is about the SMS-specific reasons short links matter more than they do anywhere else: the segment math, the silent encoding switch that drops your limit from 160 characters to 70, why bare bit.ly slugs trigger spam heuristics that branded short links don't, and how 10DLC and TCPA rules treat the redirect. Plus a character counter you can paste your draft into to see the segment cost before you hit send.
The headline: in SMS, every character is paid for, and the URL is usually the longest single token in the message. Shortening it well is the single biggest cost-and-conversion win available in the channel.
The character economics of a text message
SMS messages are billed by segment, not by character. A segment is up to 160 characters when the message uses only the GSM-7 character set — the original GSM standard alphabet defined in 3GPP TS 23.038. The moment any character outside that set appears, the entire message switches to UCS-2 encoding and the limit drops to 70 characters for the whole message — not 70 for the new character and 160 for the rest. Email senders fight a different version of the same character-and-attribution war — what Mailchimp-and-Outlook-style link wrapping does to a newsletter's analytics is the long-form sibling to the SMS segment trap above.
GSM-7 covers basic Latin letters, digits, common punctuation, and a small block of European accents. What it does not cover, and what most marketers accidentally include: smart quotes (the curly " and ' your CMS auto-inserts when you type a regular " or '), em-dashes and en-dashes, every emoji, the three-dot ellipsis character … instead of three periods, and many currency symbols (€ is in as an extension, £ is in, ¥ and ₹ are not).
A draft that looks like clean prose in your CRM can drop from a 160-char ceiling to a 70-char ceiling because your editor auto-converted the apostrophe in "you're." The recipient sees nothing different. Your bill doubles or triples.
The cost math at scale
A US Twilio send runs about $0.0075 per segment for A2P 10DLC traffic at standard tier — rates vary by carrier surcharges and volume, but $0.0075 is a reasonable working number. The math:
- 160 characters, GSM-7, 1 segment. $0.0075 per recipient. At 10,000 recipients, $75.
- 161 characters or one smart quote, 2 segments. $0.0150 per recipient. At 10,000 recipients, $150.
- 300 characters with one emoji, 5 segments (UCS-2 forces 70-char chunks, and concatenated SMS reserves 6 bytes of header per part, dropping the per-segment cap to 67). $0.0375 per recipient. At 10,000 recipients, $375.
The first jump — 1 to 2 segments — is the big one because it doubles the cost without adding any value. The cost difference between a well-shortened URL and a raw e-commerce link decides which side of that boundary you land on.
Where the URL fits in 160 characters
A typical e-commerce checkout URL — the kind your platform generates by default — runs 80 to 140 characters once you add the campaign tracking parameters your marketing team requires:
https://shop.brandname.com/products/spring-collection-2026?utm_source=sms&utm_campaign=spring_launch&utm_medium=text
That's 116 characters. Drop it into a 160-character message and you have 44 characters left for everything else: the offer, the brand name, the call to action, and the legally-required STOP keyword. Forty-four characters is "Hi, 30% off ends Sun. Reply STOP to opt out." with no room for the brand. That's not a marketing message; that's a hostage note.
A branded short URL on a domain you control runs 18 to 26 characters total:
https://brnd.link/spr26
Twenty-three characters. The same message body now has 137 characters of room — enough for a personal greeting, the brand name, the offer, the urgency, and the STOP. The URL didn't get shorter because someone hand-rolled a slug; it got shorter because the redirect lives on a short branded domain instead of an e-commerce platform's path-deep URL.
A short link for SMS isn't a nicety. It's the deciding factor in whether you stay inside one segment.
Why bit.ly looks worse in SMS than anywhere else
Generic shorteners — bit.ly, tinyurl.com, t.co, ow.ly — redirect fine. SMS is the channel where they damage your campaign the most, for three reasons specific to the medium.
No rich preview. iMessage-to-iMessage, Slack, Discord — most modern chat apps fetch the destination and show a preview card with the brand logo before the recipient taps. Carrier-routed SMS has no equivalent. The recipient sees the bare URL and has to decide on the domain alone. A bare bit.ly/3xK9pQ gives them nothing; a brnd.link/spr26 gives them the brand. The first looks like the spam they get hourly; the second looks like the merchant they bought from last month.
Carrier spam heuristics. US carriers (Verizon, AT&T, T-Mobile) run inline content classifiers on A2P SMS traffic. Several score messages with public-shortener domains higher on the spam-likelihood scale because those domains are heavily abused by phishing and smishing operators. Branded short links don't trigger the same penalty. A campaign that sees 96% delivery on brnd.link may see 91% delivery on bit.ly — and the difference is invisible to you because non-delivered messages don't generally show up in your dashboard.
The trust gap is wider in SMS than in email. Email recipients can hover a link before tapping; their client may show the resolved URL. SMS has none of that. The recipient's only signal is the domain. Branded short links earn the click in the same way they do in email, but the trust gap matters more here because the inspection options are fewer.
The character counter — see your message before you send it
The default draft above is over the 160-character GSM-7 limit, so it bills as two segments. Tap the swap button and the long URL gets replaced with a 23-character branded placeholder — the message drops to one segment and the per-10k cost halves. Try pasting in a real draft of yours; the silent-encoding-switch cases (apostrophes from a CRM, emoji from a designer) are the ones most marketers miss.
Branded short links on your own domain — every link 18–26 characters, every send inside one segment.
Set up your SMS short links10DLC, registered short codes, and what carriers verify
US A2P SMS runs through one of three sender types since the 2023 carrier reforms: 10DLC (10-Digit Long Codes registered through The Campaign Registry; default for most small and mid-sized businesses), short codes (5-6 digit, leased from carriers, $1k+/month, high throughput), and toll-free (8XX numbers also registered through TCR).
For all three, carrier classifiers care about your message content and the URLs in it. The 10DLC registration process explicitly asks what URLs will appear in your messages. Bare public-shortener domains flag at registration; vetted operators sometimes get conditional approval, sometimes don't. Branded short links on your own domain — registered with TCR alongside the campaign — pass cleanly.
The implication: a URL shortener for SMS is not just a length optimisation. It's a registration-level signal that you're a legitimate sender. Bare public shorteners will pass the technical send but degrade your sender reputation over time, and at the most-bureaucratic carriers (T-Mobile in particular has been strict) they can prevent campaign approval entirely.
TCPA, STOP, and what shortening doesn't change
The Telephone Consumer Protection Act applies equally to long and short URLs. Three rules that don't bend:
Every commercial SMS needs a STOP keyword and an opt-out path. "Reply STOP to opt out." — five words, 24 characters of message budget. The cleaner version is what aging carriers expect to see.
The URL doesn't replace the STOP keyword. A common mistake: linking "unsubscribe" to a one-tap web opt-out, omitting the keyword. Several state attorneys general have treated this as a TCPA violation because the keyword reply is the carrier-level mechanism — the URL-based opt-out is sender-level only. Belt and braces: include the keyword and optionally a link.
Consent records survive the shortener. Proof that the recipient opted in (timestamp, IP, source) needs to be retained per-recipient regardless of URL length. The shortener has no bearing on this — it just keeps the message inside one segment. The FCC keeps an enforcement record of TCPA cases at fcc.gov; recent settlements are the fastest way to internalise the edge cases.
UTM parameters and campaign attribution through the redirect
Every short link platform worth using preserves UTM parameters across the redirect. The recipient sees brnd.link/spr26; the destination receives the full ?utm_source=sms&utm_campaign=spring26&utm_medium=text query string after the redirect resolves. The redirect strips the wrap, appends the UTM tags configured in the link's metadata, and forwards the user.
For SMS specifically, standardise three conventions: utm_medium=sms (distinguishes SMS clicks from email and social — don't reuse email, the channel cost is wildly different), utm_campaign={campaign-id} (match the CRM's ID so analytics joins work without manual mapping), and utm_content={variant-id} (for A/B-tested message variants).
Most platforms attach UTMs at the link level — one slug per campaign, UTM appended consistently. The UTM parameters guide for short links walks through what to tag and what to skip; the SMS-specific note is that mobile-OS click events sometimes lose the referrer header, so UTMs are your only attribution lifeline. The platform side of carrying UTMs through the redirect is documented in the short-links docs, and you can build a tagged SMS link in under a minute on the free short-link generator.
The anti-pattern: cramming a QR code into an SMS
Every quarter or so a marketing team asks whether they should send a QR code image inside an SMS — typically for a vCard, a WiFi password, or an event invitation. The answer is no: the recipient is already holding a phone, they can't scan a QR code that's on the same phone. They need a tappable link.
Send a short link to whatever the QR would have encoded. For a vCard, link to a .vcf file — most mobile browsers download it and prompt to add the contact. For an event, link to a .ics file or a deep link into the calendar app. For WiFi, link to a credentials page, or share the password through a different channel entirely. QR codes are a print-medium tool; SMS is digital. Using a QR in SMS is using a hammer to insert a screw.
The reverse pairing works fine, though: a printed QR that opens an SMS draft on scan is how most SMS opt-in funnels actually start. The customer scans the code on a poster, table card, or packaging insert, their Messages app opens with the keyword pre-filled in a draft to your shortcode or 10DLC number, they tap send and they're on the list. The SMS QR code generator builds that pre-fill (sms: URL with body parameter) for any number and message, and the resulting QR lives on print where it belongs. Sister formats for the rest of the click-to-action stack — tel: dial via the phone call QR generator, mailto: draft via the email QR generator — cover the same one-scan-to-conversation pattern across the other channels customers reach for.
iMessage rich previews and domain reputation
When an iPhone receives an SMS containing a URL, iMessage attempts to fetch a rich preview if the source number is registered as a business and the destination domain returns valid OG metadata. The recipient sees a tappable preview card with the brand's logo and title.
Two places this goes sideways. Some shortener domains never get previews — Apple's preview-fetcher applies its own domain reputation logic, and bare bit.ly falls into the no-preview bucket on some iOS versions while branded domains on TLS with valid metadata generally don't. And the preview card is generated from the destination, not the redirect — if your destination is a lazy-loaded SPA without server-rendered OG tags, no card. The branded short link earns the trust signal at the domain level; the destination earns the preview at the metadata level.
Comparing SMS short-link tools
What separates a good SMS-suitable short-link platform from a generic one: custom branded domain support with auto-TLS and a low-latency redirect (SMS clicks happen within seconds of send; a slow hop feels broken), UTM templates at the link level, bulk slug generation via API for personalised campaigns, click rate-limiting and automated-traffic detection (SMS clicks come in fast bursts and the platform has to distinguish humans from carrier-side preview fetchers and gateway scanners), and a sustainable business model — the Bitly alternatives in 2026 comparison covers the trade-offs there.
Vanity slugs work in SMS the same way they work in print, but the character economics push you toward shorter ones — /spr26 beats /spring-launch-2026 when the message is fighting for the 160-char ceiling. The vanity short URL naming guide covers the recall multiplier; it applies to SMS more than other channels because the URL is the most visible single token in the message. The audio-broadcast cousin of the same constraint — where the listener hears the URL once and either types it or doesn't — is laid out in the short-links playbook for podcasters; the slug rules are tighter still when the recipient never sees the URL written down.
What we built
Linked.Codes lets you point any domain you control at the platform and use it for short links — auto-TLS, UTM templates per link, bulk-create via API for personalised campaigns, click-by-click analytics on the same plan rather than behind a paywall. The redirect runs on infrastructure tuned for the burst-traffic pattern SMS campaigns produce.
The point of a URL shortener for SMS isn't to be clever. It's to keep your message in one segment, earn the click despite the channel's spam-burdened reputation, and preserve attribution through to the destination.
Will my SMS provider auto-shorten links for me?
Twilio, Sinch, MessageBird, and most A2P providers offer optional click-tracking that wraps your URLs through their domain — twil.io, mblox.io, etc. It works technically but you give up domain trust (recipients see the provider's wrapper, not your brand) and portability (if you switch provider, every wrap breaks). For any campaign-quality SMS, point a custom domain at a dedicated short-link platform and use that instead.
Does the carrier strip URLs out of SMS?
No, but they classify them. US carriers run inline content classifiers that score messages based on body content, source number reputation, and URL domain reputation. Bare public-shortener domains add a small spam-score bump; branded short links on your own domain don't. Messages that score high enough get filtered or delayed; the sender rarely gets explicit feedback that this happened.
Why does a 160-character message split when I add an emoji?
An emoji is outside the GSM-7 character set, so the entire message switches to UCS-2 encoding — and UCS-2 caps at 70 characters per segment, not 160. Same applies to smart quotes, em-dashes, ellipsis characters, and many currency symbols. Your CMS may auto-correct typed characters into UCS-2 versions without telling you. The character counter above shows which encoding your draft uses.
Should I use bit.ly in SMS?
For one-off personal use, sure. For business campaigns, no. Three reasons: (1) recipients can't preview a bare bit.ly URL before tapping, and the domain has phishing-adjacent connotations in 2026; (2) carrier classifiers penalise public shorteners, harming deliverability over time; (3) 10DLC registration ranks branded domains higher than generic ones during campaign approval. A branded short link on your own domain solves all three.
How do TCPA and 10DLC rules treat shortened links?
TCPA itself is content-agnostic — it cares about consent, opt-out keywords, and sender identification, not URL structure. The 10DLC registration process (via The Campaign Registry) does ask what URLs your campaign will use; bare public-shortener domains can fail or get conditional approval at the carrier level, branded domains generally pass. Document your URL strategy in the campaign registration to avoid surprises.
Can the recipient see what domain a short link goes to before they tap?
In stock SMS, no — the URL is bare text and tapping is the only way to follow it. iMessage on iOS attempts to fetch a rich preview card for some domains based on Apple's reputation logic. Branded domains with valid OG metadata generally get cards; bare bit.ly often doesn't. Either way, the visible domain in the URL itself is the recipient's primary trust signal.
Do UTM parameters survive a short-link redirect?
Yes if the platform is configured to attach them. Most short-link tools let you set UTMs at the link level — the redirect appends them to the destination URL on resolve. The recipient sees a clean short slug; the analytics on the destination receive the full UTM string. This is the standard pattern for SMS campaign attribution.
Sourcesshow citations
- 3GPP TS 23.038 — Alphabets and language-specific information (defines GSM-7 and UCS-2 encoding for SMS) — https://www.3gpp.org/ftp/Specs/archive/23_series/23.038/
- Twilio: SMS character limits and message segments — https://www.twilio.com/docs/glossary/what-sms-character-limit
- Twilio: GSM-7 vs UCS-2 encoding reference — https://www.twilio.com/docs/glossary/what-is-gsm-7-character-encoding
- CTIA Messaging Principles and Best Practices — https://www.ctia.org/the-wireless-industry/industry-commitments/messaging-interoperability-sms-mms
- The Campaign Registry: 10DLC overview and URL guidance — https://www.campaignregistry.com/resources/
- FCC: TCPA enforcement and consumer complaint records — https://www.fcc.gov/general/telemarketing-and-robocalls
Try it on your own domain
Branded short links and dynamic QR codes, on your subdomain or your own domain. One-time purchase, no per-click fees.