Overview
The GSM-7 character set is the default encoding used for most SMS messages worldwide.
It defines a standard set of characters that can be transmitted efficiently using 7-bit encoding, allowing up to 160 characters per SMS.
When a message includes characters outside of this set, the encoding automatically switches to Unicode (UCS-2), reducing the message length limit to 70 characters.
This article provides a reference of all characters supported in GSM-7, details about extended (double-length) characters, and how these affect message segmentation and billing.
Standard GSM-7 Character Set
The following table lists the core GSM-7 characters, their HEX values, and corresponding ISO-8859-1 equivalents.
These characters each consume one unit of the SMS character limit.
| HEX | Character Name | Character | ISO-8859-1 Hex |
|---|---|---|---|
| 0x00 | COMMERCIAL AT | @ | 40 |
| 0x01 | POUND SIGN | £ | A3 |
| 0x02 | DOLLAR SIGN | $ | 24 |
| 0x03 | YEN SIGN | ¥ | A5 |
| 0x04 | LATIN SMALL LETTER E WITH GRAVE | è | E8 |
| 0x05 | LATIN SMALL LETTER E WITH ACUTE | é | E9 |
| 0x06 | LATIN SMALL LETTER U WITH GRAVE | ù | F9 |
| 0x07 | LATIN SMALL LETTER I WITH GRAVE | ì | EC |
| 0x08 | LATIN SMALL LETTER O WITH GRAVE | ò | F2 |
| 0x09 | LATIN CAPITAL LETTER C WITH CEDILLA | Ç | C7 |
| 0x0B | LATIN CAPITAL LETTER O WITH STROKE | Ø | D8 |
| 0x0C | LATIN SMALL LETTER O WITH STROKE | ø | F8 |
| 0x0E | LATIN CAPITAL LETTER A WITH RING ABOVE | Å | C5 |
| 0x0F | LATIN SMALL LETTER A WITH RING ABOVE | å | E5 |
| 0x10 | GREEK CAPITAL LETTER DELTA | Δ | — |
| 0x11 | LOW LINE | _ | 5F |
| 0x12 | GREEK CAPITAL LETTER PHI | Φ | — |
| 0x13 | GREEK CAPITAL LETTER GAMMA | Γ | — |
| 0x14 | GREEK CAPITAL LETTER LAMBDA | Λ | — |
| 0x15 | GREEK CAPITAL LETTER OMEGA | Ω | — |
| 0x16 | GREEK CAPITAL LETTER PI | Π | — |
| 0x17 | GREEK CAPITAL LETTER PSI | Ψ | — |
| 0x18 | GREEK CAPITAL LETTER SIGMA | Σ | — |
| 0x19 | GREEK CAPITAL LETTER THETA | Θ | — |
| 0x1A | GREEK CAPITAL LETTER XI | Ξ | — |
| 0x20–0x7E | Latin letters, digits, and common punctuation | A–Z, a–z, 0–9, and symbols such as !, ?, #, &, etc. | — |
(For a complete technical table, see GSM 03.38 specification.)
Extended GSM-7 Characters (Double-Length)
Certain characters in the GSM-7 set require an escape sequence (0x1B) and therefore count as two characters toward the total message length.
These are sometimes referred to as 14-bit characters because of their representation using the escape code plus the character code.
| Extended Character | Encoding Sequence | Counts As | Description |
|---|---|---|---|
| ^ | 0x1B0A | 2 | Circumflex accent |
| { | 0x1B14 | 2 | Left curly bracket |
| } | 0x1B28 | 2 | Right curly bracket |
| \ | 0x1B29 | 2 | Backslash |
| [ | 0x1B2F | 2 | Left square bracket |
| ~ | 0x1B3C | 2 | Tilde |
| ] | 0x1B3D | 2 | Right square bracket |
| 0x1B40 | 2 | ||
| € | 0x1B65 | 2 | Euro symbol |
Important:
When any of these characters appear in an SMS, they count as two characters each in the total length calculation.
Character Counting and Billing
SMS billing depends on the total character count, including extended characters and spaces.
| Encoding Type | Max Characters (Single SMS) | Max Characters per Segment (Concatenated) |
|---|---|---|
| GSM-7 | 160 | 153 |
| Unicode (UCS-2) | 70 | 67 |
When using extended GSM-7 characters, remember to count each of them as two when calculating total message length.
Example:
Message:
Your balance is €100. Please confirm.
Total visible characters: 33
Extended character:
€(counts as 2)Adjusted character count: 34
Since it’s under 160, this message fits in one SMS.
SMS Length Calculation Formula
For concatenated messages longer than 160 characters:
Formula:Number of SMS = Math.Ceiling(total_characters / 153)
Example:
If a message contains 344 characters (after counting double-length characters):344 / 153 = 2.25 → rounded up to 3 SMS
Therefore, the message will be billed as three SMS.
FTP and File Upload Compatibility
When uploading message files via FTP, encoding compatibility depends on the file’s text encoding format.
All uploaded files must support the basic GSM-7 character set.
| Supported | Not Supported |
|---|---|
| A–Z, a–z, 0–9, space, and GSM-7 punctuation | Non-Latin characters, emojis, symbols outside GSM-7 |
Examples: @, #, !, &, +, : | Examples: é, ñ, 😊, ß |
If unsupported characters are detected, the message may be converted to Unicode or truncated.
Line Breaks
Line breaks can be inserted using the pipe character (|) when supported by the platform.
This symbol acts as a line separator within long messages or templates uploaded via FTP.
Example:
Thank you for your purchase!|
Your order will arrive soon.
This will display as:
Thank you for your purchase!
Your order will arrive soon.
Best Practices
Always review your message content before sending to confirm encoding type.
Avoid using characters outside of the GSM-7 set to prevent conversion to Unicode.
Be mindful of extended characters (
^,{,},€, etc.) that count as two characters.Use short links to save space in your message.
Test your SMS length and encoding in the platform before launching bulk campaigns.
Summary
The GSM-7 character set provides an efficient way to encode SMS messages using 7 bits per character.
However, some extended symbols require two bytes, reducing the available space within a single message.
By understanding which characters are supported and how they are encoded, you can optimize your messages for both delivery efficiency and cost control.