---
title: "SMS Character Limits: GSM-7, Unicode, Arabic and Emoji Explained"
description: "SMS character limits explained: GSM-7 vs UCS-2, 160 and 70 characters, 153 and 67 per segment, and why Arabic and emoji raise cost. Write SMS that fit."
canonical: "https://omnichannels.ai/blog/sms-character-limits-unicode-arabic/"
language: "en"
updated: "2026-10-09"
publisher: "BroadNet Technologies"
brand: "OmniChannels.ai"
category: "sms"
primaryQuery: "sms character limit"
keywords: ["gsm-7 vs ucs-2", "sms 160 characters", "arabic sms character limit", "unicode sms 70 characters", "concatenated sms 153", "emoji sms cost", "sms segments"]
published: "2026-10-09"
author: "OmniChannels.ai Editorial Team"
reviewer: "BroadNet Messaging Solutions Team"
readingMinutes: 8
answer: "A single SMS carries 140 bytes of text. In the GSM 7-bit alphabet, used for basic Latin text, that is 160 characters; in Unicode (UCS-2), needed for Arabic, emoji and many accented letters, it is 70. Longer messages are split into segments of 153 GSM-7 or 67 Unicode characters, and each segment is billed. One non-GSM character switches the whole message to Unicode."
takeaways: ["One SMS holds 140 octets of user data: 160 GSM-7 characters or 70 UCS-2 characters, as defined in 3GPP TS 23.040 and TS 23.038.", "Concatenated messages lose space to a header in each part, leaving 153 GSM-7 or 67 UCS-2 characters per segment.", "A single Arabic letter, emoji, curly quotation mark or unsupported accent forces the entire message into UCS-2 encoding.", "GSM-7 extension characters such as €, [, ], {, }, ~, \\ and | count as two characters because they need an escape code.", "Arabic SMS costs more per word than English because of UCS-2, so editing for length has a direct effect on campaign cost."]
faq: 
  - q: "How many characters are in one SMS?"
    a: "One SMS carries 140 octets of user data. Using the GSM 7-bit default alphabet, that equals 160 characters. Using UCS-2 Unicode encoding, required for Arabic, Chinese, emoji and characters outside the GSM alphabet, it equals 70 characters. If a message is longer, it is sent as several linked segments and usually billed per segment."
  - q: "Why does a long SMS have 153 characters per part instead of 160?"
    a: "When a message is split, each part carries a user data header that tells the handset how to reassemble the pieces. The common header takes 6 octets, which leaves room for 153 GSM-7 characters or 67 UCS-2 characters in each segment. The handset shows the parts as one message, but the network and your provider count them separately."
  - q: "How many characters can an Arabic SMS have?"
    a: "Arabic is not in the GSM 7-bit alphabet, so Arabic SMS use UCS-2 encoding: 70 characters in a single message, or 67 per segment when the message is longer. Spaces, punctuation and Western digits in an Arabic message also count toward that Unicode limit, because the whole message uses one encoding."
  - q: "Do emoji make SMS more expensive?"
    a: "Usually yes. An emoji is not in the GSM alphabet, so one emoji switches the whole message to Unicode and cuts the single-message limit from 160 to 70 characters. Most emoji also take two 16-bit units, and some combined emoji such as flags take more, so they consume extra space within the Unicode limit."
  - q: "Can I send Arabic SMS in GSM-7 to save money?"
    a: "Only by writing Arabic in Latin letters, sometimes called Arabizi. That fits GSM-7, but many customers find it harder to read and it can look less trustworthy for a brand. A better saving is to edit Arabic copy tightly, remove diacritics and decorative elongation, and target a fixed number of segments."
sources: 
  - title: "3GPP TS 23.038: Alphabets and language-specific information"
    url: "https://www.3gpp.org/dynareport?code=23038"
  - title: "3GPP TS 23.040: Technical realization of the Short Message Service (SMS)"
    url: "https://www.3gpp.org/dynareport?code=23040"
  - title: "UTF-8, UTF-16, UTF-32 and BOM FAQ — Unicode Consortium"
    url: "https://www.unicode.org/faq/utf_bom.html"
---

# SMS Character Limits: GSM-7, Unicode, Arabic and Emoji Explained

Canonical: https://omnichannels.ai/blog/sms-character-limits-unicode-arabic/
Language: en
Publisher: OmniChannels.ai by BroadNet Technologies

This guide is for marketers, CRM teams and developers who write SMS in English, Arabic or other languages and want to control cost and deliverability. You will learn how SMS encoding works, how many characters fit in each segment and how to write messages that stay within a predictable number of segments.

## How many characters fit in one SMS?

One SMS carries 140 octets (bytes) of user data. How many characters that holds depends on the encoding, and the provider chooses the encoding automatically from the characters you use.

The rules come from two 3GPP specifications: TS 23.040, which defines the SMS message structure, and TS 23.038, which defines the alphabets.

| Encoding | Bits per character | Single SMS | Per segment when split | Used for |
|---|---|---|---|---|
| GSM 7-bit default alphabet | 7 | 160 characters | 153 characters | Basic Latin letters, digits, common punctuation, some accented letters |
| UCS-2 (16-bit Unicode) | 16 | 70 characters | 67 characters | Arabic, emoji, Chinese, most accented and special characters |
| 8-bit data | 8 | 140 bytes | 134 bytes | Binary data, not normal text |

The arithmetic is simple: 140 octets × 8 bits ÷ 7 bits = 160 GSM-7 characters, and 140 ÷ 2 bytes = 70 UCS-2 characters.

## What is the difference between GSM-7 and UCS-2?

