Glosario

Por qué el límite de caracteres de Threads cuenta emojis como bytes UTF-8

Taras Shynkarenko
Taras Shynkarenko
Actualizado: 9 min de lectura
Por qué el límite de caracteres de Threads cuenta emojis como bytes UTF-8Por qué el límite de caracteres de Threads cuenta emojis como bytes UTF-8

TL;DR, Respuesta Rápida

9 min de lectura

Las publicaciones de texto en Threads están limitadas a 500 caracteres, y Meta cuenta cada emoji por su número de bytes UTF-8 en lugar de como un solo carácter. Una cara sonriente cuesta 4, una mano señalando con tono de piel cuesta 8 y un emoji de familia de cuatro personas cuesta 25. Por eso una publicación que tu contador marca como 475 caracteres puede ser rechazada por Threads en 517.

¿Cuál es el límite de caracteres de Threads?

Meta fija el límite de caracteres de Threads en 500 caracteres para las publicaciones de texto y cuenta cada emoji por su número de bytes UTF-8 en lugar de como un solo carácter. Ambas reglas están en la documentación de la API de Threads, en el apartado Single thread posts, dentro de una lista de dos puntos que Meta titula Limitations. Como referencia, Bluesky limita una publicación a 300 grafemas y Mastodon documenta 500 caracteres por defecto, así que la cifra en bruto no tiene nada de raro y la diferencia de Threads está en el método de conteo.

La cifra de 500 aparece en dos lugares de la documentación de Meta. La regla de los emojis aparece solo en uno de ellos. Quien lea la página de resumen y se detenga ahí se lleva la mitad de la especificación.

LímiteValor documentadoPágina de Meta
Longitud de una publicación de texto500 caracteresPosts, Overview
Conteo de emojisNúmero de bytes UTF-8Posts
Elementos de un carruselMínimo 2, máximo 20Posts, Overview
Enlaces por publicación5 o menosPosts
Longitud de una etiqueta de temaDe 1 a 50 caracteresPosts
Publicaciones publicadas250 por periodo móvil de 24 horasOverview
Respuestas1.000 por periodo móvil de 24 horasOverview
Eliminaciones100 por periodo móvil de 24 horasOverview
Búsquedas de ubicación500 por periodo móvil de 24 horasOverview

¿Por qué los contadores de caracteres no coinciden con Threads?

Los contadores no coinciden con Threads porque cuentan un emoji como un carácter y Threads lo cuenta como varios. La frase de Meta es lo bastante corta para citarla entera: "Emojis are counted as the number of UTF-8 bytes." La misma nota se repite en la fila del parámetro text del endpoint POST /{threads-user-id}/threads, redactada así: "For the post character limit, emojis are counted as the number of UTF-8 bytes."

Esa es toda la explicación que da Meta, y ahí es donde la documentación empieza a contradecirse. La expresión "number of UTF-8 bytes" es un hipervínculo, y apunta al paquete de npm grapheme-splitter. Un divisor de grafemas agrupa puntos de código en lo que un lector percibe como un solo carácter. No tiene nada que ver con longitudes en bytes. Es decir, la documentación te dice que cuentes bytes y luego enlaza una herramienta que cuenta la unidad contraria, sin una sola frase que conecte ambas.

La reconciliación queda de tu parte. Divide primero la cadena en grafemas, que es lo que hace el paquete enlazado, y luego cobra a cada grafema de emoji su longitud en bytes UTF-8 en vez de 1. Meta nunca lo explicita. Todo contador que se salta la segunda mitad devuelve una cifra demasiado baja, y todo contador que aplica la regla de bytes a la cadena entera devuelve una cifra demasiado alta para textos acentuados o no latinos.

Una persona escribe en el teléfono mientras elige emojis para una publicación.

¿Cuántos caracteres cuesta un emoji en Threads?

Un emoji cuesta entre 3 y 25 caracteres del límite de caracteres de Threads, según cuántos puntos de código lo compongan. Los emojis fuera del Basic Multilingual Plane ocupan 4 bytes cada uno. El selector de variación U+FE0F, que convierte un símbolo en un emoji a color, ocupa 3. El zero width joiner U+200D, que suelda las piezas entre sí, ocupa 3. Los modificadores de tono de piel ocupan 4.

EmojiPuntos de códigoLos contadores dicenThreads cuenta
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

El emoji de familia es el que arruina los calendarios. Se lee como un solo glifo, está en el mismo selector de emojis que el resto y se come el 5 por ciento de la publicación él solo. Una bandera arcoíris cuesta más que una palabra de catorce letras.

Una publicación que pasa tu contador y falla en Threads

Toma 470 caracteres de texto plano y ciérralos con cinco emojis: 🎉 ❤️ 👉🏽 🧵 👩‍👩‍👧‍👦. Un contador de grafemas marca 475, cómodamente dentro del tope, así que la publicación parece segura.

SegmentoContadorThreads
Cuerpo del texto470470
🎉 U+1F38914
❤️ U+2764 U+FE0F16
👉🏽 U+1F449 U+1F3FD18
🧵 U+1F9F514
👩‍👩‍👧‍👦125
Total475517

