Cómo se cuentan las palabras y los caracteres
Si pegas el mismo texto en dos aplicaciones, puedes obtener dos recuentos distintos. Ninguno es necesariamente incorrecto: cuentan cosas distintas. Esta guía explica las unidades habituales y por qué las cifras difieren.
Cuatro formas de contar caracteres
Los ordenadores guardan el texto en Unicode, y un «carácter» se puede medir en varios niveles:
- Los clústeres de grafemas son lo que un lector ve como un solo carácter, como «é», «한» o «👍🏽».
- Los puntos de código son los valores Unicode individuales. Un carácter visible puede estar formado por varios puntos de código.
- Las unidades de código UTF-16 son lo que cuentan
lengthen JavaScript y varios otros lenguajes de programación. Los caracteres fuera del plano multilingüe básico (BMP), incluida la mayoría de los emojis, ocupan dos unidades. - Los bytes UTF-8 son lo que guarda un archivo o una columna de base de datos. Las letras ASCII ocupan un byte, las letras latinas con tilde o acento normalmente dos, los caracteres coreanos, chinos y japoneses normalmente tres, y los emojis cuatro o más.
| Texto | Grafemas | Puntos de código | Unidades UTF-16 | Bytes UTF-8 |
|---|---|---|---|---|
| a | 1 | 1 | 1 | 1 |
| é (un solo punto de código) | 1 | 1 | 1 | 2 |
| é (e + acento combinable) | 1 | 2 | 2 | 3 |
| 한 (sílaba coreana) | 1 | 1 | 1 | 3 |
| 👍 | 1 | 1 | 2 | 4 |
| 👍🏽 (con tono de piel) | 1 | 2 | 4 | 8 |
| 👨👩👧 (emoji de familia) | 1 | 5 | 8 | 18 |
Acentos combinables y texto coreano
Algunos caracteres se pueden guardar de más de una forma. «é» puede ser un único punto de código precompuesto o una «e» simple seguida de un acento combinable. Se ven idénticos, pero la segunda forma tiene un punto de código y un byte más. El texto copiado de algunos sistemas, como los nombres de archivo en ciertos sistemas operativos, puede usar la forma descompuesta.
El coreano tiene el mismo problema. Una sílaba como «한» suele guardarse como un punto de código, pero también puede escribirse como jamo separados (ㅎ, ㅏ, ㄴ) que se combinan en pantalla. Un contador basado en grafemas muestra 1 en ambos casos, mientras que un recuento de puntos de código muestra 1 o 3. La normalización Unicode (NFC o NFD) convierte entre las dos formas.
Contar palabras en distintos idiomas
En inglés, dividir por los espacios da un recuento de palabras razonable, aunque las palabras con guion, las contracciones, los números y las URL pueden contarse de forma distinta según la herramienta.
El chino, el japonés y el tailandés suelen escribirse sin espacios entre palabras, así que dividir por los espacios contaría una frase entera como una sola palabra. Los mejores contadores usan un segmentador de palabras basado en diccionarios y reglas. El contador de LeedyBox usa Intl.Segmenter del navegador, que identifica los límites de palabra en muchos idiomas. En estos idiomas, la segmentación es una cuestión de convención, así que los resultados pueden diferir de otras herramientas o del recuento de una persona. Por ese motivo, algunos editores de estos idiomas cuentan caracteres en lugar de palabras.
Por qué las aplicaciones y los sitios web cuentan de forma distinta
Un límite como «máximo 280 caracteres» o «VARCHAR(255)» puede medirse en grafemas, puntos de código, unidades UTF-16 o bytes, según el sistema. Algunos servicios también cuentan un enlace como una longitud fija o dan más peso a ciertas escrituras. Cuando necesites ajustarte a un límite, averigua qué unidad usa el sistema de destino y compara con esa cifra. El contador de LeedyBox muestra grafemas, unidades UTF-16 y bytes UTF-8 en paralelo e incluye un comprobador de límite, para que veas lo cerca que estás en la unidad que corresponda.
Líneas, párrafos y saltos de línea
El recuento de líneas depende de cómo se guardan los saltos de línea. Windows suele usar dos caracteres (CR LF), mientras que Linux y macOS usan uno (LF). Una herramienta que cuenta caracteres sin procesar puede contar un salto de línea de Windows como dos. Un salto de línea al final del texto puede contar o no como una línea vacía adicional. Los párrafos suelen contarse como bloques separados por una o más líneas en blanco, así que un único salto de línea dentro de un párrafo no inicia uno nuevo.
Estimaciones del tiempo de lectura
El tiempo de lectura se calcula dividiendo el número de palabras entre una velocidad de lectura supuesta. La velocidad real varía según el lector, el idioma y lo técnico que sea el texto, y el propio recuento de palabras depende de la segmentación. Toma la estimación como una referencia aproximada para planificar, no como una medición.
Preguntas frecuentes
¿Por qué un emoji cuenta como 2 caracteres en algunas aplicaciones?
Esas aplicaciones cuentan unidades de código UTF-16. La mayoría de los emojis se guardan como dos unidades, y los emojis con tonos de piel o que combinan personas usan más.
¿Qué recuento debo usar para el límite de una columna de base de datos?
Consulta la documentación de la base de datos. Algunos límites se expresan en caracteres y otros en bytes, así que a menudo el recuento de bytes UTF-8 es el que hay que comparar.
¿El contador envía mi texto a algún sitio?
El Contador de palabras y caracteres de LeedyBox funciona en tu navegador, así que el texto que pegas se cuenta en tu dispositivo.