Skip to content
ToolsOrbit
SMS & Marketing

SMS Character & Segment Counter

Paste a text message to see its character count, encoding, segment count and estimated sending cost as you type.

148 / 160 units12 left in this segment

All characters are GSM-7 safe.

Characters
148
160 per segment
Encoding
GSM-7
160 single, 153 per part
Segments
1
Left in segment
12
Words
30
Lines
1

Cost estimator

Segments x price per segment x recipients.

$
Per recipient
$0.01
1 segment
Total cost
$7.90

Runs in your browser. Nothing you enter is uploaded.

How to use the sms counter

  1. 1

    Type or paste your message into the box. Every count updates as you type, so you can trim while you write.

  2. 2

    Check the encoding badge. GSM-7 gives you 160 characters in a single message. Unicode (UCS-2) gives you 70.

  3. 3

    Look at the highlighted characters under the box. Each one forces Unicode. Use the replace button to swap smart quotes, dashes and special spaces for GSM-safe versions.

  4. 4

    Watch the segment count. Anything above one segment is sent, and usually billed, as several messages.

  5. 5

    Enter your price per segment and the number of recipients to estimate what the send will cost.

How it works

Carriers do not count letters, they count encoded units. The encoding decides how many units fit in one message, and the length decides how many messages (segments) are needed.

GSM-7: 1 segment if length is 160 or less, otherwise ceil(length / 153)

UCS-2: 1 segment if length is 70 or less, otherwise ceil(length / 67)

Extended GSM characters ^ { } \ [ ~ ] | € count as 2 units each

In UCS-2, emoji and other characters outside the Basic Multilingual Plane count as 2 units

Cost = segments x price per segment x recipients

Worked example

A 165-character message that uses only GSM-7 characters is over the 160 limit, so it is split into concatenated parts of 153: ceil(165 / 153) = 2 segments.

Add a single emoji to that message and the whole thing switches to UCS-2. The emoji counts as 2 units, so the length becomes 167 and the limit per part drops to 67: ceil(167 / 67) = 3 segments.

At $0.0079 per segment sent to 1,000 recipients, the plain version costs 2 x 0.0079 x 1,000 = $15.80. The version with the emoji costs 3 x 0.0079 x 1,000 = $23.70. One character added 50% to the bill.

Why a 161-character message becomes two messages

A single SMS carries 140 bytes of payload. With the 7-bit GSM alphabet that is 160 characters. When a message is longer, the sending platform splits it into parts and adds a small header (the User Data Header) to each part so the receiving phone can stitch them back together. That header uses 6 bytes, which leaves room for 153 GSM-7 characters per part instead of 160. For Unicode messages, where each character takes 2 bytes, the limits are 70 for a single message and 67 per part.

That is why 160 characters is one segment but 161 is two, and why 306 characters still fits in two segments while 307 needs three. Most platforms bill per segment, not per message, so the segment count is the number that matters for cost.

GSM-7 versus Unicode (UCS-2)

GSM-7 is the original SMS alphabet defined in the GSM 03.38 standard. It covers the Latin letters, digits, common punctuation, a handful of accented letters (such as é, ü and ñ) and a few Greek capitals. Nine characters live in an extension table and cost two units each: the caret, curly braces, backslash, square brackets, tilde, pipe and the euro sign.

If your message contains even one character that is not in GSM-7, the entire message is sent as UCS-2, where every character costs 2 bytes. The usual culprits are emoji, curly quotes and dashes pasted from a word processor, accented letters outside the GSM set (á, í, ó, ú, ç in lowercase, ő and many more), and invisible characters such as non-breaking spaces. The counter lists each one with its Unicode code point so you can find and fix it.

Common mistakes that quietly inflate your bill

  • Pasting from Word or Google Docs. Both replace straight quotes with curly ones and double hyphens with em dashes. One apostrophe in "don’t" is enough to switch a whole message to Unicode.
  • An emoji in the signature. A single emoji at the end halves your per-segment capacity, which often doubles the segment count of a message that was already near 160.
  • Long tracking links. A full URL with UTM parameters can take 60 to 90 characters. Use a short link domain so the link costs 20 to 25.
  • Personalisation fields. {FirstName} looks short in the template but "Christopher-Alexander" is 21 characters. Test with your longest real values, not with "Sam". Note that the braces themselves are extended characters in GSM-7 and count double if they are sent literally.
  • Counting characters instead of units. Spreadsheet LEN() functions count code points, not septets, so they miss the double cost of extended characters and the switch to UCS-2.

Tips for staying inside one segment

  • Write the message first, then cut. Leading with the action ("Reply YES to confirm") usually lets you drop a sentence elsewhere.
  • Use straight quotes and plain hyphens. The replace button does this in one click.
  • Spell out or drop the emoji unless the campaign is clearly worth 2 to 3 times the cost.
  • Keep the opt-out text short and standard: "Reply STOP to opt out" is 21 characters and satisfies most carrier requirements.
  • Leave 10 to 15 characters of headroom for personalised fields that vary in length.

If you are building a sign-up form for your messages, the SMS opt-in disclosure generator produces the consent language carriers expect. For longer copy such as email or social posts, the word and character counter covers platform limits.

How the cost estimate works and what it leaves out

The estimate multiplies the segment count by your price per segment and the number of recipients. The default price of $0.0079 reflects a typical US list price for application-to-person SMS, but rates vary by country, carrier, message type and volume, so enter the figure from your own provider. The estimate does not include monthly number fees, carrier pass-through surcharges, registration fees for 10DLC campaigns or taxes. Treat it as a planning figure for comparing message drafts, not an invoice.

One more detail: a few carriers and handsets deliver concatenated parts as separate bubbles instead of one long message. The segment count here follows the standard calculation used by major messaging platforms, so it will match what you are billed even where the display differs.

Frequently asked questions

Why does my message show 2 segments at 161 characters?

A single GSM-7 message holds 160 characters. Once a message is longer it has to be split, and each part loses 7 characters to the header that lets the phone reassemble the parts. So 161 characters needs two parts of up to 153 characters each.

Which characters are in the GSM-7 alphabet?

All basic Latin letters and digits, standard punctuation, the space and line break, a set of accented letters including é, è, ü, ö, ä, ñ, à, ì, ò, ù, ø, å and æ, some Greek capitals, and currency signs for dollar, pound and yen. The extension table adds ^ { } \ [ ~ ] | and €, each costing two characters.

Do emoji really cost more?

Yes, in two ways. An emoji switches the whole message to Unicode, which cuts the single-message limit from 160 to 70 characters, and most emoji count as two characters themselves. A 150-character message with one emoji at the end becomes three segments instead of one.

Does the recipient see one message or several?

Almost all modern phones reassemble the parts and show one long message. A few older handsets or carriers show them separately and occasionally out of order. Either way, you are billed per segment, not per message.

Why do curly quotes and dashes switch my message to Unicode?

Curly quotes (“ ” ‘ ’) and the en and em dashes are not part of the GSM-7 alphabet, even though they look like ordinary punctuation. Word processors insert them automatically. Replace them with straight quotes and hyphens and the message goes back to GSM-7.

Is my message stored or uploaded anywhere?

No. The counting happens in your browser. Nothing you type is sent to a server, logged or stored, unless you choose to share a link, in which case the message is only in the link itself.

Runs in your browser. Nothing you enter is uploaded.

This tool runs entirely on your device. There is no server-side processing and no account. Last reviewed October 21, 2026. Read the disclaimer.