# SMS Encoding Guide and Segment Calculator

Compare GSM-7, ASCII, Latin-1, and UCS-2 behavior, then calculate exact segment counts for any message payload.

**Practical rule:** encoding determines payload size, segment count, and delivery cost profile.

## Encoding Comparison

SMS payloads are limited to 140 bytes. Concatenated SMS uses UDH overhead, which reduces per-segment capacity.

| Encoding | Typical Use | Single Segment | Concatenated Segment | Unit |
| --- | --- | --- | --- | --- |
| **[GSM-7](/content/docs/messaging/sms_encoding#charset-gsm7/index.html)** | Default SMS alphabet, most Western-language traffic | 160 | 153 | septets (7-bit chars) |
| **[ASCII](/content/docs/messaging/sms_encoding#charset-ascii/index.html)** | 7-bit ASCII characters sent in 8-bit payload mode | 140 | 134 | bytes |
| **[Latin-1](/content/docs/messaging/sms_encoding#charset-latin1/index.html)** | Extended Western European characters in 8-bit mode | 140 | 134 | bytes |
| **[UCS-2](/content/docs/messaging/sms_encoding#charset-ucs2/index.html)** | Multilingual/unicode messaging | 70 | 67 | 16-bit code units |

## Segment Calculator

Message

Sample GSM-7Sample Latin-1Sample UCS-2

EncodingAuto-detect Best EncodingGSM-7ASCII (8-bit payload)Latin-1 (8-bit payload)UCS-2

Segments

0

Units Used

0

Per Segment Units

0

Remaining

160

**Resolved encoding:** GSM-7

**Payload bytes:** 0

**Character count:** 0

Auto-selected GSM-7 for lowest segment usage based on current message content.

* * *

### Cost Estimator (Editable Assumptions)

Base Rate / Segment (USD)

Estimated Carrier Fee / Segment (USD)

Fixed Fee / Message (USD)

Estimated Message Cost

$0.0000

| Encoding | Valid for Message | Segments | Units | Payload Bytes | Est. Cost (USD) |
| --- | --- | --- | --- | --- | --- |
| **GSM-7** | Yes | 0 | 0 | 0 | $0.0000 |
| **ASCII** | Yes | 0 | 0 | 0 | $0.0000 |
| **Latin-1** | Yes | 0 | 0 | 0 | $0.0000 |
| **UCS-2** | Yes | 0 | 0 | 0 | $0.0000 |

### GSM-7 Notes

- GSM-7 extension-table characters consume 2 septets (`^`, `{`, `}`, `\`, `[`, `]`, `~`, `|`, `€`).
- If a message includes characters outside GSM-7 tables, GSM-7 is not a valid encoding for that payload.
- GSM-7 supports 160 chars for one segment and 153 chars per segment when concatenated.

### UCS-2 Notes

- UCS-2 uses 2 bytes per 16-bit code unit.
- Single-segment limit is 70 code units, then 67 per concatenated segment.
- For characters outside the BMP (for example many emoji), practical implementations use surrogate pairs and consume 2 code units.

### Supported Character Sets

Use these references to validate payload compatibility before selecting an encoding in production.

#### GSM-7 Character Set

Basic table characters (1 septet each):

```
@ £ $ ¥ è é ù ì ò Ç \n Ø ø \r Å å Δ _ Φ Γ Λ Ω Π Ψ Σ Θ Ξ Æ æ ß É
! \" # ¤ % & ' ( ) * + , - . /
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
¡ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ä Ö Ñ Ü §
¿ a b c d e f g h i j k l m n o p q r s t u v w x y z ä ö ñ ü à
```

Extension table characters (2 septets each): `^ { } \ [ ] ~ | €`

#### ASCII Character Set

Supported range: `U+0000` to `U+007F` (7-bit ASCII).

Common printable range: `U+0020` to `U+007E`, including letters, digits, punctuation, and symbols.

#### Latin-1 (ISO-8859-1) Character Set

Supported range: `U+0000` to `U+00FF`.

Includes ASCII plus Western European accented characters such as `Á É Í Ó Ú Ñ Ç Ö Ü ß æ ø`.

#### UCS-2 Character Set

Supports 16-bit Unicode code units in the Basic Multilingual Plane (BMP), roughly `U+0000` to `U+FFFF`.

Characters outside BMP (for example many emoji) are encoded as surrogate pairs in practical implementations and consume additional units.
