Glossaire

Pourquoi la limite de caractères de Threads compte les emojis en octets UTF-8

Taras Shynkarenko
Taras Shynkarenko
Mis à jour : 9 min de lecture
Pourquoi la limite de caractères de Threads compte les emojis en octets UTF-8Pourquoi la limite de caractères de Threads compte les emojis en octets UTF-8

TL;DR, Réponse Rapide

9 min de lecture

Les publications texte sur Threads sont plafonnées à 500 caractères, et Meta compte chaque emoji comme son nombre d'octets UTF-8 plutôt que comme un seul caractère. Un visage souriant coûte 4, une main qui pointe avec une teinte de peau coûte 8, et un emoji famille de quatre personnes coûte 25. C'est pourquoi une publication que votre compteur annonce à 475 caractères peut être refusée par Threads à 517.

Quelle est la limite de caractères de Threads ?

Meta fixe la limite de caractères de Threads à 500 caractères pour les publications texte, et compte chaque emoji comme son nombre d'octets UTF-8 plutôt que comme un caractère unique. Les deux règles figurent dans la documentation de l'API Threads, sous Single thread posts, dans une liste de deux puces que Meta intitule Limitations. Pour situer l'échelle, Bluesky plafonne une publication à 300 graphèmes et Mastodon documente 500 caractères par défaut : le chiffre brut n'a donc rien de remarquable, et c'est la méthode de comptage qui distingue Threads.

Le chiffre de 500 apparaît à deux endroits dans la documentation de Meta. La règle des emojis n'apparaît que dans l'un des deux. Qui lit la page de synthèse et s'arrête là repart avec la moitié de la spécification.

LimiteValeur documentéePage de Meta
Longueur d'une publication texte500 caractèresPosts, Overview
Comptage des emojisNombre d'octets UTF-8Posts
Éléments d'un carrouselMinimum 2, maximum 20Posts, Overview
Liens par publication5 ou moinsPosts
Longueur d'un tag de sujetDe 1 à 50 caractèresPosts
Publications publiées250 par période glissante de 24 heuresOverview
Réponses1 000 par période glissante de 24 heuresOverview
Suppressions100 par période glissante de 24 heuresOverview
Recherches de lieu500 par période glissante de 24 heuresOverview

Pourquoi les compteurs de caractères sont-ils en désaccord avec Threads ?

Les compteurs sont en désaccord avec Threads parce qu'ils comptent un emoji comme un caractère alors que Threads en compte plusieurs. La phrase de Meta est assez courte pour être citée en entier : « Emojis are counted as the number of UTF-8 bytes. » La même note est répétée sur la ligne du paramètre text du point de terminaison POST /{threads-user-id}/threads, formulée ainsi : « For the post character limit, emojis are counted as the number of UTF-8 bytes. »

C'est toute l'explication que donne Meta, et c'est là que la documentation commence à se contredire. La formule « number of UTF-8 bytes » est un lien hypertexte, et il pointe vers le paquet npm grapheme-splitter. Un découpeur de graphèmes regroupe des points de code en ce qu'un lecteur perçoit comme un seul caractère. Il n'a rien à voir avec des longueurs en octets. La documentation vous dit donc de compter des octets, puis renvoie vers un outil qui compte l'unité inverse, sans une phrase pour relier les deux.

La réconciliation est laissée à votre charge. Découpez d'abord la chaîne en graphèmes, ce que fait le paquet lié, puis facturez à chaque graphème emoji sa longueur en octets UTF-8 au lieu de 1. Meta ne l'énonce jamais. Tout compteur qui saute la seconde moitié annonce un nombre trop faible, et tout compteur qui applique la règle des octets à la chaîne entière annonce un nombre trop élevé pour un texte accentué ou non latin.

Une personne tape sur son téléphone en choisissant des emoji pour une publication.

Combien de caractères coûte un emoji sur Threads ?

