Compteur de caractères pour réseaux sociaux (style Twitter/X)

Un outil de comptage de caractères qui suit la règle de comptage pondéré de X (anciennement Twitter). Les caractères pleine largeur comptent pour 2, les caractères demi-largeur pour 1, et l'outil affiche en temps réel le nombre de caractères restants avant la limite de 280.

Astuces

  • Le comptage de caractères de X ne correspond pas au nombre "visuel" de caractères : il applique une règle pondérée qui compte les caractères CJC (chinois, japonais, coréen) et les symboles pleine largeur pour 2, d'où un écart possible avec un simple comptage.
  • Les mêmes 30 caractères vont bien plus loin dans un message en anglais que dans un message en japonais : 30 caractères japonais comptent pour 60 caractères pondérés, ce qui rapproche deux fois plus vite de la limite de 280.
  • Une URL compte toujours pour 23 caractères (la longueur du lien raccourci t.co), quelle que soit sa longueur réelle ; utilisez donc cet outil comme repère pour du texte simple et vérifiez les publications contenant une URL directement dans l'éditeur réel.
  • Chaque emoji correspond à un seul point de code, mais la plupart n'entrent pas dans les plages "larges" de la règle pondérée et ne comptent donc que pour 1 caractère malgré leur forte présence visuelle.
  • Pour vérifier le nombre d'octets selon l'encodage, essayez l'outil complémentaire « Compteur d'octets » ; pour détecter le jeu de caractères, essayez « Détecteur d'encodage ».

Questions fréquentes

La règle de comptage de X compte les caractères chinois, japonais et coréens (CJC), ainsi que les symboles pleine largeur, pour 2 caractères pondérés chacun. Ainsi, alors qu'on peut saisir près de 280 caractères en anglais, un texte purement en japonais atteint sa limite effective autour de 140 caractères. Cet ajustement existe parce que la quantité d'information portée par caractère varie fortement d'une langue à l'autre.

Elle provient de « twitter-text », l'algorithme open source de comptage de caractères publié par X (anciennement Twitter). Cet outil applique la même règle documentée publiquement, en comptant 1 ou 2 caractères selon les plages de points de code Unicode concernées.

La plupart des emojis sont représentés par un seul point de code du plan supplémentaire Unicode (une paire de substitution) et, comme ils n'entrent pas dans les plages CJC/pleine largeur, ils ne comptent que pour 1 caractère selon la règle pondérée. Cependant, les emojis composés de plusieurs points de code assemblés (comme les emojis de famille) peuvent en interne contenir plusieurs points de code, et donc compter pour plus d'un caractère même s'ils apparaissent comme un seul emoji.

L'outil complémentaire « Compteur d'octets » mesure le nombre physique d'octets nécessaires pour stocker ou transmettre une chaîne selon des encodages comme l'UTF-8 ou le Shift_JIS. Cet outil-ci calcule plutôt le « comptage pondéré » utilisé pour évaluer les limites de publication sur les réseaux sociaux : l'objectif et la méthode de calcul diffèrent donc tous les deux.

Avant 2017, la limite était de 140 caractères pour tout le monde. La règle comptant les langues CJC pour 2 caractères existait déjà à l'époque. Lorsque la limite a doublé pour atteindre 280 caractères pour des langues comme l'anglais, les utilisateurs de langues CJC ont pu publier à peu près la même quantité de texte que les utilisateurs anglophones.
ツールくん

Anecdote — Pourquoi X compte les caractères avec des « poids »

Lorsque Twitter (le prédécesseur de X) a introduit pour la première fois sa limite de 140 caractères, les utilisateurs anglophones se plaignaient souvent que 140 caractères, c'était bien trop court. Une seule lettre de l'alphabet porte beaucoup moins d'information qu'un seul caractère chinois, si bien que les mêmes 140 caractères qui permettaient de décrire toute une scène d'un récit en japonais ne laissaient place qu'à 20 à 30 mots en anglais. Pour corriger ce déséquilibre, Twitter a doublé en 2017 la limite à 280 caractères pour les langues « à un octet » comme l'anglais, tout en maintenant les langues CJC (chinois, japonais, coréen) à l'équivalent de 140 caractères (280 caractères pondérés), ajustant ainsi la différence de densité d'information entre les langues.

Cette idée de « comptage pondéré des caractères » est en réalité antérieure à Twitter et existe depuis longtemps dans le monde des SMS. Un SMS encodé en GSM standard autorise jusqu'à 160 caractères, mais dès qu'il inclut ne serait-ce qu'un seul emoji ou caractère japonais absent du jeu de caractères GSM 7 bits, l'encodage bascule vers l'UCS-2 et la limite chute brutalement à 70 caractères. Ce phénomène où « l'utilisation d'un caractère d'une langue donnée réduit de moitié le nombre de caractères disponibles » illustre de façon fascinante le lien entre l'encodage interne du texte et l'expérience utilisateur.

La règle pondérée s'applique aussi aux emojis : la plupart ne comptent que pour 1 caractère, mais les emojis composés combinant teinte de peau ou genre via un caractère de liaison invisible (Zero Width Joiner) sont construits en interne à partir de plusieurs points de code Unicode, si bien qu'un seul emoji visible peut parfois compter pour plusieurs caractères. Garder à l'esprit cet écart entre « ce que l'on voit » et « ce que le système compte » lors d'une publication sur les réseaux sociaux permet d'éviter une mauvaise surprise de dépassement.

→ Voir toutes les anecdotes