Threads ve 517 y rechaza la publicación. La diferencia es de 42, y 21 vienen de un único emoji. Cambia la familia de cuatro personas por 👪 U+1F46A, que es un punto de código y 4 bytes, y la misma publicación baja a 496 y se publica. La redacción no cambió en nada.

Por esto mismo tres contadores distintos dan tres respuestas distintas para la misma cadena. El String.prototype.length de JavaScript devuelve 491 para esa publicación, porque cuenta unidades de código UTF-16. Array.from(post).length devuelve 483, porque cuenta puntos de código. Un divisor de grafemas devuelve 475. Threads quiere 517, y ninguno de los tres métodos integrados lo produce.

Un programador lee código en un monitor, el tipo de lógica de conteo que exige una validación de longitud.

¿Cómo se cuenta una publicación de Threads como lo hace Threads?

Cuenta una publicación de Threads dividiéndola en grafemas, cobrando 1 por cada grafema ordinario y la longitud en bytes UTF-8 por cada grafema de emoji. Intl.Segmenter se encarga de la división en el navegador y en Node sin ninguna dependencia.

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

No recurras a Buffer.byteLength(text, 'utf8') como atajo. Da la casualidad de que devuelve 517 en el ejemplo anterior, pero solo porque el cuerpo del texto es ASCII puro. Pásalo por "café" y devuelve 5 donde un lector cuenta 4. Pásalo por un texto en japonés y triplica la cifra, porque cada kana ocupa 3 bytes. Meta enuncia la regla de bytes para los emojis y para nada más.

Lo que abre el hueco que Meta no ha rellenado. La documentación nunca define qué es un carácter para los otros 500 espacios. No hay una frase que diga si "こんにちは" cuenta como 5 o como 15, si un acento combinante cuenta como 1 o como 2, o si un carácter no ASCII corriente se mide en puntos de código, grafemas o bytes. Si publicas en un idioma que no es ASCII, la única postura honesta es que el límite queda sin documentar en los márgenes, así que deja margen en vez de apuntar a exactamente 500.

AdaptlyPost
AdaptlyPost

Prueba gratis de 7 días

Analíticas multiplataforma

Bandeja Social

Asistente con IA

Cuatro formas de contar la misma publicación
String.prototype.length491
Array.from(post).length483
Divisor de grafemas475
Conteo de Threads517
Longitud de cadena, puntos de código, grafemas y el conteo propio de Threads para la misma publicación de ejemplo.

¿Qué más rechaza una publicación de Threads además de la longitud?

Los enlaces rechazan una publicación antes que la longitud. Threads restringe una publicación a 5 enlaces o menos, y desde el 22 de diciembre de 2025 una publicación que lleve más falla en el paso de creación del contenedor, POST /{threads-user-id}/threads, con el código de error THREADS_API__LINK_LIMIT_EXCEEDED. Meta cuenta URL únicas, así que un link_attachment que repite una URL ya presente en text cuenta una vez, mientras que un link_attachment que apunta a un destino nuevo suma uno al recuento.

Las etiquetas de tema tienen su propia regla. Una etiqueta debe medir de 1 a 50 caracteres, no puede contener un punto ni un ampersand, y solo se usa la primera etiqueta válida de una publicación. Las etiquetas dentro del texto además terminan en espacios, arrobas, signos de exclamación, signos de interrogación, comas, puntos y comas y dos puntos, lo que significa que una etiqueta escrita a mitad de frase suele terminar antes de lo que el autor pretendía.

Los carruseles están limitados a 20 elementos con un mínimo de 2, y Meta es explícita: "Publishing a carousel counts as a single post." Se refiere a la cuota de 250 publicaciones. Puedes leer tu propia cuota restante en GET /{threads-user-id}/threads_publishing_limit, que devuelve quota_usage junto a un objeto config con un quota_total de 250 y un quota_duration de 86400 segundos.

Lo que Meta no publica es un error con nombre para pasarse de 500. Hay un código documentado para demasiados enlaces y ninguno para demasiado texto. Como no puedes capturar una cadena de error concreta, la comprobación tiene que ocurrir en tu propio código antes de que salga la petición.

Dónde encaja adaptlypost

adaptlypost publica en Threads a través de la API, así que la misma regla de 500 caracteres y la misma aritmética de emojis se aplican a una publicación programada y a una escrita a mano. Los límites de plataforma son de Threads. Lo que cambia un programador es cuándo te enteras de ellos, porque un borrador redactado en un calendario de contenidos se comprueba mucho antes de su hora de envío y no en el momento en que falla.

El problema del conteo se agudiza cuando un mismo borrador va a varias redes a la vez, que es el caso normal en la publicación multiplataforma. El mismo emoji cuesta una cantidad distinta en cada red, así que un texto ajustado a una no es automáticamente seguro en otra. Si escribes tus textos con el redactor de captions con IA, trata los emojis como presupuesto y no como decoración, y deja corto el remate final. Para la programación en concreto, mira la herramienta de programación de Threads, y para lo que hicieron esas publicaciones después, analíticas de Threads.

