What Does %20 Mean in a URL? Percent-Encoding Explained Simply
%20 in a URL means a space. URLs can't contain raw spaces, so browsers and servers replace each space with a percent sign followed by 20, the hexadecimal code for the space character.
A single SMS holds 160 characters when every character belongs to the GSM-7 alphabet, but only 70 characters if the message contains even one emoji, curly quote or other Unicode symbol.
A single SMS holds 160 characters when every character belongs to the GSM-7 alphabet, but only 70 characters if the message contains even one emoji, curly quote or other Unicode symbol. Longer texts split into segments of 153 characters (GSM-7) or 67 characters (Unicode), because each part carries a small header that tells the phone how to stitch the pieces back together.
That one rule explains a lot of everyday surprises. It's why a short appointment reminder suddenly bills as three messages, why a smart quote pasted from Word doubles your costs, and why your phone's counter jumps when you add a smiley.
This guide walks through the limits, the characters that trigger the switch, real segment maths, and simple habits that keep messages lean. You can check any draft with the free character counter before you hit send.
In this guide:
The original GSM standard gave each text message 140 bytes of space. Different encodings fit a different number of characters into those bytes, which is where the familiar limits come from.
| Encoding | Bits per character | Single message | Per segment when split | Typical trigger |
|---|---|---|---|---|
| GSM-7 | 7 | 160 characters | 153 characters | Plain English letters, digits, basic punctuation |
| UCS-2 (Unicode) | 16 | 70 characters | 67 characters | Emoji, curly quotes, many accents, non-Latin scripts |
| 8-bit data | 8 | 140 bytes | 134 bytes | Binary payloads, rarely used for normal texts |
The maths is tidy. 140 bytes is 1,120 bits. Divide by 7 and you get 160 characters. Divide by 16 and you get 70. Messaging platform Twilio's SMS glossary lays out the same figures and notes the 1,600-character practical cap that many senders apply to concatenated messages.
These numbers apply to classic SMS. Chat apps such as WhatsApp or iMessage work over data and follow their own, much higher limits.
When a message runs past one segment, the network sends it as several separate SMS. Each one carries a User Data Header, usually 6 bytes, that records the message reference, the total number of parts and the part number. Your phone reads those headers and shows the parts as one bubble.
Those 6 bytes come out of the same 140-byte budget. In GSM-7 they cost the space of 7 characters, so each part holds 153 characters instead of 160. In UCS-2 they cost 3 characters, so each part holds 67 instead of 70.
This catches people out all the time. They see 160 as the limit, write 200 characters and expect two messages' worth of room to spare. In fact, 200 characters already uses 47 characters of the second part.
GSM-7, defined in the standard often called GSM 03.38, is a 128-character alphabet. It isn't the same as ASCII, though it overlaps a lot. The basic set includes:
UK senders get a nice bonus here: the pound sign sits in the basic set, so "£20 off" costs nothing extra.
There's also an extension table. Characters such as €, [, ], {, }, \, ^, ~ and the pipe symbol need an escape code first, so each one uses two character slots. A message with one euro sign fits 159 visible characters in total, not 160. The GSM 03.38 reference table lists every basic and extended character if you need to check a specific symbol.
If a single character falls outside GSM-7, the whole message switches to UCS-2. One rogue symbol is enough. These are the usual suspects:
The hidden ones cause the most pain. A marketing team copies a sentence from a document, the apostrophe comes along as ’, and a 150-character text quietly becomes three segments.
Let's put numbers on it. This table shows how many SMS segments common message lengths use under each encoding.
| Message length | GSM-7 segments | UCS-2 segments |
|---|---|---|
| 70 characters | 1 | 1 |
| 100 characters | 1 | 2 |
| 160 characters | 1 | 3 |
| 200 characters | 2 | 3 |
| 306 characters | 2 | 5 |
| 459 characters | 3 | 7 |
| 612 characters | 4 | 10 |
The rule is simple. If the text fits in one message, you need one segment. If not, divide the length by 153 (GSM-7) or 67 (UCS-2) and round up. For example, 200 characters in UCS-2 gives 200 ÷ 67 = 2.99, so three segments.
Remember the extension characters. Each €, curly bracket or tilde counts as two in GSM-7, so add one per extended symbol before you divide.
On a personal phone plan with unlimited texts, none of this costs you money. For a business sending thousands of reminders, though, a 160-character message that becomes three segments can triple the bill.
Carriers and SMS gateways bill per segment, not per message. That's the detail that turns encoding from trivia into a budget line.
Picture a GP surgery, salon or delivery firm sending 5,000 reminders a month. If each reminder stays inside 160 GSM-7 characters, that's 5,000 segments. Add one emoji and keep the same wording, and every reminder becomes three UCS-2 segments: 15,000 billed units for the same information.
Small savings add up quickly at volume. Trimming a template by 20 characters can be the difference between one and two segments for every customer on your list.
Phones don't always show the full picture, which is why the rules feel mysterious.
Many phones also fall back to SMS when data drops out. A message that looked fine as RCS can arrive as several SMS segments, sometimes out of order on older handsets.
"Character" means different things to different tools. A word processor counts what you see. An SMS gateway counts encoded units. A database might count bytes. Mixing them up leads to wrong estimates.
Take a single thumbs-up emoji. You see one symbol. UCS-2 counts it as two units. UTF-8, the encoding most websites use, stores it in four bytes. Skin-tone and family emoji combine several code points, so one visible symbol can take seven or more units.
When you're checking a text for SMS, count characters and look for anything outside GSM-7. When you're checking storage size or an API field limit, count bytes. The byte counter shows UTF-8 size, which helps when a form or database rejects text that "looks" short enough.
A few habits keep texts short and cheap, whether you're sending one reminder or a campaign.
If you genuinely need emoji or a non-Latin script, plan for 70 characters and write tighter copy. That's often a good discipline anyway, since short texts get read.
If you build SMS features, a little validation saves your users money and support tickets.
Store the original message as UTF-8, and only worry about GSM-7 at the moment of sending. That way you keep the full text for your records while still optimising what goes over the network.
A standard SMS allows 160 characters using the GSM-7 alphabet. If the message includes emoji or other Unicode characters, the limit drops to 70.
It went over one segment. Plain texts split after 160 characters, and texts with any Unicode character split after 70. Each extra part then holds 153 or 67 characters.
Yes. One emoji switches the whole SMS to Unicode, cutting the limit to 70, and most emoji count as two characters on their own.
Yes. The pound sign is part of the basic GSM-7 alphabet, so it counts as one character and doesn't trigger Unicode.
Yes. The € symbol lives in the GSM-7 extension table, so it uses two character slots in a standard SMS.
No. iMessage, WhatsApp and RCS send over mobile data or Wi-Fi, so the SMS segment limits don't apply to them.
Phones can join many segments, but most providers cap concatenated messages at around 1,600 GSM-7 characters, which is about ten parts.
Look for emoji, curly quotes, long dashes or uncommon accents. A bulk SMS dashboard or a character counter that flags non-GSM characters will confirm it.
Last checked: 18 October 2026. Rates, rules and app settings can change, so confirm anything important with the official source linked above.