Un emoji coûte entre 3 et 25 caractères sur la limite de caractères de Threads, selon le nombre de points de code qui le composent. Les emojis hors du Basic Multilingual Plane occupent 4 octets chacun. Le sélecteur de variante U+FE0F, qui transforme un symbole en emoji couleur, en occupe 3. Le zero width joiner U+200D, qui soude les morceaux entre eux, en occupe 3. Les modificateurs de teinte de peau en occupent 4.

EmojiPoints de codeLes compteurs disentThreads compte
U+272813
U+270513
😀U+1F60014
🔥U+1F52514
❤️U+2764 U+FE0F16
👉🏽U+1F449 U+1F3FD18
🏳️‍🌈U+1F3F3 U+FE0F U+200D U+1F308114
👩‍👩‍👧‍👦U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466125

L'emoji famille est celui qui ruine les plannings. Il se lit comme un seul glyphe, il se trouve dans le même sélecteur d'emojis que les autres, et il dévore 5 pour cent de la publication à lui seul. Un drapeau arc-en-ciel coûte plus cher qu'un mot de quatorze lettres.

Une publication qui passe votre compteur et échoue sur Threads

Prenez 470 caractères de texte simple et terminez par cinq emojis : 🎉 ❤️ 👉🏽 🧵 👩‍👩‍👧‍👦. Un compteur de graphèmes annonce 475, confortablement sous le plafond, la publication semble donc sûre.

SegmentCompteurThreads
Corps du texte470470
🎉 U+1F38914
❤️ U+2764 U+FE0F16
👉🏽 U+1F449 U+1F3FD18
🧵 U+1F9F514
👩‍👩‍👧‍👦125
Total475517

Threads voit 517 et refuse la publication. L'écart est de 42, et 21 viennent d'un seul emoji. Remplacez la famille de quatre personnes par 👪 U+1F46A, qui est un point de code et 4 octets, et la même publication retombe à 496 et part. Rien n'a changé dans la formulation.

C'est aussi pourquoi trois compteurs différents donnent trois réponses différentes pour la même chaîne. Le String.prototype.length de JavaScript annonce 491 pour cette publication, parce qu'il compte des unités de code UTF-16. Array.from(post).length annonce 483, parce qu'il compte des points de code. Un découpeur de graphèmes annonce 475. Threads veut 517, et aucune des trois méthodes intégrées ne le produit.

Un développeur lit du code sur un écran, le genre de logique de comptage qu'exige une vérification de longueur.

Comment compter une publication Threads comme Threads le fait ?

Comptez une publication Threads en la découpant en graphèmes, en facturant 1 pour chaque graphème ordinaire et la longueur en octets UTF-8 pour chaque graphème emoji. Intl.Segmenter gère le découpage dans le navigateur comme dans Node, sans dépendance.

const segmenter = new Intl.Segmenter('en', { granularity: 'grapheme' });
const encoder = new TextEncoder();
const EMOJI = /\p{Extended_Pictographic}/u;
 
function threadsLength(text) {
  let total = 0;
  for (const { segment } of segmenter.segment(text)) {
    total += EMOJI.test(segment) ? encoder.encode(segment).length : 1;
  }
  return total;
}
 
threadsLength(post); // 517

N'utilisez pas Buffer.byteLength(text, 'utf8') comme raccourci. Il renvoie bien 517 pour l'exemple ci-dessus, mais uniquement parce que le corps du texte est en ASCII pur. Passez-lui « café » et il renvoie 5 là où un lecteur en compte 4. Passez-lui du texte japonais et il triple le compte, parce que chaque kana fait 3 octets. Meta énonce la règle des octets pour les emojis et pour rien d'autre.

Reste le trou que Meta n'a pas comblé. La documentation ne définit jamais ce qu'est un caractère pour les 500 places restantes. Aucune phrase ne dit si « こんにちは » compte pour 5 ou pour 15, si un accent combinant compte pour 1 ou pour 2, ni si un caractère non ASCII ordinaire se mesure en points de code, en graphèmes ou en octets. Si vous publiez dans une langue qui n'est pas de l'ASCII, la seule position honnête est que la limite reste non documentée à la marge : gardez de la marge plutôt que de viser exactement 500.

AdaptlyPost
AdaptlyPost

Essai gratuit de 7 jours

