Un seul SMS fait 160 caractères en GSM-7, ou 70 caractères en UCS-2. L'encodage choisi par l'opérateur dépend automatiquement du contenu : si chaque caractère est dans l'alphabet GSM-7 par défaut, tu obtiens 160. Si même un seul caractère sort, tout le message est ré-encodé en UCS-2 et la limite tombe à 70.
Au-delà de 160 / 70, le message est découpé en segments concaténés. Chaque segment porte un en-tête de 6 octets pour permettre le réassemblage, donc les SMS multi-segments utilisent seulement 153 caractères (GSM-7) ou 67 (UCS-2) par segment. Les opérateurs facturent au segment, ce qui explique pourquoi un seul emoji dans un envoi de 200 caractères peut discrètement transformer un message 1 segment en 4 segments.
Tableau Récapitulatif
| Scénario | Limite | Notes |
|---|---|---|
| SMS unique, GSM-7 | 160 car. | Latin simple, pas d'emoji |
| SMS unique, UCS-2 | 70 car. | Tout caractère non-GSM-7 force ce mode |
| Segment concaténé, GSM-7 | 153 car. | UDH 6 octets prend 7 car. par segment |
| Segment concaténé, UCS-2 | 67 car. | UDH 6 octets prend 3 car. par segment |
| iMessage / RCS / WhatsApp | 20 000+ car. | Pas du SMS. Autres règles |
GSM-7 : Le Standard 160 Caractères
GSM-7 est l'encodage SMS par défaut défini par la norme GSM 03.38. Il emballe 7 bits par caractère, c'est ainsi que 160 caractères tiennent dans la charge utile SMS de 1 120 bits (140 octets). L'alphabet a 128 caractères de base plus une table d'extension de 10 caractères. Tout ce qui sort de ces 138 force l'UCS-2.
L'alphabet de base couvre les lettres latines non accentuées (A-Z, a-z), les chiffres 0-9, la ponctuation courante, l'espace, et un petit ensemble de lettres accentuées européennes (à, è, ì, ò, ù, é, ñ, Ç, ä, ö, ü, ß).
UCS-2 : Quand Tu es Forcé à 70 Caractères
UCS-2 est un encodage Unicode 16 bits (2 octets). La même charge utile SMS de 140 octets contient 70 unités UCS-2 par segment, ou 67 une fois concaténé. Les opérateurs basculent en UCS-2 dès qu'un seul caractère sort de GSM-7. Pas de conversion partielle.
Les déclencheurs UCS-2 les plus courants sont des caractères auxquels la plupart ne pensent pas : les guillemets courbes que Word et macOS substituent aux droits, les tirets cadratin et demi-cadratin, le caractère ellipse, chaque emoji, et tout script non-latin.
SMS Concaténés : Pourquoi 153 / 67 ?
Quand un message dépasse la limite mono-SMS, il est découpé et chaque segment est envoyé comme un SMS séparé sur le réseau. Pour permettre le réassemblage, chaque segment porte un User Data Header (UDH) de 6 octets avec numéro de référence, nombre total de segments et position.
L'UDH consomme 7 caractères en GSM-7, réduisant de 160 à 153 par segment. En UCS-2, c'est 3 unités, faisant tomber 70 à 67 par segment.
Le Coût Réel des SMS Multi-Segments
Presque toutes les API SMS commerciales facturent par segment, pas par message. Coût total = segments par message × destinataires × tarif par segment. Là où ça se complique, c'est le piège d'encodage : une campagne écrite avec des guillemets courbes double silencieusement son compte de segments.
Aux tarifs Twilio US, une promo de 200 caractères à 100 000 destinataires en GSM-7 pur fait 2 segments × 100 000 × 0,0079 $ = 1 580 $. Le même texte avec deux guillemets typographiques bascule en UCS-2, devient 3 segments, et coûte 2 370 $.
Caractères Qui Forcent l'UCS-2
- Guillemets courbes : Word, Pages et macOS remplacent automatiquement les droits par des courbes.
- Tirets cadratin et demi-cadratin : tous deux forcent l'UCS-2. Utilise un trait d'union ASCII avec espaces.
- Caractère ellipse : le caractère unique « ... » est UCS-2. Trois points ASCII sont GSM-7 et visuellement identiques.
- Tous les emojis : chaque emoji force UCS-2 et la plupart coûtent 2 de tes 70 caractères.
- Scripts non-latins : cyrillique, grec minuscule, arabe, hébreu, thaï, chinois, japonais, coréen.
- Lettres accentuées hors GSM-7 : Ş, Č, Ł et d'autres.
iMessage / RCS / WhatsApp : Quand les Limites ne S'appliquent Pas
- iMessage : limite souple autour de 20 000 caractères. Pas de GSM-7 / UCS-2.
- RCS : successeur du SMS. Pas de limite fixe (typiquement 8 000-20 000).
- WhatsApp : 65 536 caractères par message, pas de segmentation.
- Telegram, Signal, Messenger : tous quasi-illimités.
Comment Réduire le Coût SMS
- Utilise du pur ASCII. Retire guillemets typographiques, tirets fantaisistes et ellipse.
- Saute les emojis sauf s'ils méritent un clic.
- Garde le SMS promo sous 160 caractères.
- Raccourcis les liens. Une URL https avec UTM peut bouffer 70+ caractères.
- Compte avant d'envoyer. Utilise le Compteur de Caractères.