Inspecciona antes de truncar

Compara la longitud visible y la codificada

El espacio de trabajo interactivo cuenta clústeres de grafemas, puntos de código, unidades UTF-16 y bytes UTF-8 estrictos. Añade un límite personalizado de grafemas para ver cuánto queda o cuánto se excede.

Cargando el contador de caracteres…

Activa JavaScript para inspeccionar texto. Las definiciones de longitud Unicode, los ejemplos y la guía de límites siguen disponibles abajo.

Una cadena, cuatro longitudes válidas

Elige grafemas, puntos de código, unidades o bytes de forma deliberada

Una persona espera que un «límite de caracteres» siga las unidades visibles: una letra acentuada o un emoji unido no debería destrozarse. Unicode llama clúster de grafemas extendido al límite práctico usado aquí. Es una aproximación del carácter percibido por el usuario, no una promesa de que cada fuente, idioma o tarea de edición trate cada secuencia igual.

Un punto de código es un valor en el espacio de códigos Unicode, escrito como U+0065 o U+1F600. Las cadenas ECMAScript exponen una tercera capa: secuencias de unidades de código de 16 bits. Un punto de código por encima de U+FFFF ocupa un par sustituto, por eso "😀".length es 2. Los archivos y las cargas de red añaden una cuarta capa cuando la cadena se codifica como bytes UTF-8.

El contador informa las cuatro capas porque los límites son contratos. Una columna de base de datos medida en bytes, una API de JavaScript medida en unidades UTF-16 y un campo de producto medido en grafemas visibles aceptan cantidades distintas del mismo texto. La etiqueta «500 caracteres» está incompleta hasta que se nombren la unidad y la política de normalización.

Clústeres de grafemas
Límites extendidos regionales que aproximan los caracteres visibles.
Puntos de código
Valores codificados Unicode obtenidos por iteración de puntos de código.
Unidades UTF-16
Los elementos de 16 bits que cuenta la longitud de las cadenas de JavaScript.
Bytes UTF-8
La longitud codificada estricta cuando todos los valores escalares son válidos.
Límite personalizado
Una allowance de grafemas con estado restante y de exceso.

Ejemplos pequeños revelan las capas

La misma longitud visible puede requerir distinto almacenamiento

Texto y representaciónGrafemas · puntos · unidadesBytes UTF-8
é · U+00E91 · 1 · 12 bytes: C3 A9
é · U+0065 U+03011 · 2 · 23 bytes: 65 CC 81
😀 · U+1F6001 · 1 · 24 bytes: F0 9F 98 80
👨‍👩‍👧‍👦 · familia unida1 · 7 · 1125 bytes UTF-8

Las dos primeras filas suelen verse como la misma letra acentuada. El contador no las normaliza deliberadamente, de modo que sus longitudes subyacentes siguen siendo distinguibles. La secuencia de la familia combina cuatro emoji con tres uniones de ancho cero; tratar sus puntos de código como «caracteres» independientes eliminables puede dejar un resultado visiblemente roto.

Un algoritmo de límites Unicode

Los límites de grafemas dependen de los datos de segmentación actuales

El total de grafemas usa Intl.Segmenter con granularidad de grafema. La API sigue la negociación de configuración regional y los datos de límites Unicode de la implementación. El Unicode Standard Annex #29 define las reglas predeterminadas de clústeres de grafemas extendidos, incluido el comportamiento de los signos diacríticos, los modificadores de emoji, los indicadores regionales y las secuencias con unión de ancho cero. ECMA-402 define la interfaz de segmentación de JavaScript.

El comportamiento de los límites no está congelado con respecto al navegador. Un motor más nuevo puede incluir propiedades o adaptaciones Unicode actualizadas, y los editores especializados pueden aplicar reglas específicas del dominio más allá del algoritmo predeterminado. Conserva el texto original y registra el entorno de ejecución cuando una decisión de límite deba auditarse con exactitud.

Un recuento de grafemas está pensado para el movimiento del cursor y para límites visibles, pero no mide el ancho visual. Un clúster puede ser estrecho, ancho, invisible, representarse como un glifo ausente o unirse a sus vecinos. Los límites de maquetación necesitan medición de fuente y renderizado además de la segmentación de cadenas.

¿Cuentas la extensión editorial?

Los grafemas responden a una pregunta de caracteres visibles. Las palabras y las oraciones necesitan reglas regionales de límites de palabra y oración más definiciones separadas de párrafo y línea.

Abrir el contador de palabras →

Igualate al contrato del receptor

Usa el límite personalizado de grafemas para políticas de caracteres visibles

  1. 1

    Nombra la unidad

    Confirma si el receptor limita grafemas, puntos de código, unidades UTF-16 o bytes codificados. No lo infieras de la palabra «carácter».

  2. 2

    Fija el límite

    Introduce un límite personalizado de grafemas para saber cuántos clústeres visibles quedan o cuánto excede el texto actual ese límite.

  3. 3

    Trunca con seguridad

    Si el contrato son los grafemas, corta solo en un límite de grafema. Vuelve a comprobar los bytes si el transporte o el almacenamiento tienen un techo adicional en bytes.

