Skip to content
OmniChannels.ai

Free tool

SMS character and segment counter

Paste your message to see its encoding, how many SMS segments you will be billed for, and which characters push it from 160 to 70 characters per SMS. Works for English, Arabic and emoji.

Free · no sign-up · runs in your browser

Try an example

97 / 134

Characters forcing Unicode

Remove or replace these to go back to GSM-7 and fit up to 160 characters per SMS.

  • ’U+2019
  • –U+2013
  • “U+201C
  • ”U+201D
  • …U+2026

Where they are

Don’t miss it – “Weekend Sale” ends Sunday… Use code SAVE20 at checkout: https://example.com/sale

Segments (billed SMS)

EncodingUnicode (UCS-2)

At least one character is outside GSM-7, so the whole message is sent as UCS-2: 70 characters in one SMS, 67 per part.

Segments (billed SMS)
2
Left in this segment
37
before another segment is added
Characters
97
UCS-2 units
97
Emoji
0
Extension characters
0

How the message splits

Single SMS: up to 70 · Multipart: 67 per part (the rest is the concatenation header)

  1. Part 167/67
  2. Part 230/67

Estimated monthly volume

2 segments × 10,000 messages

= 20,000 SMS

Get real SMS rates for your country

Sending SMS at scale in the GCC and beyond? See our SMS API

Nothing you type here is sent to our servers.

Short answer

An SMS holds 160 characters in the GSM-7 alphabet or 70 in Unicode (UCS-2). Longer messages are split into parts of 153 (GSM-7) or 67 (UCS-2) characters, because each part carries a concatenation header, and every part is billed as one SMS. A single character outside GSM-7, such as a curly quote, an emoji or an Arabic letter, switches the whole message to UCS-2.

How to count SMS characters and segments

  1. 1

    Paste your message

    Type or paste the exact text you plan to send, including links, line breaks and the sender's sign-off.

  2. 2

    Check the encoding

    GSM-7 gives you 160 characters per SMS; Unicode (UCS-2) gives 70. The badge shows which one applies and why.

  3. 3

    Fix characters that force Unicode

    Highlighted characters are outside GSM-7. Replace smart quotes, dashes and special spaces in one click, or edit the rest by hand.

  4. 4

    Estimate your volume

    Enter how many messages you send per month to see the billable segments, then check real rates for your country.

How SMS length is calculated

One SMS carries 140 octets (1,120 bits) of user data. In the GSM 7-bit default alphabet each character takes 7 bits, so 140 octets hold 160 characters. In UCS-2 (the 16-bit Unicode encoding used for SMS) each character takes 2 octets, so the same space holds 70 characters.

When a message is longer than one SMS, it is sent as a concatenated message. Each part starts with a User Data Header (UDH) of 6 octets that carries a reference number, the total number of parts and the part's position, so the phone can reassemble them. That header leaves 134 octets per part: 153 GSM-7 characters or 67 UCS-2 characters.

The recipient sees one message, but operators and providers bill every part. A 161-character GSM-7 message costs two SMS, and a 71-character Arabic message also costs two.

  • GSM-7: 160 characters in one SMS, 153 per part when concatenated (306 for 2 parts, 459 for 3).
  • UCS-2: 70 characters in one SMS, 67 per part when concatenated (134 for 2 parts, 201 for 3).
  • One non-GSM character anywhere in the text switches the entire message to UCS-2.

The GSM-7 alphabet and its extension table

The GSM 7-bit default alphabet is defined in 3GPP TS 23.038 (originally GSM 03.38). Its basic table has 128 positions: Latin letters and digits, common punctuation, and characters such as @ £ $ ¥ è é ù ì ò Ç Ø ø Å å Ä Ö Ñ Ü ä ö ñ ü à ß Æ æ É ¿ ¡ § and the Greek capitals Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ. Line feed and carriage return are also single characters.

A further ten characters live in the extension table and are reached through an escape code, so each one costs two septets: the euro sign €, the caret ^, braces { }, square brackets [ ], the tilde ~, the vertical bar |, the backslash \ and the form feed. A message with 158 letters and one € is exactly 160 septets; add one more letter and it becomes two segments.

An escape sequence must stay in one part, so a two-septet character that would straddle the 153-septet boundary moves to the next part. This counter applies that rule, which is why a part can end at 152.

TS 23.038 also defines national language shift tables (for example Turkish, Spanish, Portuguese and several Indian scripts) that keep some messages in 7-bit encoding. Support depends on the network and the handset, so most platforms, and this counter, use the default alphabet only.

Characters that silently switch your SMS to Unicode

Most unexpected 70-character messages are caused by text copied from a word processor, a CMS or a phone keyboard that inserts typographic characters automatically. They look almost identical to their GSM-7 equivalents but are different code points.

