Skip to content

Contador de caracteres

Última verificación mayo 2026 — corre en tu navegador
0
Con espacios
0
Sin espacios
Twitter / X 0 / 280
SMS 0 / 160

Contador de caracteres — Contar caracteres, letras y palabras online

Escribe o pega cualquier texto y el contador muestra dos números — caracteres totales incluyendo espacios y un conteo separado sin espacios — más dos barras de progreso coloreadas para el límite de 280 caracteres de Twitter/X y el límite SMS de 160 (160 por el alfabeto GSM 7-bit original; los SMS por encima se dividen en multipart SMS, cada parte facturada por separado). El detalle crucial: este contador usa conteo real de code points Unicode vía el operador spread, no el ingenuo `string.length` que devuelve unidades de código UTF-16. Eso significa que "😀" cuenta como 1, no 2; "日本語" cuenta como 3; y la mayoría de emoji de bandera (que son pares de regional indicator code points) cuentan como 2 — coincidiendo con cómo Twitter y la GSM Specification cuentan realmente para facturación y límites.

Sobre esta herramienta

El `string.length` de JavaScript devuelve el conteo de unidades de código UTF-16, lo cual es incorrecto para cualquier carácter fuera del Basic Multilingual Plane — emoji, muchos caracteres CJK, símbolos matemáticos, escrituras antiguas. Esta página usa `[...input].length`, que itera por code point (el operador spread sobre strings hace iteración consciente de Unicode desde ES2015), dando el mismo número que un lector humano esperaría. El conteo sin espacios usa la misma iteración de code points tras un strip de regex `\s`. La barra de Twitter/X llena hacia 280 y se vuelve roja al desbordar — Twitter realmente cuenta "caracteres ponderados" donde la mayoría de ideogramas CJK cuentan como 2, pero el titular de 280 caracteres es el que importa a la mayoría de usuarios. La barra de SMS llena hacia 160 y se vuelve roja al desbordar — ese 160 es el límite del alfabeto GSM 7-bit; enviar caracteres fuera de él (la mayoría del latín acentuado, todos los emoji, todo CJK) dispara codificación UCS-2 que baja el límite por segmento a 70. Esta página muestra intencionadamente la línea de 160 porque es el umbral de decisión más común para marketers y usuarios de APIs SMS; la matemática multi-segmento está documentada en la spec SMS para quien la necesite. Casos de uso: recortar un tweet para que entre, copywriting de SMS transaccionales, encajar un post de Bluesky bajo 300, redactar un caption de Instagram bajo 2.200.

  • Conteo real de code points Unicode (operador spread, no string.length)
  • Cuenta emoji como 1, CJK como 1 por carácter — coincide con la expectativa humana
  • Conteo total + conteo sin espacios uno al lado del otro
  • Barra de progreso Twitter/X en límite de 280 chars, se vuelve roja al desbordar
  • Barra de progreso SMS en límite de 160 chars (alfabeto GSM 7-bit)
  • Reactivo — los conteos actualizan en cada pulsación
  • Región live (aria-live polite) — los lectores de pantalla anuncian cambios
  • Sin subida — tu texto nunca sale del navegador
  • Útil para tweets, SMS marketing, posts Bluesky, captions Instagram
  • Ayuda a evitar la trampa de facturación SMS multi-segmento al usar acentos/emoji

Gratis. Sin registro. Tus datos permanecen en tu navegador. Anuncios mediante Google AdSense (con consentimiento).

Preguntas frecuentes

¿Por qué string.length devuelve números incorrectos para emoji y texto CJK?

El string.length de JavaScript devuelve unidades de código UTF-16, la unidad de almacenamiento que el lenguaje usa internamente. Para caracteres del Basic Multilingual Plane (los ~65.536 puntos de código originales hasta U+FFFF), un punto de código entra en una unidad de código. Pero los emoji como U+1F600 😀, los ideogramas CJK menos comunes por encima de U+FFFF, los símbolos matemáticos y las escrituras antiguas requieren un par sustituto — dos unidades UTF-16 codificando un punto de código. El iterador de cadenas de ECMA-262 (el operador spread [...str] desde ES2015) itera por puntos de código, así que [...'😀'].length devuelve 1, el valor que esperaría una persona. UAX #29 (Unicode 16.0, revisión 45) define un nivel aún más estricto llamado clústeres de grafemas, donde los emoji familia con ZWJ como 👨‍👩‍👧 cuentan como un único carácter percibido aunque se componen de cinco puntos de código; la segmentación completa por grafemas requiere Intl.Segmenter, que la mayoría de contadores no incluye.

¿Cómo cuenta Twitter/X realmente los caracteres bajo el límite de 280?