El límite personalizado no reescribe, recorta ni aplica normalización Unicode después de recibir el valor del área de texto. El comportamiento del área de texto HTML convierte CRLF y CR en LF antes del análisis. Un servicio que aplique otra normalización, elimine caracteres de control o use otra versión de Unicode puede dar un resultado distinto, así que prueba emojis y secuencias combinantes representativos contra el destino real.

Entrada exacta, codificación estricta

La normalización y los sustitutos aislados cambian la pregunta de los bytes

No se aplica ninguna transformación NFC, NFD, NFKC ni NFKD al valor del área de texto. El área de texto HTML ya convirtió CRLF y CR en LF, así que las comparaciones byte a byte con la fuente deben tener en cuenta esa conversión. Normaliza Unicode solo cuando el protocolo consumidor exija una forma concreta; las firmas, los hashes, las claves de base de datos y los contratos en bytes siguen sus propias reglas.

La mayoría del texto escrito con normalidad consta de valores escalares Unicode, pero una cadena de JavaScript puede contener un sustituto alto o bajo aislado. El tipo String de ECMAScript permite secuencias de valores de 16 bits que no son UTF-16 bien formado. Un sustituto aislado tiene recuento de unidades UTF-16 pero no codificación UTF-8 directa como valor escalar Unicode.

El TextEncoder de WHATWG acepta una USVString, que convierte los sustitutos aislados en U+FFFD antes de codificar en UTF-8. Ese reemplazo es un comportamiento útil de interoperabilidad, pero sus tres bytes no son una codificación que preserve el byte de la unidad de código original. Por eso este contador considera no disponible la longitud en bytes UTF-8 e informa la entrada malformada en lugar de usar silenciosamente el total del reemplazo.

Rastrea el texto hasta los bytes

ASCII, Unicode, UTF-8, UTF-16, los grafemas y la notación hexadecimal describen capas relacionadas pero separadas.

Leer ASCII vs Unicode vs UTF-8 →

Inspección local

Mide el texto sin peticiones a una API de recuento

El recuento se ejecuta en esta pestaña del navegador. LiveParse no sube deliberadamente la cadena a ningún servicio de recuento ni guarda un historial en el servidor. Eso reduce la exposición de borradores, identificadores y cargas de ejemplo.

El procesamiento local no es lo mismo que un dispositivo aislado. Las extensiones del navegador, los gestores del portapapeles, el software de accesibilidad, las capturas de pantalla, los informes de fallos y el sistema operativo quedan fuera del control de esta página. Elimina los secretos que no necesiten medirse y sigue la política de manejo de datos aplicable al dispositivo.

¿Necesitas palabras y tiempo de lectura?

Cambia a la segmentación regional de palabras y oraciones, los recuentos de párrafos y líneas, y las estimaciones de ritmo ajustable.

Contar palabras y oraciones →

Preguntas respondidas

Preguntas frecuentes sobre el contador de caracteres

¿Qué significa el recuento de caracteres en esta herramienta?

El total principal de caracteres es un recuento de clústeres de grafemas, que aproxima los caracteres que percibe el usuario. La herramienta también informa puntos de código Unicode, unidades UTF-16 de JavaScript y bytes UTF-8 para adaptarse a la unidad exacta de cada plataforma.

¿Por qué un emoji puede contar como varios puntos de código?

Un emoji que se muestra como un grafema puede ser una secuencia con personas, modificadores de tono de piel, selectores de variante, indicadores regionales o uniones de ancho cero. La segmentación en grafemas mantiene unidas muchas de esas secuencias mientras el recuento de puntos de código expone sus componentes.

¿Qué diferencia hay entre un punto de código y una unidad UTF-16?

Un punto de código es un valor codificado Unicode. Una unidad UTF-16 es un valor de 16 bits en una cadena ECMAScript; los puntos de código por encima de U+FFFF usan un par sustituto y por tanto ocupan dos unidades UTF-16.

¿Cómo trata la herramienta un sustituto sin emparejar?

Un sustituto UTF-16 sin emparejar no es un valor escalar Unicode. En lugar de contar silenciosamente los bytes del carácter de reemplazo, la herramienta marca el resultado de bytes UTF-8 estrictos como no disponible y muestra un error hasta reparar la cadena malformada.

¿El contador normaliza el texto Unicode?

No se aplica normalización Unicode al valor del área de texto. Una letra acentuada precompuesta y una letra base con signo diacrítico permanecen distintas. El área de texto HTML convierte CRLF y CR en LF antes del análisis, lo que puede cambiar los totales de unidades y de bytes.

¿El límite personalizado se basa en bytes?

No. El límite personalizado rastrea clústeres de grafemas e informa cuántos quedan o cuánto se excede. Si un servicio define su límite en puntos de código, unidades UTF-16 o bytes UTF-8, compara la métrica correspondiente.