Compter les caractères : SMS, X, titres YouTube et emoji

Mis à jour :

« Combien de caractères fait ce texte ? » a plusieurs réponses, car chaque système compte autre chose : ce que l’on voit, les points de code derrière, ou les octets nécessaires pour l’envoyer. Une main qui salue 👋 fait un caractère à l’écran et deux pour JavaScript ; un SMS contenant une seule lettre accentuée accepte 70 caractères au lieu de 160. Ce guide explique les règles d’où viennent ces chiffres.

Ce qu’est un « caractère »

Ce que l’on voit comme un caractère, un graphème, peut regrouper plusieurs points de code Unicode, et chaque point de code une ou deux unités UTF-16. La propriété length de JavaScript compte les unités, donc 👋 a une longueur de 2. L’emoji famille 👨‍👩‍👧 est un graphème fait de cinq points de code (homme, liaison, femme, liaison, fille) et de huit unités. Même « café » peut compter quatre ou cinq points de code, l’accent étant stocké à part ; la plupart des systèmes le normalisent à quatre.

Un bon compteur compte les graphèmes, ce que voit le lecteur. Découper le texte en points de code ou utiliser Intl.Segmenter, comme l’explique MDN, y parvient ; length seul, non.

Compteur de caractères

SMS : 160, 70, 153 et 67

Un SMS transporte au plus 140 octets de texte. Avec l’alphabet GSM, 7 bits par caractère, cela fait 160 caractères ; dès qu’un caractère n’en fait pas partie, tout le message passe en UCS-2, 2 octets par caractère, et en contient 70. Quelques caractères GSM prennent deux places car ils exigent un échappement : € [ ] { } ^ ~ \ |.

Les textes plus longs partent en plusieurs parties, et chacune consacre 6 octets à un en-tête qui indique au téléphone comment les assembler, ce qui laisse 153 caractères GSM ou 67 caractères UCS-2 par partie.

MessageTient dans un SMSPar partie s’il est découpé
Uniquement des caractères GSM160153
Au moins un autre caractère (un emoji, ó, ã, ê)7067

Ainsi, 161 caractères GSM demandent 2 parties et 307 en demandent 3 ; avec un emoji, 71 caractères en demandent déjà 2. Les accents sont le piège habituel : à, è, é, ì, ò et ù font partie de l’alphabet GSM, mais â, ê, ô et ç minuscule non, si bien que « fête » fait passer le message à 70.

Limites sur X, YouTube et Google

OùLimiteComment on compte
Post sur X280Alphabets latin, grec, cyrillique, arabe et la plupart des autres 1 ; chinois, japonais et coréen 2 ; chaque emoji 2, même une famille ; chaque lien 23
Titre d’une vidéo YouTube100Caractères
Description YouTube5 000Caractères
Méta-description pour GoogleAucune limiteGoogle coupe l’extrait pour qu’il tienne à l’écran et en rédige souvent un lui-même à partir de la page

Sur X, un post en alphabet latin peut utiliser les 280 caractères, mais un post en japonais seulement 140, et un lien coûte toujours 23, quelle que soit sa longueur.

Pourquoi deux compteurs donnent des chiffres différents

Questions fréquentes

Pourquoi mon SMS est-il passé à 70 caractères ?

Parce qu’il contient un caractère absent de l’alphabet GSM : un emoji, des guillemets typographiques ou un accent comme celui de ê. Tout le message est alors envoyé en UCS-2, qui contient 70 caractères, ou 67 par partie.

Pourquoi € compte-t-il pour deux dans un SMS ?

Il figure dans la table d’extension GSM, atteinte par un caractère d’échappement : il occupe donc deux des 160 places. C’est pareil pour [ ] { } ^ ~ \ et |.

Les espaces comptent-ils ?

Dans un SMS, un post sur X et un titre YouTube, oui : une espace est un caractère comme un autre. Le compteur de caractères affiche le total avec et sans elles.

Quelle longueur pour une méta-description ?

Google ne fixe aucune limite, coupe l’extrait pour qu’il tienne à l’écran et en rédige souvent un lui-même à partir de la page. Placez les mots importants en premier pour qu’ils échappent à la coupe.

Pourquoi JavaScript indique-t-il 2 pour un seul emoji ?

Parce que length compte les unités UTF-16, et la plupart des emoji en occupent deux. Comptez plutôt les graphèmes, par exemple avec Intl.Segmenter, et 👋 vaut 1.

Références

  1. 3GPP TS 23.040 — Technical realization of the Short Message Service (SMS)
  2. 3GPP TS 23.038 — Alphabets and language-specific information
  3. X Developer Platform — Counting characters
  4. YouTube Help — Edit video settings
  5. Google Search Central — Control your snippets in search results
  6. MDN Web Docs — String: length

Guides associés