GSM-7 is a compact 7-bit alphabet designed for SMS. UCS-2 is a 16-bit Unicode encoding that can represent almost any script but uses more than twice the space per character.

GSM-7 covers A–Z, a–z, 0–9, common punctuation, a set of symbols such as @, £, $, % and &, and a limited set of accented letters including é, è, ü, ñ and à. It does not include many accented letters used in French, Spanish or Portuguese, such as á, ç (lower case), ê or õ, nor any Arabic, Cyrillic or Asian script.

### The extension table

Some common characters live in a GSM-7 extension table and need an escape code first, so each counts as two characters: € [ ] { } ~ \ | ^ and the form feed. A message with several euro signs or brackets loses capacity quickly.

### National language tables

TS 23.038 also defines national language shift tables for languages such as Turkish, Spanish, Portuguese and several Indian languages, which allow more characters in 7-bit mode. Support depends on networks, providers and handsets, so do not rely on them without testing on your target operators.

## Why does a long SMS use 153 or 67 characters per segment?

When a message exceeds a single SMS, it is split into segments and each segment carries a user data header (UDH) that tells the handset how to reassemble it. The usual header takes 6 octets, leaving 134 octets for text.

- In GSM-7, 134 octets hold 153 characters.
- In UCS-2, 134 octets hold 67 characters.

The handset displays one message, but your provider and the operator count and usually bill each segment.

| Segments | GSM-7 maximum characters | UCS-2 maximum characters |
|---|---|---|
| 1 | 160 | 70 |
| 2 | 306 | 134 |
| 3 | 459 | 201 |
| 4 | 612 | 268 |
| 5 | 765 | 335 |

Two practical details change the exact count. Providers avoid splitting a two-character extension sequence or an emoji across segments, so a segment can hold one character fewer than the theoretical maximum. And many providers cap the number of segments per message, so very long texts may be rejected or truncated; check your provider's limit.

## Why do Arabic and emoji change the cost?

Any character outside GSM-7 forces the entire message into UCS-2. That cuts the single-message limit from 160 to 70 characters and the per-segment limit from 153 to 67.

- **Arabic text** always uses UCS-2. A 100-character Arabic message needs two segments; the same length in English fits in one.
- **Emoji** are outside GSM-7. Most emoji sit outside Unicode's Basic Multilingual Plane and are represented in UTF-16 as a surrogate pair, two 16-bit units, so they take two of the 70 available positions. Combined emoji, such as flags or skin-tone variants, take more.
- **Hidden culprits** in English text: curly quotation marks (’ “ ”), en and em dashes (– —), the ellipsis character (…) and non-breaking spaces, often pasted from word processors or design tools. Any one of them switches the message to UCS-2.

### Worked example: a Riyadh mall campaign

"Najm Mall" (synthetic) plans a weekend SMS to 200,000 customers in English and Arabic. We counted each draft's characters.

| Draft | Characters | Encoding | Segments |
|---|---|---|---|
| English with straight hyphens, no emoji | 122 | GSM-7 | 1 |
| Same English with two en dashes and one emoji | 125 units | UCS-2 | 2 |
| Arabic, first draft | 153 | UCS-2 | 3 |
| Arabic, edited | 101 | UCS-2 | 2 |

The English version: "Najm Mall: Weekend sale, up to 30% off home & kitchen. Fri-Sat 10am-10pm. Show this SMS at the till. Reply STOP to opt out". Adding a party emoji and typographic dashes doubled the segment count for the English audience. Editing the Arabic copy from three segments to two cut that audience's cost by a third, with the same offer and deadline.

## How do you write SMS that fit?

Decide the segment budget first, then write to it. A checklist for every campaign:

1. **Set a target**: one segment for OTPs and alerts; one or two for marketing.
2. **Write in a plain-text editor** and convert typographic quotes and dashes to straight ones.
3. **Drop emoji from English messages** unless you have decided the extra segment is worth it.
4. **Use a segment counter** that detects encoding before sending, and preview the final text, including personalization fields at their longest likely length.
5. **Allow for variables**: a long customer name or product name can push a message into the next segment.
6. **For Arabic**, remove diacritics (tashkeel) and decorative elongation (tatweel), which each count as characters; prefer short phrasing; and use abbreviations your audience reads naturally.
7. **Shorten links** with your own branded domain rather than pasting long tracking URLs.
8. **Test on handsets** in each language to confirm rendering and segment count.

For OTPs, keep the code first and the message within one segment; see our [OTP guide](/blog/otp-authentication-messages-guide/). For campaign planning, see [bulk SMS best practices](/blog/bulk-sms-best-practices/).

## Common mistakes and limits

- **Counting characters, not encoding.** A 90-character message can be one segment or two.
- **Mixing languages carelessly.** One Arabic word in an English message makes the whole message Unicode.
- **Ignoring the extension table.** Euro prices and brackets count double in GSM-7.
- **Forgetting personalization length.** Test with the longest values in your data.
- **Assuming every provider counts the same way.** Splitting rules and maximum segment counts differ; confirm with your provider.
- **Limits of this guide:** handsets and networks occasionally handle edge cases differently, especially national language tables and complex emoji. Test critical messages on the operators you send to.

## How OmniChannels.ai helps

OmniChannels.ai supports Arabic and English across [SMS campaigns](/channels/sms/) and other channels, with message preview before sending, Excel or CSV upload, scheduling and duplicate filtering. Delivery reports, with summary and advanced views, filters and CSV export, help you reconcile what was sent and delivered. SMS is delivered through BroadNet Technologies, a telecom messaging company with SMS operator connectivity, and billing runs on a prepaid wallet. Learn more about running [multi-channel campaigns](/platform/campaigns/).
