Two encodings, two very different limits
GSM-7 is a 7-bit character set covering basic Latin letters, digits, and common punctuation — it fits 160 characters in a single SMS segment. Unicode (UCS-2) covers virtually any script, including Arabic, but at 16 bits per character it fits only 70 characters per segment.
Why one Arabic character changes everything
Encoding is chosen for the whole message, not per character: if a single character anywhere in the message falls outside the GSM-7 set, the entire message is sent as Unicode. A message that is 95% English but includes one Arabic word, or a single emoji, drops from a 160-character budget to 70.
Multipart segments cost more than they look
Once a message exceeds one segment's limit, it is split into multiple parts, each carrying a small header that reduces usable space per part — 153 characters per part for GSM-7, 67 for Unicode, instead of the single-segment limits. A message that looks "just over" one segment can require two full billed segments.
Practical guidance
- Keep Arabic message templates under ~70 characters where possible to stay in a single segment
- Avoid mixing scripts or adding a single emoji to an otherwise GSM-7-only message unless the length budget allows for Unicode
- Check real templates — not estimates — with our SMS segment calculator before finalizing them
- For OTP messages specifically, brevity also improves user experience — see OTP & Verification
Frequently asked questions
How many characters fit in one Arabic SMS?
About 70 characters, because Arabic requires Unicode (UCS-2) encoding rather than the 160-character GSM-7 encoding used for basic Latin text.
Does one emoji really push a whole message into Unicode?
Yes, in most cases — encoding is chosen for the entire message based on whether every character fits the GSM-7 set. A single character outside that set switches the whole message to Unicode and its lower per-segment limit.
How do I check my actual template length before sending?
Use our free SMS segment calculator — paste your exact template text to see its real character count, encoding, and segment count instantly.