Los Posts en X pueden contener hasta 280 caracteres . Sin embargo, no todos los caracteres cuentan igual: los emojis, las URLs y ciertos rangos de Unicode tienen reglas de conteo especiales.
Ponderación de caracteres
X usa un sistema de conteo de caracteres ponderado. La mayoría de los caracteres cuentan como 1, pero algunos cuentan como 2:
Tipo de carácter Peso Máx. de caracteres Latín, puntuación, símbolos comunes 1 280 Emojis 2 140 emojis CJK (chino, japonés, coreano) 2 140 caracteres Otro Unicode 2 (por defecto) Varía
Usa la biblioteca de código abierto twitter-text para contar los caracteres con precisión en tu app.
Conteo de emojis
Todos los emojis cuentan como 2 caracteres , sin importar su complejidad:
Emoji Visualización Conteo de caracteres Unicode 👾 Un solo emoji 2 U+1F47E 🙋🏽 Con tono de piel 2 🙋 + modificador 🏽 👨🎤 Combinado con ZWJ 2 👨 + ZWJ + 🎤 👨👩👧👦 Secuencia familiar 2 4 emojis + 3 ZWJs
Los uniones de ancho cero (ZWJ) combinan emojis visualmente, pero no se suman al conteo.
Manejo de URLs
Todas las URLs se envuelven con el acortador t.co y cuentan como 23 caracteres , independientemente de la longitud original:
https://example.com → 23 caracteres
https://example.com/very/long/path → 23 caracteres
Esto se aplica a cualquier URL válida detectada en el texto del post.
Casos especiales
Contenido Regla de conteo @menciones en respuestas Las @menciones autocompletadas al inicio de las respuestas no cuentan Nuevas @menciones Las @menciones que añadas manualmente cuentan normalmente Medios Los medios adjuntos (vía clientes oficiales) cuentan como 0 caracteres Hashtags Cuentan normalmente (# + texto de la etiqueta)
Codificación de texto
La X API requiere codificación UTF-8 . La longitud de los caracteres se calcula usando la Forma de Normalización Unicode C (NFC).
Ejemplo con café:
Forma Bytes Caracteres NFC (compuesta) c a f é4 NFD (descompuesta) c a f e ́5
X normaliza a NFC, así que ambas se codifican como 4 caracteres.
Implementación
Usa la biblioteca oficial twitter-text para contar caracteres con precisión:
import { parseTweet } from 'twitter-text' ;
const result = parseTweet ( 'Hello, world! 👋' );
console . log ( result . weightedLength ); // 16
console . log ( result . valid ); // true
from twitter_text import parse_tweet
result = parse_tweet( 'Hello, world! 👋' )
print (result.weightedLength) # 16
print (result.valid) # True
La biblioteca maneja todos los casos límite, incluidas las secuencias de emojis, la detección de URLs y la normalización Unicode.
Recursos
Biblioteca twitter-text Biblioteca oficial de código abierto para el análisis de texto.
Archivo de configuración Definiciones de pesos de caracteres y rangos Unicode.