Accented letters that are not in the table, such as á í ó ú â ê ã õ and lower-case ç, also force UCS-2. Replace them only if your audience accepts unaccented spelling; for many languages, correct spelling matters more than the extra segment.

  • Curly quotes and apostrophes ‘ ’ “ ” (use ' and ").
  • En and em dashes – — (use -), and the ellipsis … (use ...).
  • Non-breaking and thin spaces, often invisible after copy and paste (use a normal space).
  • Zero-width characters and byte order marks hidden in templates (remove them).
  • Emoji: most take 2 UCS-2 units, a flag or a skin-tone emoji takes 4, and a family sequence takes 8 or more.

Convert a message to GSM-7 in one click

When a message is in Unicode, the Convert to GSM-7 button rewrites it with GSM-7 characters only where that is safe: curly quotes and dashes become plain ones, invisible spaces are removed, accents GSM-7 lacks are stripped (á → a, ã → a, lower-case ç → Ç), and ligatures and symbols are spelled out (œ → oe, ™ → TM). Characters that are already GSM-7, such as é, ü, ñ, ß and €, are kept.

The tool lists every change and shows the segment count before and after, and Undo restores your original text. Arabic cannot be converted: an Arabic message always stays in Unicode at 70 characters per SMS, so shorten it or send it on WhatsApp. Emoji and other non-Latin scripts are also left as they are.

Arabic SMS: 70 characters, 67 per part

Arabic letters are not part of GSM-7, so every Arabic SMS is sent in UCS-2: 70 characters in a single message and 67 per part once it is longer. A 140-character Arabic message is three billed segments, not two, because 140 is more than 2 × 67 = 134.

Every code point counts, including spaces, Latin letters mixed into the text, Arabic-Indic digits and diacritics (tashkeel). A fully vowelled word can use twice as many units as the same word without harakat, so omit diacritics in transactional messages unless they are needed to avoid ambiguity.

For OTPs and alerts in the GCC, keep the Arabic text under 70 characters where you can, put the code early in the message, and avoid emoji. If you send the same alert in English, the English version can be more than twice as long for the same price.

From segments to cost

Your monthly SMS bill is driven by segments, not messages: segments per message × messages per month × the rate for the destination network. Trimming a campaign from 2 segments to 1 halves the cost of every send.

Check the final text with variables filled in. A customer name, an order number or a shortened link can push a template over a boundary, and names in Arabic or with accents can switch a GSM-7 template to UCS-2 for some recipients only.

  • Test the longest realistic values of every placeholder.
  • Shorten links and remove trailing spaces and line breaks.
  • Prefer one clear call to action over long multi-part messages.

SMS character count FAQ

How many characters can one SMS have?

160 characters when the text uses only the GSM-7 alphabet, or 70 characters when it contains any character outside GSM-7 and is sent as Unicode (UCS-2). Both fit the same 140 octets of user data.

Why is my SMS limited to 70 characters?

At least one character is outside the GSM-7 alphabet, so the whole message is encoded in UCS-2. Common causes are curly quotes, long dashes, emoji, non-breaking spaces and non-Latin scripts such as Arabic. The counter highlights them so you can replace or remove them.

Can I convert a Unicode SMS to GSM-7?

Often, yes. The Convert to GSM-7 button replaces typographic characters, removes accents that GSM-7 lacks and spells out symbols, then shows what changed and the new segment count. Arabic, emoji and other non-Latin scripts cannot be converted and keep the message in Unicode.

Why are long SMS parts 153 characters instead of 160?

Each part of a concatenated SMS carries a 6-octet User Data Header that tells the phone how to reassemble the message. That leaves 134 octets per part: 153 GSM-7 characters or 67 UCS-2 characters.

Does the euro sign count as two characters?

Yes, in GSM-7. The € sign and ^ { } [ ] ~ | \ and form feed are in the extension table and take two septets each. In a Unicode message they count as one unit like any other character.

How many characters can an Arabic SMS have?

70 characters in a single SMS and 67 per part for longer messages, because Arabic is always sent in UCS-2. Spaces, digits and diacritics all count.

How do emoji count in an SMS?

An emoji forces UCS-2, and most emoji take 2 units because they are stored as a surrogate pair. Flags and skin-tone emoji take 4 units, and combined emoji such as families take 8 units or more.

What is the maximum length of a long SMS?

The concatenation header allows up to 255 parts, but networks, providers and handsets often apply lower limits. Keep important messages to a few parts; beyond that, a link to a page is usually cheaper and easier to read.

Do spaces and line breaks count as characters?

Yes. Spaces, line feeds and carriage returns each count as one character in GSM-7 and one unit in UCS-2. Trailing spaces and blank lines can push a message into an extra segment.

More free tools