SMS character & segment counter
An SMS is 160 characters only if every character is in the GSM-7 alphabet. One emoji, curly quote or Korean letter switches the whole message to UCS-2, which allows only 70. Longer messages split into parts of 153 (GSM-7) or 67 (UCS-2), and you're usually billed per part.
Technical details — what was counted
| Graphemes — visible characters | 0 |
| Unicode code points — Python len() | 0 |
| UTF-16 code units — JavaScript .length | 0 |
| UTF-8 bytes — web, DB, payloads | 0 |
| Korean SMS (EUC-KR-style) bytes, approx. | 0 |
| Whitespace (spaces, line breaks, tabs) | 0 |
| Hangul syllables | 0 |
| Reading time (230 wpm) | 0 |
| Reading time, Korean (500 syllables/min) | 0 |
Rules
| Encoding | Single | Per part (concatenated) |
|---|---|---|
| GSM-7 | 160 | 153 |
| UCS-2 | 70 | 67 |
Extension characters ^ { } \ [ ] ~ | € are GSM-7 but cost 2. Curly quotes (’ “ ”) are not GSM-7 — a common accidental switch to UCS-2.
Some carriers/gateways use national language shift tables or transliterate characters; real billing may differ slightly.
Korean SMS
Korean carriers count bytes instead (SMS 90 bytes, LMS 2,000). → 문자 바이트 계산기
FAQ
Why is my SMS limited to 70 characters?
It contains at least one non-GSM character (emoji, curly quote, accented letter outside GSM, CJK), so it's sent as UCS-2. The tool lists which characters caused it.
Why 153 instead of 160?
Multi-part messages reserve space for a header that tells phones how to reassemble them.
Do emoji count as 2?
In UCS-2, most emoji are 2 UTF-16 units, so yes.