Analyses multiplateforme

Boîte sociale

Assistant IA

Quatre façons de compter la même publication
String.prototype.length491
Array.from(post).length483
Découpeur de graphèmes475
Comptage Threads517
Longueur de chaîne, points de code, graphèmes et le comptage propre de Threads pour la même publication d'exemple.

Qu'est-ce qui fait échouer une publication Threads en dehors de la longueur ?

Les liens font échouer une publication avant la longueur. Threads restreint une publication à 5 liens ou moins, et depuis le 22 décembre 2025 une publication qui en porte davantage échoue à l'étape de création du conteneur média, POST /{threads-user-id}/threads, avec le code d'erreur THREADS_API__LINK_LIMIT_EXCEEDED. Meta compte les URL uniques : un link_attachment qui répète une URL déjà présente dans text compte une fois, tandis qu'un link_attachment pointant vers une nouvelle destination ajoute une unité au total.

Les tags de sujet ont leur propre règle. Un tag doit faire de 1 à 50 caractères, ne peut contenir ni point ni esperluette, et seul le premier tag valide d'une publication est retenu. Les tags écrits dans le texte s'arrêtent aussi aux espaces, arobases, points d'exclamation, points d'interrogation, virgules, points-virgules et deux-points, ce qui fait qu'un tag écrit en milieu de phrase se termine souvent plus tôt que l'auteur ne le voulait.

Les carrousels sont plafonnés à 20 éléments avec un minimum de 2, et Meta est explicite : « Publishing a carousel counts as a single post. » Cela vise le quota de 250 publications. Vous pouvez lire votre quota restant avec GET /{threads-user-id}/threads_publishing_limit, qui renvoie quota_usage aux côtés d'un objet config contenant un quota_total de 250 et un quota_duration de 86400 secondes.

Ce que Meta ne publie pas, c'est une erreur nommée pour le dépassement de 500. Il existe un code documenté pour trop de liens, aucun pour trop de texte. Puisque vous ne pouvez pas intercepter une chaîne d'erreur précise, le contrôle doit avoir lieu dans votre propre code avant l'envoi de la requête.

Où se situe adaptlypost

adaptlypost publie sur Threads via l'API, donc la même règle de 500 caractères et la même arithmétique des emojis s'appliquent à une publication programmée comme à une publication tapée à la main. Les limites de plateforme appartiennent à Threads. Ce qu'un outil de programmation change, c'est le moment où vous les découvrez, parce qu'un brouillon rédigé dans un calendrier de contenu est vérifié bien avant son heure d'envoi, et non à l'instant où il échoue.

Le problème du comptage se durcit dès qu'un même brouillon part vers plusieurs réseaux à la fois, ce qui est le cas normal en publication multiplateforme. Le même emoji coûte un montant différent sur chaque réseau : une légende calibrée pour l'un n'est donc pas automatiquement sûre sur l'autre. Si vous rédigez vos légendes avec le générateur de légendes IA, traitez les emojis comme un budget plutôt que comme une décoration et gardez la touche finale courte. Pour la programmation elle-même, voyez l'outil de programmation Threads, et pour ce que ces publications ont donné ensuite, les statistiques Threads.

Questions fréquentes

La limite de caractères de Threads est-elle de 500 caractères ?

Oui. Meta documente la limite de caractères de Threads à 500 caractères pour les publications texte, indiquée dans la liste Limitations de la page Threads Posts et répétée dans la liste Other Limitations de la page Threads Overview. Le chiffre n'a pas changé dans la documentation depuis sa mise à jour du 14 avril 2026.

Pourquoi ma publication Threads est-elle rejetée alors que le compteur indique moins de 500 ?

Votre compteur facture 1 par emoji et Threads facture la longueur en octets UTF-8 de l'emoji. Cinq emojis peuvent ajouter 40 ou plus au compte réel, donc une publication qu'un compteur annonce à 475 caractères peut atteindre 517 sur Threads. Les emojis composés construits avec des zero width joiners sont les pires, jusqu'à 25 chacun.

Combien de caractères un emoji consomme-t-il sur Threads ?

