SMS Character Counter
Count your text the way phones do, with encoding and segment detection.
See GSM-7 vs UCS-2, why an emoji or curly quote drops the limit to 70, and how many SMS segments your message costs.
How does SMS character counting work?
An SMS character counter measures a text message the way a phone and a carrier do, which is not the same as counting plain characters. The length that matters depends on the encoding the message uses, and that in turn depends on which characters you type. Paste your message into the box above and the tool shows the detected encoding, the length in that encoding’s units, and how many segments the message costs, live as you type. It runs entirely in your browser, so your message never leaves your device.
There are two encodings. GSM-7 is the standard 7-bit alphabet SMS was built on; it covers the basic Latin letters, digits, common punctuation and a few symbols, and fits 160 characters in a single message. UCS-2 is a 16-bit encoding used whenever the message contains a character GSM-7 cannot represent, and it holds only 70 characters per message because each character takes twice the space. The catch is that it only takes one non-GSM character to switch the whole message: a single emoji, a curly or smart quote pasted from a word processor, or an accented letter outside GSM-7 drops your limit from 160 to 70 in an instant. This tool points out the exact character that caused the switch, so you can swap a curly quote for a straight one and get your 160 back.
When a message is longer than a single segment it is split into parts that the receiving phone stitches back together. Each part carries a small header, so the per-part limit drops to 153 characters for GSM-7 and 67 for UCS-2. That is why a 161-character message becomes two segments rather than one, and why adding a single emoji to a medium message can push it from one segment to three. A few GSM-7 characters, including the euro sign and the brackets, count as two units because they live in the GSM-7 extension table, so they fill a message faster while still keeping it in GSM-7.
Segments matter because carriers and messaging platforms usually bill and rate-limit per segment, so a message that quietly splits into three parts can cost three times as much to send. Keeping a message inside a single GSM-7 segment, or knowing exactly when it spills into the next one, helps with both cost and deliverability. This is a different job from the general character counter, which counts characters for writing limits, or the Twitter/X character counter for that platform’s limit; this page is the one to count SMS segments and detect GSM-7 vs UCS-2. Everything runs in your browser with no account and nothing to install.
SMS Encoding and Segment Examples
| Message | Encoding | Length | Per segment | Segments |
|---|---|---|---|---|
| Plain text Your order has shipped. | GSM-7 | 23 | 160 | 1 |
| With an emoji Your order has shipped 🎉 | UCS-2 | 25 | 70 | 1 |
| With a curly quote It’s on its way | UCS-2 | 15 | 70 | 1 |
| Long GSM-7 (161 chars) 161 plain characters | GSM-7 | 161 | 160 | 2 |
*Every row is produced by the same engine this page uses. Note how a single emoji or curly quote flips the encoding to UCS-2 and drops the per-segment limit to 70.
Features of Our SMS Character Counter
Detection
Calculator
Aware
That Flips It
You Type
Copy
& Private
Frequently Asked Questions
Click any question to read the answer.
How many characters are in one SMS?
It depends on the encoding. A message that uses only the standard GSM-7 character set fits 160 characters in a single SMS. The moment the message contains a character outside GSM-7, such as an emoji or a curly quote, it switches to UCS-2 encoding and a single SMS holds only 70 characters. This tool detects the encoding for you and shows the exact length and segment count.
Why did my message suddenly become 70 characters?
A single character outside the GSM-7 set forces the whole message into UCS-2 encoding, which holds only 70 characters per SMS instead of 160. The usual culprits are an emoji, a curly or smart quote pasted from a word processor, or an accented letter that GSM-7 does not include. This tool flags the exact character that caused the switch.
What is the difference between GSM-7 and UCS-2?
GSM-7 is the 7-bit alphabet SMS was built on. It covers basic Latin letters, digits, common punctuation and a handful of accents and symbols, and packs 160 characters into one message. UCS-2 is a 16-bit encoding used when the message needs characters GSM-7 cannot represent, such as emoji or many non-Latin scripts; it holds only 70 characters per message because each one takes twice the space.
Do emoji reduce the SMS character limit?
Yes. A single emoji forces the message into UCS-2, dropping the per-message limit from 160 to 70 characters. The emoji itself usually counts as two units as well, because most emoji are encoded as a surrogate pair. So one emoji can cost far more of your message than it looks.
Why is my message being sent as multiple texts?
When a message is longer than a single segment, it is split into parts that the receiving phone reassembles. Each part carries a small header, so the per-part limit drops to 153 characters for GSM-7 and 67 for UCS-2. A 161-character GSM-7 message, for example, is sent as two segments. Carriers often bill each segment as a separate message.
Do spaces and line breaks count?
Yes. Spaces and line breaks are characters in the message and count toward the length, the same as letters. A line break is a single GSM-7 character. Trailing spaces you cannot see still count, which can quietly push a message over a segment boundary.
Why do some characters like the euro sign count as two?
A few characters are part of the GSM-7 extension table: they can be sent in GSM-7 but take two units each, because they are encoded as an escape character followed by the base character. The euro sign and the brackets { } [ ] along with ^ ~ \ and | are the common ones. They keep the message in GSM-7 but use up space faster.
Is my message stored when I use this tool?
No. The tool runs entirely as JavaScript inside your browser, so your message is never uploaded, logged, or sent to a server. The page keeps working offline once it has loaded, and nothing you type leaves your device. You can check a private message with no privacy risk at all.