SMS Character Counter
The real SMS math, live: encoding detection (GSM-7 vs Unicode), the correct 160/153 or 70/67 budget, and the segment count that determines what a message actually costs to send.
Type a message to see its SMS segments.
The emoji cliff, quantified
A 155-character plain message is one segment. Add a single 🎉 and it becomes three: the encoding flips to Unicode (70 per single segment, 67 concatenated) and the emoji itself costs two units. For a campaign of 10,000 messages billed per segment, that emoji just tripled the send cost. The panel above shows the detected encoding precisely so this cliff is never a surprise — draft plain, verify one segment, and add flair only if the math still works.
Segment math you can check by hand
The rules compose into arithmetic anyone can verify. A 152-character plain-text reminder: GSM-7, under 160, one segment. Stretch it to 168: over the single-segment ceiling, so every segment now reserves room for stitching headers and holds 153 — ⌈168 ÷ 153⌉ = 2 segments. The boundaries are sharp: a 459-character message is exactly three segments (3 × 153), and one more character makes it four. Extended characters hide in plain sight: "Prices from €9 [limited]" is 24 visible characters, but €, [ and ] cost two septets each, so it spends 27 of the 160. And the encoding flip is the expensive one: a 148-character message is one segment, but append a single 🎉 and the whole message becomes UCS-2 — 148 characters plus an emoji costing two UTF-16 units is 150 units, and at 67 per concatenated segment that's ⌈150 ÷ 67⌉ = 3 segments. One emoji, triple the send cost — at 50,000 recipients, that's 100,000 extra billed segments.
The character-level traps run in both directions. é, ü, ñ, à and ö are all in the GSM-7 basic alphabet — accents alone don't break the budget — but the curly apostrophe (') that word processors substitute for ' is not, and neither are curly quotes or the em dash, so one pasted "You're" can silently move a whole campaign from the 160 budget to 70. This counter shows the detected encoding precisely so that flip is visible before you send. Two limitations worth knowing: you cannot verify segmentation by texting yourself, because phones reassemble concatenated messages invisibly — the split shows up only on the bill; and while the 160/153 and 70/67 arithmetic comes from the stable GSM 03.38 standard, gateways and carriers vary at the margins (national-language shift tables, carrier-side transcoding), so confirm billing behavior with your SMS provider before a large send.
Frequently asked questions
Why is SMS not just "160 characters"?
Because 160 assumes the compact GSM-7 alphabet. A single character outside it — most emoji, curly quotes, many accented letters — switches the whole message to Unicode (UCS-2), where a segment holds only 70. And once a message needs multiple segments, each segment shrinks (153 or 67) to make room for stitching headers.
What are segments, and why do they matter?
Long messages are split into segments that carriers transmit separately and phones reassemble. Senders are billed per segment — a 200-character marketing text costs two, and adding one emoji makes it four (202 Unicode units ÷ 67). For bulk SMS, segment math is money.
Which characters secretly cost two?
Within GSM-7, the extended set — € [ ] { } ~ ^ \ | — costs two "septets" each. And watch pasted text from word processors: curly apostrophes (’) are NOT in GSM-7 and silently flip the entire message to the 70-character Unicode budget. This counter shows the detected encoding so the flip is visible.
Do links and phone numbers count normally?
Yes — SMS has no shorteners or special counting; every character is just a character. That is why serious SMS senders use short domains and strip words: at 160-or-70, each character is budget.
Segmentation follows the GSM 03.38 standard (160/153 septets for GSM-7 with extended characters costing two; 70/67 UTF-16 units for Unicode). Carrier behavior can vary at the margins. Nothing you type is transmitted or stored. See the methodology page.