G-SMS.

SMS segment calculator

How many SMS does your message really cost? A single emoji is enough to double the bill.

No sign-up, no usage limit.

Enter a message to see how it is split.

This calculation is exactly the one the API returns before every send.

Why an SMS is not a free-form text field

A single SMS carries at most 160 characters, because each character is coded on seven bits in the GSM-7 alphabet. Beyond that the message is split, and every part carries a reassembly header, leaving only 153 usable characters per segment. Every segment is a billed SMS.

As soon as one single character falls outside that alphabet, the whole message switches to UCS-2, coded on sixteen bits: capacity drops to 70 characters, and to 67 per segment once split. The expensive part is not the offending character, it is the switch of the entire message.

These four sizes are service settings, not carved constants: administrators can adjust them, and the API remains the reference. The tool uses the values in force when this page was written.

The characters that flip a message

CharactersEffect
ç œ â ê î ô û ë ï ÿUCS-2. Lowercase ç is not in the GSM-7 alphabet, while uppercase Ç is.
à è é ì ò ù ä ö ñ ü å æ ø ß ÉGSM-7. These accents are free: they count as one character each.
’ “ ” « » – — … UCS-2. Curly quotes, French guillemets, long dashes, the ellipsis — and the non-breaking space, invisible on screen. These are the signs word processors insert in place of the straight ones.
€ [ ] { } \ ~ ^ |GSM-7, but they count double: each one takes two characters.
EmojisUCS-2, and two characters each.

The cheapest habit: paste the text through a plain editor before sending it, so typographic signs are replaced by their straight equivalents.

Four worked examples

Computed by the same function as the tool above. The price is the one for a send to Orange.

MessageEncodingCharactersSegmentsPrice
“Your verification code is 12345”GSM-7311XAF 5
The same message with an emojiUCS-2341XAF 5
A 150-character plain reminderGSM-71501XAF 5
The same reminder with one curly apostrophe ’UCS-21503XAF 15

The last row is the classic trap: one curly apostrophe, invisible when proofreading, takes a 150-character reminder from one segment to three.

What the API does with the split

The price of a send is the carrier rate multiplied by the number of segments, and the response says so plainly: segments and priceXaf are both in the body, together with the balance left after the debit.

curl -X POST 'https://api.sms.gworldship.com/v1/sms' \
  -H 'Authorization: Bearer gsk_votre_cle_api' \
  -H 'Content-Type: application/json' \
  -d '{"to":"+237690000000","text":"Your appointment on the 14th at 10am is confirmed — please arrive early"}'
{
  "messageId": "8f1c0b2e-4a77-4f1a-9d3e-2b5c7a0e1f44",
  "to": "+237690000000",
  "operator": "ORANGE",
  "segments": 2,
  "priceXaf": 10,
  "status": "QUEUED",
  "balanceAfterXaf": 9990,
  "createdAt": "2026-09-12T08:24:31Z"
}

Two segments for 71 characters: the long dash in this message switched it to UCS-2, where the first segment stops at 70 characters.

Two refusals happen before any debit: an empty text gives 400 TEXT_EMPTY, and a text longer than 1600 characters gives 400 TEXT_TOO_LONG.

Frequently asked questions

Does a 200-character message cost twice as much?

Yes. Past 160 GSM-7 characters the message is split, and every segment is billed at the carrier rate. 200 characters make 2 segments.

Why 153 characters per segment instead of 160?

Each segment of a split message carries a reassembly header, which lets the handset put the parts back in order. That header costs the equivalent of seven characters.

Do emojis work on Cameroonian networks?

They do, but they switch the message to UCS-2: it then holds 70 characters, 67 per segment beyond that, and an emoji counts as two. On a transactional message, one decorative character can triple the bill.

One account is enough to send your first message: instant API key, 100 XAF of free credit.

Try the API