The 160-vs-70-character budget difference
GSM-7 encoding uses 7 bits per character and supports a fixed 160-character limit per SMS. This is not a soft guideline—it is a hard technical limit enforced by the SMS protocol itself. The character set includes ASCII English, numerals, basic punctuation, and a few Western European accented characters (é, ñ, ü). Most of the world's transactional SMS—OTP codes, delivery confirmations, appointment reminders—fits comfortably inside this budget.
UCS-2 (also called UTF-16) uses 16 bits per character and shrinks the per-SMS budget to 70 characters. Every character—whether it is a Latin letter, a Chinese hanzi, an Arabic letter, or a Devanagari digit—consumes the same 2-byte footprint. For global campaigns, this is both necessary and expensive: necessary because characters outside the GSM-7 set have no choice, and expensive because you get roughly 44% fewer characters per message. A 160-character promotional campaign in English costs one SMS; the same message in Arabic or Chinese costs either three SMS segments or demands aggressive copy shortening.
Some SMS gateways (including older ones) only support GSM-7, which makes UCS-2 target markets completely inaccessible. smsroute's gateway supports both encodings natively, allowing you to send character-appropriate messages to all 149 countries without fallback or workaround.
When GSM-7 is enough (English, basic Spanish, basic French)
GSM-7 is sufficient for any campaign targeting North America, the UK, Australia, or basic Western European audiences. English sits entirely inside the GSM-7 character set. You can use numerals, spaces, basic punctuation (?!,.;:), and currency symbols like $ and £. Do not assume that because a language uses the Latin alphabet it will fit—many Romance languages rely on accented characters that fall outside GSM-7.
Basic Spanish (without aggressive use of ñ or ü) often fits, though best practice is to test each piece of copy in your gateway's character calculator before launch. Basic French (with è, é, ê in the GSM-7 extended set) is also safe if you avoid combining diacritics. The moment you move beyond these languages, or mix them with characters like €, ® (registered trademark), or typographic quotes (" "), you risk encoding overflow.
For transactional SMS—the vast majority of gateway traffic—GSM-7 is the default. OTP codes, password resets, shipment notifications, and booking confirmations in English or basic Western European copy all use GSM-7. The business logic is simple: shorter encoding, faster delivery, more messages fit per segment, and simpler character validation on your backend.
When UCS-2 is unavoidable (Arabic, Hebrew, CJK, Devanagari, emoji)
Any message targeting Saudi Arabia, the UAE, or other Middle Eastern markets must use UCS-2 for Arabic script. Hebrew, Mandarin, Cantonese, Japanese (all three scripts), Korean Hangul, and Devanagari (used in Hindi, Marathi, Nepali) have zero representation in GSM-7. Emoji—a growing part of marketing SMS—are UCS-2 only. If your campaign includes a single 👍, 🔔, or 🎉, the entire message becomes UCS-2.
When sending to China, UCS-2 is mandatory. Chinese mobile carriers do not route GSM-7 messages efficiently; any compliance-critical or marketing message must be composed in UCS-2. Similarly, financial services targeting India, Pakistan, or Bangladesh should assume UCS-2 for local-language copy, though English within UCS-2 encoding is perfectly valid and sometimes cost-effective for multi-lingual audiences.
The practical consequence is that marketing teams often face a choice: write an English message (GSM-7, 160 characters) for maximum reach and brevity, or localize to UCS-2 (70 characters, one-third the text) for authenticity in target markets. A well-managed campaign does both—English OTP sent to a user's fallback locale as GSM-7, and localized promotional copy sent to their primary market in UCS-2. smsroute's platform supports this routing natively without additional per-message logic.
Mixing encodings: why a single € in a GSM-7 body bumps everything to UCS-2
This is the most common surprise in global SMS. You write an OTP message in English: "Your code is 1234. Valid for 10 minutes." That is 44 characters, squarely in GSM-7 territory. Then you add a price: "Your code is 1234. Price: €50. Valid for 10 minutes." The € (euro) symbol is not in the GSM-7 character set; it exists only in UCS-2. Your gateway detects this incompatibility and converts the entire message to UCS-2. Suddenly a 54-character message becomes a 54-character UCS-2 message, consuming the same SMS budget as "Your code is 1234. Price: €50. Valid for 10 minutes. Thank you for your purchase. Please confirm your email address at example.com within 24 hours."
This re-encoding is automatic and invisible at send time, but it shows up in your logs and billing. If you sent 100,000 of these messages in a day, unaware of the encoding shift, you might see usage spike unexpectedly. The gateway is correct to do this—there is no lossy fallback or character substitution; it encodes the message faithfully or not at all.
The workaround is to avoid mixing character sets. If your copy must include €, use it consistently and expect UCS-2. If you must stay in GSM-7, remove or replace the symbol: "Your code is 1234. Price: 50 EUR." Or: "Your code is 1234. Price: $50." The $ symbol is in GSM-7. Test every message variant in your gateway's character calculator (most support a browser-based tool) before deploying to production.
Copy-shortening tricks for staying in GSM-7
When your campaign must reach both GSM-7 and UCS-2 audiences, or when UCS-2 forces you into a 70-character box, aggressive copy editing becomes revenue-critical. Every character counts.
Start with abbreviations that remain unambiguous in your domain. "Confirm your account" becomes "Confirm acct" (3 characters saved). "Your appointment is confirmed. Please arrive 15 minutes early" becomes "Appt confirmed. Arrive 15min early" (22 characters saved). Use numerals instead of words: "one" → "1", "two-factor" → "2FA". Remove conjunctions and articles: "Your password has been reset. Click the link" → "Password reset. Click link" (14 characters).
URL shortening is essential. A full URL like "https://example.com/confirm?token=abc123def456" consumes 45 characters in GSM-7. A bit.ly or sms.example.com short code drops this to 20. Reserved short domains (like "sms.co", "txt.co") are cheap and justify the character savings.
Remove time zone or local context if it is obvious. "Your code expires in 10 minutes" → "Code: valid 10min" (20 characters). Emojis are UCS-2 only, so avoid them if you must stay in GSM-7, even though they increase engagement.
Test variants using A/B messaging on a small segment before rolling out to millions of users. A 2-character difference in copy can mean the difference between a single SMS and a multi-part concatenation, which affects delivery latency and carrier routing.
Frequently asked questions
Can I send the same message in both GSM-7 and UCS-2 to the same user?
No. A single SMS message has one encoding. The carrier or your SMS gateway detects the character set and applies encoding at send time. You cannot split a single logical message into two encodings for the same recipient. If you need to support multiple character sets, you either send separate messages or compose a single message that works in your chosen encoding.
Does concatenation (multi-part SMS) change which encoding I should use?
No. Concatenation is a transport mechanism; it does not change encoding. Each part of a multi-part message uses the same encoding as a single message. GSM-7 is still 160 characters per part; UCS-2 is still 70 characters per part. If your message exceeds those limits, the SMS gateway automatically splits it and applies the appropriate encoding to each segment.
What happens if I accidentally include a UCS-2 character in a GSM-7 message?
Your SMS gateway will detect the incompatibility and re-encode the entire message as UCS-2. This means your effective character budget drops from 160 to 70 characters per SMS. Even a single emoji, Chinese character, or non-Latin accented letter will trigger this conversion. This is why testing your copy in your gateway's character calculator is essential before launch.
Are there carrier differences in how GSM-7 and UCS-2 are handled?
Carrier behavior is consistent for GSM-7; all major carriers respect the 160-character limit and the standard character set. UCS-2 is more variable—some carriers apply extended character restrictions, non-delivery queuing, or additional latency to UCS-2 messages. When sending to markets where UCS-2 is mandatory (China, Middle East, South Asia), expect delivery times 1–3 seconds longer than GSM-7. smsroute's tier-1 delivery covers 99% across all encodings.
Should I always prefer GSM-7 for cost or performance reasons?
Only if your audience and copy support it. GSM-7 offers no price advantage on smsroute—we charge the same rate from $0.004/SMS across 149 countries regardless of encoding. The real trade-off is reach and clarity. Forcing English marketing copy into GSM-7 when your user base includes Arabic speakers means you either exclude them or send them gibberish. Choose encoding based on your target market and character set, not cost.
Can I send the same message in both GSM-7 and UCS-2 to the same user?
No. A single SMS message has one encoding. The carrier or your SMS gateway detects the character set and applies encoding at send time. You cannot split a single logical message into two encodings for the same recipient. If you need to support multiple character sets, you either send separate messages or compose a single message that works in your chosen encoding.
Does concatenation (multi-part SMS) change which encoding I should use?
No. Concatenation is a transport mechanism; it does not change encoding. Each part of a multi-part message uses the same encoding as a single message. GSM-7 is still 160 characters per part; UCS-2 is still 70 characters per part. If your message exceeds those limits, the SMS gateway automatically splits it and applies the appropriate encoding to each segment.
What happens if I accidentally include a UCS-2 character in a GSM-7 message?
Your SMS gateway will detect the incompatibility and re-encode the entire message as UCS-2. This means your effective character budget drops from 160 to 70 characters per SMS. Even a single emoji, Chinese character, or non-Latin accented letter will trigger this conversion. This is why testing your copy in your gateway's character calculator is essential before launch.
Are there carrier differences in how GSM-7 and UCS-2 are handled?
Carrier behavior is consistent for GSM-7; all major carriers respect the 160-character limit and the standard character set. UCS-2 is more variable—some carriers apply extended character restrictions, non-delivery queuing, or additional latency to UCS-2 messages. When sending to markets where UCS-2 is mandatory (China, Middle East, South Asia), expect delivery times 1–3 seconds longer than GSM-7. smsroute's tier-1 delivery covers 99% across all encodings.
Should I always prefer GSM-7 for cost or performance reasons?
Only if your audience and copy support it. GSM-7 offers no price advantage on smsroute—we charge the same rate from $0.004/SMS across 149 countries regardless of encoding. The real trade-off is reach and clarity. Forcing English marketing copy into GSM-7 when your user base includes Arabic speakers means you either exclude them or send them gibberish. Choose encoding based on your target market and character set, not cost.
Can I send the same message in both GSM-7 and UCS-2 to the same user?
No. A single SMS message has one encoding. The carrier or your SMS gateway detects the character set and applies encoding at send time. You cannot split a single logical message into two encodings for the same recipient. If you need to support multiple character sets, you either send separate messages or compose a single message that works in your chosen encoding.
Does concatenation (multi-part SMS) change which encoding I should use?
No. Concatenation is a transport mechanism; it does not change encoding. Each part of a multi-part message uses the same encoding as a single message. GSM-7 is still 160 characters per part; UCS-2 is still 70 characters per part. If your message exceeds those limits, the SMS gateway automatically splits it and applies the appropriate encoding to each segment.
What happens if I accidentally include a UCS-2 character in a GSM-7 message?
Your SMS gateway will detect the incompatibility and re-encode the entire message as UCS-2. This means your effective character budget drops from 160 to 70 characters per SMS. Even a single emoji, Chinese character, or non-Latin accented letter will trigger this conversion. This is why testing your copy in your gateway's character calculator is essential before launch.
Are there carrier differences in how GSM-7 and UCS-2 are handled?
Carrier behavior is consistent for GSM-7; all major carriers respect the 160-character limit and the standard character set. UCS-2 is more variable—some carriers apply extended character restrictions, non-delivery queuing, or additional latency to UCS-2 messages. When sending to markets where UCS-2 is mandatory (China, Middle East, South Asia), expect delivery times 1–3 seconds longer than GSM-7. smsroute's tier-1 delivery covers 99% across all encodings.
Should I always prefer GSM-7 for cost or performance reasons?
Only if your audience and copy support it. GSM-7 offers no price advantage on smsroute—we charge the same rate from $0.004/SMS across 149 countries regardless of encoding. The real trade-off is reach and clarity. Forcing English marketing copy into GSM-7 when your user base includes Arabic speakers means you either exclude them or send them gibberish. Choose encoding based on your target market and character set, not cost.
Can I send the same message in both GSM-7 and UCS-2 to the same user?
No. A single SMS message has one encoding. The carrier or your SMS gateway detects the character set and applies encoding at send time. You cannot split a single logical message into two encodings for the same recipient. If you need to support multiple character sets, you either send separate messages or compose a single message that works in your chosen encoding.
Does concatenation (multi-part SMS) change which encoding I should use?
No. Concatenation is a transport mechanism; it does not change encoding. Each part of a multi-part message uses the same encoding as a single message. GSM-7 is still 160 characters per part; UCS-2 is still 70 characters per part. If your message exceeds those limits, the SMS gateway automatically splits it and applies the appropriate encoding to each segment.
What happens if I accidentally include a UCS-2 character in a GSM-7 message?
Your SMS gateway will detect the incompatibility and re-encode the entire message as UCS-2. This means your effective character budget drops from 160 to 70 characters per SMS. Even a single emoji, Chinese character, or non-Latin accented letter will trigger this conversion. This is why testing your copy in your gateway's character calculator is essential before launch.
Are there carrier differences in how GSM-7 and UCS-2 are handled?
Carrier behavior is consistent for GSM-7; all major carriers respect the 160-character limit and the standard character set. UCS-2 is more variable—some carriers apply extended character restrictions, non-delivery queuing, or additional latency to UCS-2 messages. When sending to markets where UCS-2 is mandatory (China, Middle East, South Asia), expect delivery times 1–3 seconds longer than GSM-7. smsroute's tier-1 delivery covers 99% across all encodings.
Should I always prefer GSM-7 for cost or performance reasons?
Only if your audience and copy support it. GSM-7 offers no price advantage on smsroute—we charge the same rate from $0.004/SMS across 149 countries regardless of encoding. The real trade-off is reach and clarity. Forcing English marketing copy into GSM-7 when your user base includes Arabic speakers means you either exclude them or send them gibberish. Choose encoding based on your target market and character set, not cost.
Can I send the same message in both GSM-7 and UCS-2 to the same user?
No. A single SMS message has one encoding. The carrier or your SMS gateway detects the character set and applies encoding at send time. You cannot split a single logical message into two encodings for the same recipient. If you need to support multiple character sets, you either send separate messages or compose a single message that works in your chosen encoding.
Does concatenation (multi-part SMS) change which encoding I should use?
No. Concatenation is a transport mechanism; it does not change encoding. Each part of a multi-part message uses the same encoding as a single message. GSM-7 is still 160 characters per part; UCS-2 is still 70 characters per part. If your message exceeds those limits, the SMS gateway automatically splits it and applies the appropriate encoding to each segment.
What happens if I accidentally include a UCS-2 character in a GSM-7 message?
Your SMS gateway will detect the incompatibility and re-encode the entire message as UCS-2. This means your effective character budget drops from 160 to 70 characters per SMS. Even a single emoji, Chinese character, or non-Latin accented letter will trigger this conversion. This is why testing your copy in your gateway's character calculator is essential before launch.
Are there carrier differences in how GSM-7 and UCS-2 are handled?
Carrier behavior is consistent for GSM-7; all major carriers respect the 160-character limit and the standard character set. UCS-2 is more variable—some carriers apply extended character restrictions, non-delivery queuing, or additional latency to UCS-2 messages. When sending to markets where UCS-2 is mandatory (China, Middle East, South Asia), expect delivery times 1–3 seconds longer than GSM-7. smsroute's tier-1 delivery covers 99% across all encodings.
Should I always prefer GSM-7 for cost or performance reasons?
Only if your audience and copy support it. GSM-7 offers no price advantage on smsroute—we charge the same rate from $0.004/SMS across 149 countries regardless of encoding. The real trade-off is reach and clarity. Forcing English marketing copy into GSM-7 when your user base includes Arabic speakers means you either exclude them or send them gibberish. Choose encoding based on your target market and character set, not cost.