GSM-7 / Unicode checker.
Paste any SMS text to classify every character as GSM-7 basic, GSM-7 extension or Unicode-only, and see exactly which characters force the whole message into UCS-2. Fix those and you stay on the 160-character GSM-7 budget. Nothing leaves your device.
Replace or remove these to switch the whole message back to GSM-7 and more than double the per-part character budget.
| # | Character | Code point | Classification | Units |
|---|---|---|---|---|
| 1 | W | U+0057 | GSM-7 basic | 1 |
| 2 | e | U+0065 | GSM-7 basic | 1 |
| 3 | ’ | U+2019 | Unicode-only | 1 |
| 4 | v | U+0076 | GSM-7 basic | 1 |
| 5 | e | U+0065 | GSM-7 basic | 1 |
| 6 | space | U+0020 | GSM-7 basic | 1 |
| 7 | u | U+0075 | GSM-7 basic | 1 |
| 8 | p | U+0070 | GSM-7 basic | 1 |
| 9 | d | U+0064 | GSM-7 basic | 1 |
| 10 | a | U+0061 | GSM-7 basic | 1 |
| 11 | t | U+0074 | GSM-7 basic | 1 |
| 12 | e | U+0065 | GSM-7 basic | 1 |
| 13 | d | U+0064 | GSM-7 basic | 1 |
| 14 | space | U+0020 | GSM-7 basic | 1 |
| 15 | o | U+006F | GSM-7 basic | 1 |
| 16 | u | U+0075 | GSM-7 basic | 1 |
| 17 | r | U+0072 | GSM-7 basic | 1 |
| 18 | space | U+0020 | GSM-7 basic | 1 |
| 19 | t | U+0074 | GSM-7 basic | 1 |
| 20 | e | U+0065 | GSM-7 basic | 1 |
| 21 | r | U+0072 | GSM-7 basic | 1 |
| 22 | m | U+006D | GSM-7 basic | 1 |
| 23 | s | U+0073 | GSM-7 basic | 1 |
| 24 | space | U+0020 | GSM-7 basic | 1 |
| 25 | — | U+2014 | Unicode-only | 1 |
| 26 | space | U+0020 | GSM-7 basic | 1 |
| 27 | s | U+0073 | GSM-7 basic | 1 |
| 28 | e | U+0065 | GSM-7 basic | 1 |
| 29 | e | U+0065 | GSM-7 basic | 1 |
| 30 | space | U+0020 | GSM-7 basic | 1 |
| 31 | “ | U+201C | Unicode-only | 1 |
| 32 | w | U+0077 | GSM-7 basic | 1 |
| 33 | h | U+0068 | GSM-7 basic | 1 |
| 34 | a | U+0061 | GSM-7 basic | 1 |
| 35 | t | U+0074 | GSM-7 basic | 1 |
| 36 | ’ | U+2019 | Unicode-only | 1 |
| 37 | s | U+0073 | GSM-7 basic | 1 |
| 38 | space | U+0020 | GSM-7 basic | 1 |
| 39 | n | U+006E | GSM-7 basic | 1 |
| 40 | e | U+0065 | GSM-7 basic | 1 |
| 41 | w | U+0077 | GSM-7 basic | 1 |
| 42 | ” | U+201D | Unicode-only | 1 |
| 43 | … | U+2026 | Unicode-only | 1 |
The short answer
Which characters force a message into UCS-2?
Any character that is not in the GSM-7 basic or extension tables forces the whole SMS into UCS-2. In practice that means smart or curly quotes, em dashes, the ellipsis character, many accented letters, and every emoji, Arabic, Cyrillic or CJK character. Because SMS uses one encoding per message, a single such character drops the per-segment budget from 160 to 70 characters.
The three character classes
| Class | Units | Examples |
|---|---|---|
| GSM-7 basic | 1 | A–Z a–z 0–9 space . , ? ! and common European letters |
| GSM-7 extension | 2 | € { } [ ] ~ | ^ \ |
| Unicode-only (UCS-2) | 1 (16-bit) | emoji · Arabic · Cyrillic · CJK · “ ” — … |
Frequently asked questions
What is the GSM-7 basic character set?
GSM-7 is the 7-bit default alphabet from the GSM 03.38 standard. Its basic table covers uppercase and lowercase Latin letters, digits, common punctuation and a small European set. Each basic character occupies one 7-bit unit, so a single SMS holds 160 of them.
What are GSM-7 extension characters?
A small set of characters — the euro sign and brackets, braces, backslash, tilde, caret and pipe ( € { } [ ] ~ | ^ \ ) — live in the GSM-7 extension table. They are still GSM-7, but each is sent as an escape character plus the character itself, so it counts as two units instead of one.
Which characters force UCS-2 encoding?
Any character outside the GSM-7 basic and extension tables. Common culprits are smart or curly quotes, em dashes, the ellipsis character, many accented letters, and every emoji, Arabic, Cyrillic or CJK character. One such character anywhere switches the whole message to double-byte encoding.
Why does one non-GSM-7 character change the whole message?
SMS uses a single encoding per message. If even one character cannot be represented in GSM-7, the entire message must be sent as UCS-2 so that character survives. That drops the per-segment budget from 160 characters to 70, which is why a stray curly quote can double or triple your segment count.
How is this different from the SMS segment calculator?
The segment calculator reports the encoding, segment count and cost for a whole message. This checker goes character by character so you can pinpoint the exact offending characters, replace them and bring the message back to GSM-7. Use them together.
Read the spec behind this tool in the reference library.
Encoding, segments and cost for a whole message.
REST + SMPP 3.4, Bearer-token auth, delivery webhooks.
One-time passcodes over SMS and voice.
Quickstart, TypeScript SDK, references and tools.
Ready to send at scale?
BroadNet ships a Bearer-token REST API, direct SMPP 3.4 binds, delivery webhooks and an official TypeScript SDK across 200+ countries.