La documentación de desarrolladores de X Corp (docs.x.com/fundamentals/counting-characters) especifica un conteo ponderado de caracteres tras Forma de Normalización Unicode C (NFC). La mayoría de caracteres cuentan 1; chino, japonés (Kanji, Hiragana, Katakana), coreano (Hangul) y formas fullwidth cuentan 2; todos los emoji cuentan 2 independientemente del tono de piel o complejidad ZWJ; las URLs se envuelven con el acortador t.co a un peso fijo de 23 caracteres independientemente de la longitud original. El número 280 se convirtió en titular cuando Twitter duplicó el límite original de 140 en 2017, pero para contenido en japonés o chino el límite práctico está más cerca de 140 caracteres ponderados. La biblioteca open-source oficial twitter-text es la implementación de referencia canónica cuando la precisión importa para una integración.

¿De dónde viene el límite de 160 caracteres de los SMS?

3GPP TS 23.038 (originalmente Recomendación GSM 03.38, obligatoria para los terminales GSM) define el alfabeto GSM 7-bit por defecto. Un envolvente de mensaje SMS lleva hasta 140 octetos de carga útil; con 7 bits por carácter eso da ⌊140 × 8 / 7⌋ = 160 caracteres por SMS individual. Si un mensaje contiene cualquier carácter fuera de la tabla 7-bit — la mayoría del latín acentuado (é, ñ, ü), todos los emoji, todo CJK — la red recurre a codificación UCS-2 (16 bits por carácter) y el límite por segmento cae a 70. Algunos mercados despliegan tablas nacionales de desplazamiento de idioma (portugués, turco, varias escrituras brahmicas) que extienden el conjunto 7-bit. El SMS multi-parte (según 3GPP TS 23.040) añade una Cabecera de Datos de Usuario que reduce la carga útil por segmento a 153 (7-bit) o 67 (UCS-2).

¿Los emoji siempre cuentan 2 caracteres en todas partes?

Depende del sistema. El conteo por puntos de código de ECMA-262 trata un emoji simple como U+1F600 😀 como 1; un par de indicadores regionales como 🇺🇸 (dos puntos de código U+1F1FA + U+1F1F8) como 2; y una familia ZWJ 👨‍👩‍👧 como 5. El conteo por clústeres de grafemas de UAX #29 colapsa los tres a 1 carácter percibido. El contador ponderado de X Corp cobra a cada emoji 2 caracteres independientemente de la complejidad subyacente. SMS con el alfabeto GSM 7-bit no transporta emoji en absoluto — el mensaje se re-codifica como UCS-2 y cada emoji cuesta una o dos unidades UTF-16 según el plano. El conteo 'correcto' depende de a qué regla de facturación o límite de plataforma quiera ajustarse el usuario.

¿Cómo maneja este contador la accesibilidad para lectores de pantalla?

Los conteos total y sin espacios y las barras de progreso de Twitter/SMS están en una región marcada con aria-live="polite", que el Criterio de Éxito 4.1.3 de WCAG (Mensajes de Estado, introducido en WCAG 2.1 — recomendación del W3C del 5 de junio de 2018 — y trasladado sin cambios a WCAG 2.2, recomendación del 5 de octubre de 2023) define como el mecanismo canónico para que la tecnología asistiva anuncie actualizaciones de contenido sin mover el foco del teclado. El nivel polite encola anuncios detrás de cualquier habla que el usuario esté escuchando — apropiado para conteos no urgentes, donde assertive interrumpiría a mitad de frase en cada pulsación. Los lectores de pantalla (NVDA, JAWS, VoiceOver) consumen la región live automáticamente; el usuario no necesita hacer nada más.

Fuentes (6)
  • The Unicode Consortium (2024). The Unicode Standard, Version 16.0. Unicode Consortium, Mountain View, CA (released 10 September 2024).
  • Davis, M. (Ed.) (2024). UAX #29: Unicode Text Segmentation. Unicode Standard Annex, Revision 45 (Unicode 16.0).
  • ECMA International (2025). ECMAScript 2025 Language Specification — String.prototype [@@iterator] / String Iterator Objects. ECMA-262, 16th edition, June 2025.
  • 3GPP (2024). TS 23.038: Alphabets and language-specific information (Release 18). 3rd Generation Partnership Project, technical specification (originally GSM 03.38).
  • X Corp (2024). Counting Characters. X Developer Platform documentation, docs.x.com/fundamentals/counting-characters.
  • World Wide Web Consortium (W3C) (2018). Web Content Accessibility Guidelines (WCAG) 2.1 — Success Criterion 4.1.3 Status Messages. W3C Recommendation 5 June 2018; carried unchanged into WCAG 2.2 (Recommendation 5 October 2023).

Son las publicaciones originales en las que se basan las fórmulas de esta herramienta. Localízalas con el nombre de la revista y el año en Google Scholar o PubMed.

Por ·