Caracteres versus bytes: por qué su texto es más grande de lo que cree

9 de julio de 2026 · 5 min de lectura

Pegas una cadena que parece tener 100 caracteres en un campo con un límite de 100 caracteres y se rechaza por ser demasiado larga. ¿Cómo? La respuesta es que un carácter y un byte no son lo mismo, y el espacio entre ellos, invisible hasta que te muerde, es uno de los rincones más confusos del trabajo con texto. Esto es lo que realmente está pasando.

La distinción central

En ASCII simple, las letras, dígitos y símbolos comunes del inglés básico, un carácter es exactamente un byte, por lo que los conteos coinciden y nadie piensa en ello. Pero la web funciona con UTF-8, una codificación en la que los caracteres fuera de ese conjunto básico ocupan más de un byte cada uno. Una letra acentuada como é tiene dos bytes. Muchos caracteres asiáticos tienen tres bytes. Los emoji suelen tener cuatro bytes. Por lo tanto, la cantidad de bytes que ocupa su texto puede ser mucho mayor que la cantidad de caracteres que ve, dependiendo completamente de cuáles sean esos caracteres.

Por qué importa el tamaño del byte

La brecha es importante porque muchos límites se definen en bytes, no en caracteres. Los campos de la base de datos suelen tener un tamaño de bytes, por lo que un campo que contiene 100 bytes puede que solo quepa 50 caracteres si son de varios bytes. Las cargas útiles de la red, los límites de tamaño de los mensajes y las cuotas de almacenamiento se miden en bytes. Algunas API limitan los cuerpos de las solicitudes por tamaño de bytes. Esta es exactamente la razón por la que el texto que se ve muy por debajo de un límite de caracteres puede rechazarse porque es demasiado largo, el límite estaba en bytes y sus letras acentuadas o emoji aumentaron el recuento de bytes a pesar de que el recuento de caracteres se veía bien.

Cómo UTF-8 asigna bytes

UTF-8 tiene un ancho variable por diseño. Codifica las letras y dígitos latinos básicos en un solo byte cada uno, lo que mantiene el texto en inglés simple compacto e idéntico byte por carácter. Más allá de eso, utiliza dos bytes para la mayoría de los caracteres latinos y griegos con acento, tres bytes para una amplia gama que incluye la mayoría de los caracteres chinos, japoneses y coreanos, y cuatro bytes para el resto, incluidos la mayoría de los emoji y algunas escrituras raras. Por lo tanto, una cadena de 100 caracteres puede ocupar entre 100 y 400 bytes, según su contenido. Un tweet de emoji es mucho más pesado que un tweet de letras simples.

La Calculadora de tamaño de texto de TextCaret muestra el tamaño exacto en bytes de su texto en UTF-8 junto con el recuento de caracteres, para que pueda ver con precisión cómo se mide con respecto a un límite basado en bytes, todo calculado en su navegador.

La sorpresa de los emojis.

Los emoji merecen una mención especial porque causan la mayor confusión. La mayoría de los emoji tienen cuatro bytes en UTF-8, y algunos, los que se crean combinando varios puntos de código, como ciertas banderas o variantes de tono de piel, tienen incluso más. Así, un solo emoji puede utilizar tanto espacio de bytes como cuatro caracteres latinos simples, y un emoji compuesto puede utilizar mucho más. Un mensaje que es visualmente corto pero con muchos emojis puede superar un límite de bytes inesperadamente. Si alguna vez te rechazaron un mensaje corto lleno de emojis, este es el motivo.

La conclusión práctica

Cuando un límite se define en caracteres, la mayoría de las publicaciones en las redes sociales limitan los caracteres. Cuando se define un límite en bytes, muchos campos de bases de datos, API y protocolos cuentan bytes y recuerde que los acentos y los emoji inflan el recuento de bytes. Cuando no esté seguro de qué sistema utiliza y su texto contiene algo más que ASCII simple, verifique el tamaño de bytes para estar seguro. Ver ambos números a la vez elimina las conjeturas y evita el rechazo de "pero parecía bastante corto".