La respuesta práctica
En el uso cotidiano, llamamos carácter a cada unidad visible del texto: una letra, un número, un signo o un emoji. En informática, esa misma unidad puede estar formada por varios puntos de código Unicode. Por eso dos contadores pueden dar resultados distintos sin que uno esté necesariamente roto: quizá están midiendo unidades diferentes.
Tres formas de medir un texto
Unidades de código
Son las piezas que utiliza internamente una codificación o un lenguaje. En JavaScript, la propiedad length mide unidades UTF-16 y puede contar un emoji como dos o más posiciones.
Puntos de código Unicode
Representan los valores definidos por Unicode. Una bandera suele contener dos puntos de código regionales y una secuencia familiar incluye varios emojis unidos.
Grafemas o caracteres visibles
Son una aproximación programática a lo que una persona percibe como un solo carácter. Unicode denomina a estas unidades grapheme clusters. Son la referencia más útil para mover el cursor, seleccionar texto o mostrar un conteo visual.
Ejemplos que explican la diferencia
- A: un punto de código y un carácter visible.
- á: normalmente un punto de código y un carácter visible.
- a + acento combinado: dos puntos de código, pero un carácter visible.
- 🇦🇷: dos puntos de código regionales, pero una bandera visible.
- 👨👩👧👦: varios puntos de código unidos, pero un emoji familiar visible.
Cómo cuenta CuantosCaracteres.com
La métrica principal Caracteres segmenta el texto por grafemas mediante Intl.Segmenter cuando el navegador lo admite. Si esa API no está disponible, utiliza puntos de código como alternativa compatible.
Sin espacios elimina primero los espacios, tabulaciones y saltos de línea, y después aplica la misma segmentación. Letras cuenta símbolos clasificados como letras por Unicode. La métrica Emojis agrupa cada secuencia visible que contiene un pictograma, por lo que una familia unida o un emoji con tono de piel cuenta como una unidad.
Cómo contar emojis visibles
El contador de emojis separa el texto en grafemas y después identifica las unidades con presentación emoji. De esta forma puede agrupar una bandera, una familia o un tono de piel como una sola unidad visible y mostrar qué emojis se repiten.
Unicode define la estructura de estas secuencias en el Estándar Técnico #51 sobre emoji. El resultado final también depende del soporte Unicode del navegador y de la fuente utilizada por cada sistema.
Cómo se relacionan los caracteres con los bytes
Los caracteres visibles tampoco equivalen necesariamente a bytes. UTF-8 utiliza una cantidad variable: los caracteres ASCII ocupan un byte y otros puntos de código necesitan entre dos y cuatro. Usa el contador de bytes UTF-8 para comparar bytes, grafemas, puntos de código y unidades UTF-16 con el mismo texto.
Por qué importa al recortar o dividir
Cortar una cadena por unidades UTF-16 puede separar una pareja sustituta o dejar incompleta una secuencia de emoji. El recortador de texto y el divisor por caracteres visibles usan la misma segmentación por grafemas para elegir puntos de corte seguros cuando el navegador lo permite.
Por qué una plataforma puede contar de otra manera
Una plataforma puede aplicar reglas propias. X, por ejemplo, asigna pesos especiales a emojis y enlaces. Un SMS cambia de capacidad según use GSM-7 o Unicode. Por eso los presets del selector son referencias prácticas: antes de publicar o enviar, conviene comprobar el resultado final en la plataforma correspondiente.
Fuentes técnicas
La segmentación se basa en el Anexo Unicode #29 y en la especificación ECMA-402 de Intl.Segmenter. El cálculo de bytes utiliza TextEncoder del estándar WHATWG Encoding, que produce UTF-8.
Revisado el 27 de julio de 2026.
También puedes usar el comparador de textos para medir dos versiones con el mismo criterio de caracteres visibles.