SMS
SMS character limits, Unicode and message length
A single SMS holds 160 characters in the GSM-7 alphabet or 70 in Unicode (UCS-2). Longer messages are split into linked parts, each carrying a header that reduces the usable payload to 153 or 67 characters. Sendozi bills per page using a fixed character table, with a hard ceiling of 1,000 characters per send.
How many characters is one SMS?
160, if every character is in the GSM-7 alphabet. If the message contains even one character outside that alphabet, the whole message switches to Unicode encoding and the limit drops to 70 characters. This is a property of the SMS standard, not of any particular provider.
The reason is bit width. An SMS payload is 140 bytes. GSM-7 packs each character into 7 bits, so 140 bytes hold 160 characters. Unicode (UCS-2) uses 16 bits per character, so the same 140 bytes hold only 70. There is no middle setting: one out-of-alphabet character converts the entire message.
What is in the GSM-7 alphabet?
- A to Z and a to z, and the digits 0 to 9.
- Common punctuation: . , ? ! : ; ' " ( ) / + - * # % & @ _
- A handful of accented and Greek letters, and the currency symbols $ and the euro sign.
- Space, carriage return and line feed.
| Safe (GSM-7) | Not safe (forces Unicode) |
|---|---|
| ' straight apostrophe | ’ curly apostrophe |
| " straight quotes | “ ” curly quotes |
| - hyphen | – en dash, — em dash |
| ... three full stops | … ellipsis character |
| NGN or N | ₦ naira sign |
| -> as two characters | → arrow |
| (no equivalent) | Any emoji at all |
Two extra GSM-7 characters count double: characters in the extension table, notably the square and curly brackets, the backslash, the tilde, the caret and the vertical bar. Each of those consumes two of your 160.
Long messages: concatenation
A message longer than one SMS is split into parts and sent separately, each carrying a small header telling the handset how to reassemble them. The header consumes payload, so a linked part holds 153 GSM-7 characters instead of 160, or 67 Unicode characters instead of 70.
| Encoding | Single message | Each part when linked |
|---|---|---|
| GSM-7 | 160 characters | 153 characters |
| Unicode (UCS-2) | 70 characters | 67 characters |
The recipient normally sees one message: reassembly happens on the handset. What they do not see is that you paid for every part. This is also why a message that lands at 161 characters is the most expensive edit in messaging - one character doubles the price.
Hausa, Igbo, Yoruba and Nigerian Pidgin
Plain Nigerian Pidgin written in unaccented Latin letters stays in GSM-7 and keeps the full 160 characters. Hausa, Igbo and Yoruba written properly do not: their orthographies use characters outside the GSM-7 alphabet, so any correctly written message drops to the Unicode limit.
| Language | Characters that force Unicode | Practical limit |
|---|---|---|
| Hausa | ɓ ɗ ǝ ƙ and the apostrophe form ʼ | 70 per message |
| Igbo | ị ọ ụ and tone marks such as á à | 70 per message |
| Yoruba | ẹ ọ ṣ and tone marks such as á à | 70 per message |
| Nigerian Pidgin in plain Latin letters | None | 160 per message |
| English | None, unless smart punctuation creeps in | 160 per message |
How Sendozi counts and bills
Sendozi bills per page, resolved from the total character count of the message against a fixed table, at ₦7.00 per page. A single send cannot exceed 1,000 characters.
| Characters | Pages billed |
|---|---|
| 1 to 160 | 1 |
| 161 to 306 | 2 |
| 307 to 459 | 3 |
| 460 to 612 | 4 |
| 613 to 765 | 5 |
| 766 to 918 | 6 |
| 919 to 1000 | 7 |
The practical guidance is unchanged: count characters, keep transactional messages under 160, and preview the page count before a campaign. The dashboard shows it as you type, and the pricing guide works through costed examples.
Writing to fit
- Drop the greeting. "Hi Chidi," is nine characters that carry no information the message body lacks.
- Use a link shortener for URLs, but keep the domain recognisable - an unfamiliar shortener in a bank alert reads as phishing.
- Write numerals, not words: 10, not ten.
- Cut the closing signature. The sender ID already says who you are.
- Replace smart punctuation with straight equivalents before sending.
- Test the longest possible merge-field expansion, not the average one. A long name is what pushes a template over the boundary.
Frequently asked questions
- How many characters can one SMS hold?
- 160 in the GSM-7 alphabet, or 70 if the message contains any character outside it, because those messages are encoded in Unicode at 16 bits per character.
- Why did my message become two SMS when it was under 160 characters?
- Almost always a Unicode character: an emoji, a curly apostrophe, an en dash, an ellipsis character or the naira sign. One of them switches the whole message to the 70-character Unicode limit.
- Can I send SMS in Hausa, Igbo or Yoruba?
- Yes. Those languages send correctly as Unicode. Because their orthographies use characters outside GSM-7, expect the 70-character segment limit rather than 160.
- Do emoji cost extra?
- Not as a surcharge, but a single emoji converts the whole message to Unicode, which cuts the per-segment capacity from 160 characters to 70 and can multiply the pages you pay for.
- What is the longest message Sendozi will send?
- 1,000 characters in a single send. Anything longer is rejected with a validation error rather than truncated.
Related reading
SMS
Bulk SMS pricing in Nigeria: how the cost is calculated
Bulk SMS in Nigeria is billed per page, not per message. This guide explains where the page boundaries fall, works through costed examples and shows how to estimate a campaign before you send it.
SMS
Bulk SMS in Nigeria: the complete guide
How bulk SMS works in Nigeria: sender IDs, transactional and promotional routes, the DND register, page-based pricing, delivery reports and consent. Written for teams sending their first campaign.
Developers
Nigerian phone number formats for developers
How Nigerian mobile numbers are structured, how to convert 0803 local format to +234 E.164, the validation traps that break SMS delivery, and normalisation code in several languages.