Preguntas frecuentes

¿El límite de caracteres de Threads es de 500 caracteres?

Sí. Meta documenta el límite de caracteres de Threads como 500 caracteres para las publicaciones de texto, indicado en la lista Limitations de la página Threads Posts y repetido en la lista Other Limitations de la página Threads Overview. La cifra no ha cambiado en la documentación desde su actualización del 14 de abril de 2026.

¿Por qué rechazan mi publicación de Threads si el contador dice que estoy por debajo de 500?

Tu contador cobra 1 por emoji y Threads cobra la longitud en bytes UTF-8 del emoji. Cinco emojis pueden sumar 40 o más al recuento real, así que una publicación que un contador marca como 475 caracteres puede llegar a 517 en Threads. Los emojis compuestos con zero width joiners son los peores infractores, con hasta 25 cada uno.

¿Cuántos caracteres usa un emoji en Threads?

Entre 3 y 25. Un símbolo como ✨ cuesta 3, un emoji estándar como 😀 cuesta 4, un corazón con selector de variación cuesta 6, una mano con tono de piel cuesta 8 y el emoji de familia de cuatro personas 👩‍👩‍👧‍👦 cuesta 25. El coste es la suma de las longitudes en bytes UTF-8 de todos los puntos de código del emoji.

¿El límite de caracteres de Threads se aplica a las respuestas y a los pies de carrusel?

Meta documenta el límite de 500 caracteres para las publicaciones de texto y aplica la regla de bytes de emoji al parámetro text tanto en publicaciones sueltas como en contenedores de carrusel. Las respuestas tienen su propia cuota separada de 1.000 por periodo móvil de 24 horas, que es un recuento de respuestas y no un límite de longitud.

¿Qué error devuelve Threads cuando una publicación es demasiado larga?

Meta no publica un código de error para superar los 500 caracteres. El único error de publicación documentado de este tipo es THREADS_API__LINK_LIMIT_EXCEEDED, devuelto por POST /{threads-user-id}/threads cuando una publicación lleva más de 5 enlaces. Valida la longitud en tu propio código antes de llamar al endpoint.

¿Cuántas publicaciones puede publicar un perfil de Threads al día?

  1. Meta limita un perfil a 250 publicaciones publicadas por API dentro de un periodo móvil de 24 horas, y un carrusel de hasta 20 imágenes o vídeos cuenta como una publicación contra ese total. Consulta GET /{threads-user-id}/threads_publishing_limit para leer quota_usage frente a un quota_total de 250.

¿Cómo puedo comprobar mi cuota restante de publicaciones en Threads antes de publicar?

Llama a GET /{threads-user-id}/threads_publishing_limit y lee quota_usage junto al objeto config devuelto. Meta fija ahí un quota_total de 250 y una quota_duration de 86400 segundos, que coincide con la ventana móvil de 24 horas para publicaciones. Consultar este endpoint antes de enviar un lote de publicaciones te dice cuánta cuota del día ya se ha usado.

¿Qué pasa si una publicación de Threads tiene más de 5 enlaces?

La publicación falla en el paso de creación del contenedor de medios, POST /{threads-user-id}/threads, con el código de error THREADS_API__LINK_LIMIT_EXCEEDED. Esta regla rige desde el 22 de diciembre de 2025, y Meta cuenta URLs únicas en lugar de cada mención de enlace, así que un link_attachment que repite una URL ya presente en el texto cuenta una sola vez. No existe un error equivalente y específico para superar el límite de 500 caracteres.

¿Cuánto puede medir una etiqueta de tema en Threads?

Una etiqueta de tema en Threads debe tener entre 1 y 50 caracteres y no puede contener un punto ni un signo de ampersand. Solo se usa la primera etiqueta válida de la publicación, y una etiqueta escrita dentro del texto termina antes de tiempo si encuentra un espacio, una arroba o un signo de puntuación como el de exclamación, la coma o los dos puntos.

¿Cuántas imágenes o vídeos admite un carrusel de Threads?

Un carrusel de Threads necesita al menos 2 elementos y admite un máximo de 20. Meta cuenta todo el carrusel como una sola publicación frente a la cuota diaria de 250, sin importar cuántos elementos contenga.

AdaptlyPost
AdaptlyPost

Prueba gratis de 7 días

Analíticas multiplataforma

Bandeja Social

Asistente con IA

¿Te resultó útil este artículo?

¡Cuéntanos qué te parece!

Vernos más en Google

Un clic marca AdaptlyPost como fuente preferida y nuestros artículos aparecen más arriba en tus Noticias destacadas, el modo IA y los resúmenes con IA.

Antes de irte...

AdaptlyPost

AdaptlyPost

Programa tu contenido en todas las plataformas

Gestiona todas tus cuentas de redes sociales en un solo lugar con AdaptlyPost.

Analíticas multiplataforma

Bandeja Social

Asistente con IA

Términos relacionados del glosario

Artículos Relacionados