SMS length calculator
How many text messages is your message, really?
A plain English text fits 160 characters in one segment. Add a single character outside the GSM-7 alphabet — one Chinese character, one emoji, even one curly quote typed by your phone — and the whole message switches to Unicode at 70 characters per segment. Type below and see your segment count, the encoding your carrier will use, and the exact characters responsible.
The rules, exactly as carriers apply them
Text messages are billed and sent in segments. The encoding decides everything, and the encoding is chosen for the whole message — there is no mixing within one text.
| Encoding | When it applies | Single message | Each part of a long message |
|---|---|---|---|
| GSM-7 | Every character is in the GSM-7 alphabet below | 160 units | 153 units |
| UCS-2 (Unicode) | Any character outside GSM-7 appears anywhere in the message | 70 units | 67 units |
Why 153 and 67 instead of 160 and 70? A long message is split into parts, and each part carries a hidden 6-byte reassembly header (the UDH) so the receiving phone can stitch it back together. That header costs 7 GSM-7 units or 3 Unicode units per part. Most carriers and messaging platforms bill per segment, so a 161-character plain text is charged as two messages, and a 71-character message containing one Chinese character is also two.
Two traps that double real messages
Smart punctuation
Phones autocorrect straight quotes into curly ones — “ ” ‘ ’ — and none of them exist in GSM-7. Neither do the en dash (–), em dash (—) or ellipsis (…). One autocorrected apostrophe in don’t flips an entire 160-character text to Unicode and cuts it to 70 characters per segment. If you send texts in bulk, turn smart punctuation off or sanitise the copy first.
Extension characters cost double
Nine familiar characters live in the GSM-7 extension set and are sent as an escape code plus the character — 2 units each: [ ] \ ~ ^ | € and form feed. A message of 159 letters plus one € is 161 units and splits into two segments, even though it looks like 160 characters. The calculator above counts them at 2 units, as carriers do.
The GSM-7 alphabet (basic set — 1 unit each)
These are the only characters that keep a message in GSM-7. The table is generated from the same character set the calculator uses, per the GSM 03.38 standard.
@ £ $ ¥ è é ù ì ò Ç [line feed] Ø ø [carriage return] Å å Δ _ Φ Γ Λ Ω Π Ψ Σ Θ Ξ Æ æ ß É ! " # ¤ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ¡ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ä Ö Ñ Ü § ¿ a b c d e f g h i j k l m n o p q r s t u v w x y z ä ö ñ ü à
Extension set — 2 units each
[form feed] ^ { } \ [ ~ ] | €
Notable absences: á, í, ó, ú (only à is in the set), all curly quotes, dashes other than the plain hyphen-minus, the ellipsis, and every emoji. Portuguese and Spanish speakers hit this constantly: á forces Unicode even though à and ñ do not.
Frequently asked questions
- Why did my 90-character message arrive as two texts?
- Almost certainly one character forced UCS-2 encoding: at 70 characters for a single message, a 90-character Unicode text needs two segments of 67. Check for an emoji, a curly apostrophe, or a character from a non-Latin script.
- Do spaces and line breaks count?
- Yes. Spaces are ordinary GSM-7 characters, and a line break is one unit. A signature or a pasted template with trailing blank lines can quietly push a message into the next segment.
- Is the segment count the same as the bill?
- On most plans and every major messaging platform, yes — you are charged per segment sent, per recipient. Exact billing is set by your carrier or provider, so treat the segment count here as the technical count they start from.
- Does the € sign really count as two characters?
- Yes. It sits in the GSM-7 extension set, which is transmitted as an escape character followed by the € code — two units. The same applies to { } [ ] \ ~ ^ |.
Batch documents, saved goals across files, and exportable reports for editors and content teams. The free tools above stay free; Pro is a heads-up, not a checkout — no payment is taken today.