What is a Segment?
A segment is a fixed-size chunk of an SMS message. Short messages fit in one segment. Longer messages are split across multiple segments, each with overhead bytes for reassembly headers.GSM-7 vs UCS-2 Encoding
SMS supports two character encodings. The encoding is chosen automatically based on the characters in your message.
If every character in your message is GSM-7 encodable — in the basic table or the extension table — the message uses GSM-7 encoding. If any character falls outside both tables, the entire message switches to UCS-2.
GSM-7 Basic Character Set
The GSM-7 basic set includes:- Letters: A-Z, a-z
- Digits: 0-9
- Symbols:
@ £ $ ¥ ! " # ¤ % & ' ( ) * + , - . / : ; < = > ? ¡ ¿ § _ - Accented characters:
è é ù ì ò Ç Å å Ä ä Ö ö Ñ ñ Ü ü à Æ æ ß É - Greek letters:
Δ Φ Γ Λ Ω Π Ψ Σ Θ Ξ - Special:
Ø øand standard whitespace (space, newline, carriage return)
GSM-7 Extension Characters
These characters are still GSM-7 — they do not force UCS-2 — but each one costs two septets instead of one:^ { } \ [ ] ~ | € (plus form feed). A message full of them fits roughly half as many characters per segment.
Characters That Trigger UCS-2
These commonly used characters force UCS-2 encoding, dramatically reducing your per-segment character limit:- Emoji (any emoji forces UCS-2)
- Smart quotes: \u201c \u201d \u2018 \u2019 (use straight quotes ” ’ instead)
- Em dash: \u2014 (use a hyphen - instead)
- Ellipsis character: \u2026 (use three periods … instead)
- Non-Latin scripts: Chinese, Arabic, Cyrillic, etc.
Segment Calculation
The platform calculates segments using this algorithm:- Check whether every character is in the GSM-7 basic table or the extension table — basic-table characters cost 1 septet each, extension-table characters cost 2 septets each
- If GSM-7: budget 160 septets (single) or 153 septets per part (multi-part)
- If UCS-2: use a 70-character limit (single) or 67 characters per part (multi-part)
- Divide the septet count (GSM-7) or the character count (UCS-2) by the per-segment limit, rounding up. A 2-septet extension character is never split across a part boundary — it moves whole to the next part
Examples
Billing Impact
Trackly bills per segment at tiered rates within a 360-day cycle:- First 1M segments: $0.0045/segment
- Next 4M segments (1M–5M): $0.0030/segment
- Next 15M segments (5M–20M): $0.0020/segment
- Above 20M segments: $0.0011/segment
Tips for Reducing Segments
- Avoid emoji — they force UCS-2 encoding and cut your limit from 160 to 70 characters
- Use straight quotes — replace smart quotes (\u201c \u201d) with straight quotes (” ”)
- Use short links — Trackly’s link shortener creates compact URLs that save characters
- Keep messages under 160 characters — one GSM-7 segment is the sweet spot for cost and deliverability
- Check segment counts before sending — a sandbox send and the preflight endpoint both return a
segment_countfield so you can verify segmentation before a live send; the live send response returns onlysuccess,message_id, andstatus
Template Length Cap
Creative templates are limited to 1,600 characters. This prevents accidentally creating messages that would produce an excessive number of segments.Next Steps
Creative Templates
Design effective message templates
Platform Limits
View all platform limits