Entre 3 et 25. Un symbole comme ✨ coûte 3, un emoji standard comme 😀 coûte 4, un cœur avec sélecteur de variante coûte 6, une main avec teinte de peau coûte 8, et l'emoji famille de quatre personnes 👩‍👩‍👧‍👦 coûte 25. Le coût est la somme des longueurs en octets UTF-8 de chaque point de code de l'emoji.

La limite de caractères de Threads s'applique-t-elle aux réponses et aux légendes de carrousel ?

Meta documente la limite de 500 caractères pour les publications texte et applique la règle des octets pour les emojis au paramètre text, aussi bien sur les publications simples que sur les conteneurs de carrousel. Les réponses ont leur propre quota distinct de 1 000 par période glissante de 24 heures, qui compte des réponses et non une longueur.

Quelle erreur Threads renvoie-t-il quand une publication est trop longue ?

Meta ne publie pas de code d'erreur pour le dépassement de 500 caractères. La seule erreur de publication documentée de ce type est THREADS_API__LINK_LIMIT_EXCEEDED, renvoyée par POST /{threads-user-id}/threads quand une publication porte plus de 5 liens. Validez la longueur dans votre propre code avant d'appeler le point de terminaison.

Combien de publications un profil Threads peut-il publier par jour ?

  1. Meta limite un profil à 250 publications publiées via l'API sur une période glissante de 24 heures, et un carrousel d'au maximum 20 images ou vidéos compte pour une seule publication dans ce total. Interrogez GET /{threads-user-id}/threads_publishing_limit pour lire quota_usage face à un quota_total de 250.

Comment vérifier le quota de publication Threads restant avant de publier ?

Appelez GET /{threads-user-id}/threads_publishing_limit et lisez quota_usage face à l'objet config renvoyé. Meta y fixe un quota_total de 250 et une quota_duration de 86400 secondes, ce qui correspond à la fenêtre glissante de 24 heures pour les publications. Consulter cet endpoint avant d'envoyer un lot de publications indique la part du quota quotidien déjà consommée.

Que se passe-t-il si une publication Threads contient plus de 5 liens ?

La publication échoue dès l'étape de création du conteneur média, POST /{threads-user-id}/threads, avec le code d'erreur THREADS_API__LINK_LIMIT_EXCEEDED. Cette règle s'applique depuis le 22 décembre 2025, et Meta compte les URL uniques plutôt que chaque mention de lien, donc un link_attachment qui répète une URL déjà présente dans le texte ne compte qu'une fois. Il n'existe pas d'erreur équivalente et nommée pour un dépassement de la limite de 500 caractères.

Quelle longueur peut avoir un tag de sujet sur Threads ?

Un tag de sujet Threads doit compter entre 1 et 50 caractères et ne peut contenir ni point ni esperluette. Seul le premier tag valide d'une publication est retenu, et un tag écrit dans le texte s'arrête prématurément dès qu'il rencontre une espace, un arobase ou une ponctuation comme le point d'exclamation, la virgule ou les deux-points.

Combien d'images ou de vidéos un carrousel Threads peut-il contenir ?

Un carrousel Threads nécessite au moins 2 éléments et en autorise 20 au maximum. Meta compte l'ensemble du carrousel comme une seule publication face au quota quotidien de 250, quel que soit le nombre d'éléments qu'il contient.

AdaptlyPost
AdaptlyPost

Essai gratuit de 7 jours

Analyses multiplateforme

Boîte sociale

Assistant IA

Cet article vous a-t-il été utile ?

Dites-nous ce que vous en pensez !

Nous voir plus souvent sur Google

Un clic définit AdaptlyPost comme source préférée. Nos articles remontent alors dans vos À la une, en mode IA et dans les aperçus IA.

Avant de partir...

AdaptlyPost

AdaptlyPost

Planifiez vos contenus sur toutes les plateformes

Gérez tous vos comptes de réseaux sociaux en un seul endroit avec AdaptlyPost.

Analyses multiplateforme

Boîte sociale

Assistant IA

Termes connexes du glossaire

Articles Connexes