SMS 160 Character Limit: GSM-7, Unicode and Multipart Rules
By Free SMS Gateway teamUpdated 6 min read
The SMS 160 character limit applies to plain GSM-7 text: one SMS (Short Message Service; see SMS meaning and full form) holds 160 such characters. A character outside GSM-7, such as an Urdu letter or emoji, turns the whole message into Unicode and cuts the limit to 70. Longer texts split into parts of 153 or 67 characters.
Why is one SMS limited to 160 characters?
One SMS is limited to 160 characters because it carries 140 bytes of data and each GSM-7 character needs only 7 bits. The limit is arithmetic, not a rule about words.
140 bytes, 7 bits per character
A byte is 8 bits, so 140 bytes is 1,120 bits. Divide that by the bits each character needs:
| Encoding | Bits per character | Calculation | Characters per SMS |
|---|---|---|---|
| GSM-7 | 7 | 1,120 ÷ 7 | 160 |
| Unicode (UCS-2) | 16 | 1,120 ÷ 16 | 70 |
Where the numbers are defined
Two 3GPP standards define the numbers. 3GPP TS 23.038 defines the alphabets (GSM-7, its extension table, UCS-2). 3GPP TS 23.040 defines the message format, including the 140-byte payload and long-message joining.
When does the 160 limit become 70?
The limit becomes 70 when even one character is outside the GSM-7 alphabet, because a message is encoded as one block and the sender cannot mix 7-bit and 16-bit characters.
Proof: a 100-character GSM-7 message is 1 SMS. Swap one straight apostrophe for a curly one and it needs 2 parts, because 100 exceeds 70.
Characters that switch the whole message to Unicode
Urdu letters, emoji and smart (curly) punctuation cause most surprises, and none of the smart marks below is in GSM-7.
| Smart character | Plain GSM-7 replacement |
|---|---|
| ‘ ’ curly single quotes | ' straight apostrophe |
| “ ” curly double quotes | " straight double quote |
| – en dash, — em dash | - hyphen |
| … ellipsis character | ... three periods |
Phones and word processors often insert smart punctuation automatically.
TS 23.038 also defines optional national language shift tables, including one for Urdu, that keep 7-bit encoding when the sending gateway and the receiving phone both support them; unless your provider confirms this, plan on 70.
Characters that count as two in GSM-7
A few GSM-7 characters count as two positions. TS 23.038 lists them in its extension table, which includes the euro sign (€) and ^ { } [ ] \ ~ |. They do not force Unicode, but a 160-character message with one euro sign uses 161 positions and needs 2 parts.
Urdu, Roman Urdu and emoji: worked examples
Roman Urdu, which is Urdu in Latin letters, stays at 160 only while every character is in GSM-7. Three counts:
Roman Urdu:
Aap ki appointment kal subah 10 baje hai. Baraye meherbani waqt par pohanchein. Shukriya.is 89 characters, all GSM-7: 1 SMS with 71 positions to spare.Same reminder in Urdu script:
آپ کی اپائنٹمنٹ کل صبح 10 بجے ہے۔ براہ مہربانی وقت پر پہنچیں۔ شکریہ۔is 68 characters. As Unicode it is still 1 SMS, but only 2 positions are spare.Roman Urdu plus an emoji: add a space and an emoji to the 89-character message and it becomes Unicode with at least 91 positions: 2 parts.
Some emoji may use more than one of the 70 positions, so test them in the SMS character counter. The character limit for SMS messages guide covers Unicode limits more broadly.
What happens when a message goes over the limit?
When a message goes over the limit, it is split into parts, each sent as its own SMS with a header that lets the receiving phone join them in order.
Why each part holds 153 or 67
A part holds fewer characters than a single SMS (153 against 160, 67 against 70) because its header takes 6 of the 140 bytes. Work backwards: 67 Unicode characters take 67 × 2 = 134 bytes, leaving 140 − 134 = 6. For GSM-7, 134 bytes is 1,072 bits, and 1,072 ÷ 7 is 153 with 1 bit left over. Only a 6-byte header gives both figures. TS 23.040 defines the header.
Characters-to-parts table
Parts needed by message length:
| Parts | GSM-7 characters | Unicode characters |
|---|---|---|
| 1 | 1–160 | 1–70 |
| 2 | 161–306 | 71–134 |
| 3 | 307–459 | 135–201 |
The pattern continues for longer text. One character over adds a whole extra part: 161 GSM-7 characters split into 2 parts (153 + 8), and 71 Unicode characters into 2 parts (67 + 4).
What extra parts mean for cost
Depending on your provider, each part may be billed as a separate message, so a text that spills into a second part can cost more than one that fits in one SMS. Billing of multipart and Urdu-script SMS can differ, so check with your provider, and use the SMS cost estimator for your own volume.
How do I keep a message inside one SMS?
Keep a message inside one SMS by using only GSM-7 characters and staying within 160 positions.
Swap smart punctuation and emoji
Plain replacements keep the message in GSM-7:
Retype curly quotes as straight ones.
Replace en and em dashes with a hyphen, and the ellipsis character with three periods.
Drop emoji, or say it in words.
Budget two positions for the euro sign and the symbols listed above.
Choose the script on purpose: plan on 70 per SMS for Urdu script, 160 for Roman Urdu in GSM-7 characters.
Trim templates and merge fields
Merge fields change the final length, so measure the filled-in message. A reminder of 155 characters with a 5-letter name becomes 162 with a 12-letter name and needs 2 parts. Test the shortest and longest values in the SMS template personaliser, then trim until the longest case fits.
Test it before you send
Paste the final text into the SMS character counter and check the edges: 160 or 161 characters in GSM-7, 70 or 71 in Unicode. For context, see the guide to character limit for SMS messages and the SMS basics guides. If the content will not fit in a short message, compare channels with SMS vs WhatsApp.
Frequently asked questions
Why is the SMS limit 160 characters?
An SMS (Short Message Service) carries 140 bytes, or 1,120 bits. A GSM-7 character uses 7 bits, so 1,120 ÷ 7 gives 160 characters. 3GPP TS 23.038 and TS 23.040 define this, and it holds only when every character is in the GSM-7 alphabet.
How many characters fit in one SMS if I write in Urdu or add an emoji?
A character outside the GSM-7 default alphabet, such as an Urdu letter, emoji or smart punctuation mark, switches the whole message to Unicode: 70 characters in one SMS. TS 23.038 also defines optional national language shift tables, including one for Urdu, that keep 7-bit encoding when both ends support them. Unless your provider confirms this, plan on 70.
What happens when my text goes over 160 characters?
The message is split into parts, each sent as a separate SMS with a small header that lets the receiving phone reassemble them. Each GSM-7 part holds 153 characters, or 67 in Unicode, so 161 GSM-7 characters become 2 parts. Whether each part is billed separately depends on your provider.
Why does each part of a long SMS hold only 153 characters?
Each part still has 140 bytes, but the concatenation header takes 6 of them. The remaining 134 bytes (1,072 bits) hold 153 GSM-7 characters at 7 bits each, or 67 Unicode characters at 16 bits each. The header lets the receiving phone put the parts back in order.
Do spaces and punctuation count towards the SMS character limit?
Yes. Every space, digit and punctuation mark counts as one character toward the 160 GSM-7 or 70 Unicode limit. The exception is a short list of GSM-7 symbols, such as the euro sign and square brackets, which count as two. The FreeSMSGateway SMS character counter shows the total.