SMS character limit: how many characters fit in one text
By TechCompare · Updated · How we check
An SMS can hold up to 160 characters when every character comes from the GSM 7-bit default alphabet, according to the ETSI standard. One emoji or any other character outside that alphabet switches the whole message to a limit of 70 characters.
Calculator
Character Counter
Example text
Reminder: your dental cleaning is on Tuesday at 10:30. Please arrive 10 minutes early!
- Characters
- 86
- Words
- 15
- Sentences
- 2
- Paragraphs
- 1
- Lines
- 1
- No whitespace
- 73
Limit: 160 characters
74 characters remaining
86 / 160 characters
A text message's limit depends on the characters inside it, not just its length. This page covers the two numbers you'll run into, which characters switch a message from one to the other, and what the Character Counter can and can't tell you before you send.
How this is calculated
The 160 figure comes from ETSI TS 123 038, the standard that defines how SMS text is coded. For the GSM 7-bit default alphabet, the standard says "the message can consist of up to 160 characters."
The standard gets to 160 by counting bits. A message can use up to 140 octets, and an octet is 8 bits, so the message has 1,120 bits to work with. Each GSM 7-bit character takes 7 of them, so (140 × 8) ÷ 7 = 160 characters. The same 140 octets hold only 70 UCS-2 characters, because each one needs more bits. Clause 6.1.2.1.1 of the standard makes this calculation.
The character set decides which of those numbers applies. Basic letters, digits and common punctuation are in the GSM 7-bit alphabet. Emoji and many accented or non-Latin letters aren't, so one of them pushes a message into UCS-2. Twilio's UCS-2 glossary says a message falls back to UCS-2 if it includes any character outside GSM-7. A single emoji is enough to move the whole message from 160 to 70, even if the rest of the text is plain.
Some characters come from the extension table of the GSM 7-bit alphabet, and each one takes two places. The standard says the displayable count drops by one for every use of that table. Twilio's GSM-7 glossary says these escape characters count as two characters. Take a message with 155 visible characters, 6 of them from the extension table. The other 149 take one place each and the 6 take two, so the message needs 161 places, one over the 160 limit. The counter reads 155 and still shows room.
A message longer than the single-message limit is split into parts, and each part carries a header. Twilio says the common 6-byte header leaves 153 GSM-7 characters or 67 UCS-2 characters for the text in each part. Carriers and message types can differ, so treat those as the common numbers, not a promise.
The counter tracks the 160 limit, and that limit applies only to text in the GSM 7-bit alphabet. It counts visible characters, so an emoji counts as one. It can't tell which character set your text needs, and it doesn't weigh extension characters, count parts or detect a switch to UCS-2. For how emoji are counted in general, see emoji and Unicode counts.
Verdict
Decide early whether your message needs the basic alphabet. If the 160 limit matters, remove emoji and any character you aren't sure about. Then read the final count in your sending service, and don't treat the room left here as proof that the message fits in one part.
More Counting scenarios
Related guides
Frequently asked questions
Why does my message's limit drop when I add an emoji?
How do I compare my text with the 70 limit?
Does the counter show how many messages my text will use?
Do spaces and line breaks count?
Related tools
LLM Token Counter
Count tokens in any prompt for GPT, Claude, Gemini, and Llama with exact OpenAI tokenization.
Use toolText Diff Checker
Compare two texts or files line by line and word by word, ignore case or whitespace, and copy the changes as a unified diff.
Use toolText Encoding Converter
Convert text to Base64, binary, hex, URL encoding and HTML entities, and back again.
Use toolJSON Formatter
Validate, format, and minify JSON. Browse it as a tree, run JSONPath queries, compare two documents, or validate against a JSON Schema.
Use tool