Every SMS you send is encoded in one of two main alphabets, and the choice, made automatically and invisibly, decides whether your message holds 160 characters or only 70. Paste in a single curly apostrophe or emoji and the entire message silently switches from the compact GSM-7 encoding to the roomier but heavier UCS-2 encoding, cutting its capacity by more than half and potentially doubling or tripling what you pay to send it.
This article explains both encodings, how the switch is triggered, and how to keep long messages from fragmenting unexpectedly. It is the technical companion to our guide on SMS character limits and segments, which covers the billing side in detail.
Why SMS Needs Special Encodings at All
SMS was engineered in the late 1980s to ride in spare capacity of the GSM signaling channel, which fixed the payload of a single message at 140 bytes, 1,120 bits, forever. Every encoding decision since has been about how many characters can be packed into those bits. The governing specifications are 3GPP TS 23.038, which defines the alphabets and the Data Coding Scheme that announces which one a message uses, and TS 23.040, which defines the message structure around them.
Two packing strategies emerged:
- GSM-7: a purpose-built 7-bit alphabet. Seven bits per character means 1,120 divided by 7, which is 160 characters, the famous SMS limit.
- UCS-2: a 16-bit Unicode encoding. Sixteen bits per character means 1,120 divided by 16, which is 70 characters, but any character in the Unicode Basic Multilingual Plane becomes available.
Inside GSM-7: The 128-Character Alphabet
GSM-7, sometimes called the GSM default alphabet, defines 128 characters chosen for European mobile users of the early 1990s: the unaccented Latin letters A to Z in both cases, digits, common punctuation, a set of accented characters used in major European languages, a handful of Greek capitals, and symbols including the at sign, pound, yen, and section marks.
A quirk worth knowing: a small extension table holds ten additional characters, including the left and right square brackets, curly braces, backslash, caret, tilde, vertical bar, and the euro sign. Each of these costs two septets, an escape code plus the character, so a euro sign counts as two characters against your 160.
What GSM-7 does not include is the trap. Missing are, among many others:
- Smart quotes and curly apostrophes (the straight versions are included; the typographic ones are not)
- Em and en dashes (the plain hyphen is included)
- Ellipsis as a single character
- Emoji, all of them
- Most non-Latin scripts: Chinese, Arabic, Hebrew, Cyrillic, Korean, Thai, Devanagari, and others
- Accented characters beyond the small built-in set
Inside UCS-2: All of Unicode, at a Price
When a message contains even one character outside GSM-7, the sending system re-encodes the entire message as UCS-2. UCS-2 represents each character as a fixed 16-bit value covering the Unicode Basic Multilingual Plane, which is what makes texting work in virtually every written language.
Two consequences follow:
- Capacity drops to 70 characters per single message, from 160.
- The whole message pays. Encoding applies per message, not per character. One emoji in a 150-character English message converts all 150 characters to 16-bit encoding, and the message no longer fits in a single SMS.
A technical footnote for the thorough: characters beyond the Basic Multilingual Plane, which includes many newer emoji, are represented as surrogate pairs occupying two 16-bit units each, so a single such emoji consumes two of your 70 character slots. In practice modern systems handle this as UTF-16, but the SMS world retains the UCS-2 name.
Concatenation: What Happens Past the Limit
Messages longer than a single SMS are split into segments and reassembled on the recipient's phone. The split reserves 6 bytes per segment for a User Data Header that carries reassembly instructions, which shrinks each segment's capacity:
| Encoding | Single message | Per segment when concatenated |
|---|---|---|
| GSM-7 | 160 characters | 153 characters |
| UCS-2 | 70 characters | 67 characters |
Each segment is billed as a separate message by carriers and platforms. The arithmetic gets stark quickly: a 300-character announcement is 2 segments in GSM-7 but 5 segments in UCS-2. Same words, same recipients, more than double the cost, triggered by a single smart quote a word processor inserted.
Practical Rules for Senders
- Watch the paste. The most common accidental UCS-2 trigger is copy-pasting from word processors and email, which auto-convert straight quotes to curly ones and double hyphens to em dashes. Compose in your messaging platform, or strip formatting on paste.
- Use a segment counter. Good platforms show encoding and segment count as you type and flag the character that forced a switch. Treat an unexpected jump from 1 segment to 2 or 3 as a prompt to find the offending character.
- Spend UCS-2 deliberately. Emoji and typographic polish are legitimate choices when the engagement value justifies the segments. Make it a decision, not an accident.
- Do not fight it for non-Latin languages. Spanish stays inside GSM-7 only when accents are dropped, because the acute-accented vowels Spanish relies on most are not in the GSM-7 alphabet, so correctly accented Spanish forces UCS-2, as do Chinese, Arabic, Korean, and most other scripts by nature. The 70-character budget is simply the operating reality for multilingual outreach; several such scripts also convey more meaning per character, which offsets the tighter count.
- Test on real phones. Encoding interacts with carriers and handsets in edge cases, especially around unusual symbols. A test send to a few devices before a large campaign is cheap insurance.
Frequently Asked Questions
What is GSM-7 encoding?
GSM-7 is the default 7-bit character encoding for SMS, defined in the 3GPP TS 23.038 specification. It packs 160 characters into the fixed 140-byte SMS payload using a 128-character alphabet of Latin letters, digits, punctuation, and selected accented and Greek characters, plus a small extension table for symbols like the euro sign.
Why did my text message get split after adding an emoji?
Emoji are not in the GSM-7 alphabet, so including one forces the entire message into UCS-2 encoding, where each character takes 16 bits and a single message holds only 70 characters. A message that fit comfortably in one 160-character GSM-7 SMS can become two or three UCS-2 segments.
What is the difference between UCS-2 and UTF-16?
UCS-2 is a fixed-width 16-bit encoding covering the Unicode Basic Multilingual Plane. UTF-16 extends it with surrogate pairs to reach characters beyond that plane, including many newer emoji. SMS specifications name UCS-2, but modern implementations effectively process UTF-16, with each surrogate-pair character consuming two 16-bit units of the message budget.
Which characters trigger UCS-2 encoding?
Any character outside the GSM-7 alphabet: emoji, smart quotes, curly apostrophes, em and en dashes, ellipsis characters, most accented letters beyond the built-in European set, and non-Latin scripts such as Chinese, Arabic, Cyrillic, and Korean. One such character anywhere in the message switches the whole message.
How many characters fit in a concatenated SMS?
When a message spans multiple segments, each segment reserves 6 bytes for reassembly headers, leaving 153 characters per segment in GSM-7 and 67 in UCS-2. Each segment is billed as a separate message, so a 300-character text costs 2 messages in GSM-7 and 5 in UCS-2.
Compose With the Meter Running Visibly
FRANSiS shows encoding and segment counts as you write, flags the characters that flip a message to UCS-2, and pairs clean sending with an AI Powered Helper for replies. Contact us to keep every message tight, deliverable, and predictably priced.


