Skip to main content
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ácterPesoMáx. de caracteres
Latín, puntuación, símbolos comunes1280
Emojis2140 emojis
CJK (chino, japonés, coreano)2140 caracteres
Otro Unicode2 (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:
EmojiVisualizaciónConteo de caracteresUnicode
👾Un solo emoji2U+1F47E
🙋🏽Con tono de piel2🙋 + modificador 🏽
👨‍🎤Combinado con ZWJ2👨 + ZWJ + 🎤
👨‍👩‍👧‍👦Secuencia familiar24 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

ContenidoRegla de conteo
@menciones en respuestasLas @menciones autocompletadas al inicio de las respuestas no cuentan
Nuevas @mencionesLas @menciones que añadas manualmente cuentan normalmente
MediosLos medios adjuntos (vía clientes oficiales) cuentan como 0 caracteres
HashtagsCuentan 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é:
FormaBytesCaracteres
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
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.