Free tool · no sign-up

SMS segment counter: GSM-7, UCS-2 and cost of the send

Count the segments in an SMS, spot the characters that force UCS-2 (accents, emoji, curly quotes) and work out the cost per recipient and per send.

Content updated:

Paste the longest expected version, with the variables already filled in and the real link.
The one in your contract or price list for the destination country.
Number of messages you will send with this text.
Tick it if your price list excludes VAT.

How to use it

Paste the exact text that will reach the customer’s phone, not the template with blanks: a long name, a link or a date can add a segment. Enter your provider’s price per segment and how many recipients will receive that text. The tool shows the encoding, the characters and units used, the segments and the cost of the send, and lists the characters that force UCS-2 with an alternative for each.

If a GSM-7 version exists, it appears below with its cost and a button that loads it into the text box. Nothing you type leaves your browser.

What it calculates: encoding, limits and formula

An SMS carries 140 octets. If every character belongs to the GSM 7-bit alphabet, defined in the 3GPP TS 23.038 specification, 160 fit. A single character outside that alphabet switches the whole message to UCS-2, at 16 bits per character, and the limit drops to 70. When a long text is split, each part carries a header so it can be reassembled: according to Twilio’s documentation on limits, that leaves 153 characters per segment in GSM-7 and 67 in UCS-2.

EncodingSingle SMSPer segment if splitHow it counts
GSM-71601531 per character; 2 for ^ { } \ [ ~ ] | €
UCS-270671 per character; 2 for almost every emoji

Characters in the extension table need an escape code, so they take two positions. Almost every emoji sits outside Unicode’s basic plane and is sent as a pair of 16-bit units. The tool distributes the units without splitting those double characters across two segments and applies: segments = 1 if the units fit in 160 or 70; otherwise, as many blocks of 153 or 67 as needed. Cost = segments × recipients × price per segment, plus 21% if you tick VAT.

For Spanish, the 3GPP table includes é, É, ñ, Ñ, ü, Ü, ¿, ¡ and à in the basic alphabet, as shown in Twilio’s GSM-7 table. However, á, í, ó and ú, in lower or upper case, are not there, as its article on what a segment is points out: a single accent from that group turns the message into UCS-2.

Worked example with fictitious data

The default values are made up: a 137-character appointment reminder in Spanish for 100 recipients at €0.04 per segment, excluding VAT. The only problematic letter is the í in “Clínica”. Because of it the message goes in UCS-2: 137 units, split as 67 + 67 + 3, that is, 3 segments, with 64 left free in the last one.

VersionEncodingSegments per messageBillable segmentsCost of the send
With “Clínica”UCS-23300€12.00
With “Clinica”GSM-71100€4.00

The calculation is 100 × 3 × 0.04 = €12.00 against 100 × 1 × 0.04 = €4.00: one accent triples the bill for this fictitious campaign. The version without the accent leaves 23 characters free. Whether to drop it is an editorial decision, not just a cost one: in a business name you may prefer to reword the sentence, for example “tu cita en la consulta”.

How to read the result and its limits

The tool counts using the 3GPP default alphabet and extension table. It does not apply the national language shift tables defined in the same standard, including a Spanish one that adds á, í, ó and ú with an escape, because their use depends on the network and the provider. Nor does it know each provider’s own rules: Twilio’s limits page cited above gives 152 and 66 characters per segment for long messages from toll-free numbers to the United States and Canada, and describes Smart Encoding, an option that replaces certain characters with GSM equivalents.

The cost is an estimate: it excludes fees, country surcharges and rejected messages. Always compare the result with your provider’s breakdown of billed units.

Common mistakes

  • Testing the template with empty variables and finding on the invoice that the long name added a segment.
  • Pasting text from a word processor that turns straight quotes into curly ones or hyphens into dashes.
  • Adding an emoji at the end: it forces UCS-2 and takes two units.
  • Blaming a duplicate send for what is really one message split into several segments.

To reconcile an invoice with the segments, follow the guide on why one SMS is billed as several. If you automate the notification, check how to send an SMS after a call without duplicating it, and if it does not arrive, the diagnosis for an undelivered SMS.

The values you enter are calculated in your browser and are not sent to CallsIQ. The page measures visits with Google Analytics as described in the privacy policy.

Sources and limits of this tool

The linked sources support the formula, ranges or prices the tool uses. Examples with fictional data are identified in the text.

How to report a correction