En UTF-8, cada carácter Unicode ocupa entre 1 y 4 bytes, así que el peso no siempre coincide con el número de letras. Algunos símbolos que ves como uno solo, como ciertos emojis, están formados por varios caracteres y ocupan más. Las letras sin tilde, los números y los signos básicos ocupan 1 byte; la ñ, las vocales con tilde, la ü, ¿ y ¡ ocupan 2; el símbolo € ocupa 3, y la mayoría de los emojis, 4.
Esos rangos vienen de la especificación de UTF-8, la RFC 3629, que codifica los caracteres ASCII en un solo byte y reserva 2, 3 o 4 bytes para el resto. Por eso una frase en español suele tener algo más de bytes que de caracteres. «Hola, ¿cómo estás? Te espero mañana en la cafetería.» tiene 52 caracteres y ocupa 57 bytes, porque ¿, ó, á, ñ e í aportan un byte más cada uno. Si vas a guardar un texto en un campo, una cookie o una notificación con límite en bytes, lo que importa es esa cifra y no el número de caracteres.
Bytes que ocupan las letras del español y los emojis en UTF-8
Las letras básicas sin tilde ocupan 1 byte, y la ñ, las vocales con tilde o diéresis, ¿ y ¡ ocupan 2 cuando están escritas como un solo carácter, que es lo habitual. Calculamos estas cifras el 29 de octubre de 2026 con Buffer.byteLength de Node.js.
| Texto | Caracteres visibles | Bytes en UTF-8 | Qué es |
|---|---|---|---|
| a | 1 | 1 | Letra sin tilde |
| ñ / Ñ | 1 | 2 | Eñe en minúscula o mayúscula |
| á, ü | 1 | 2 | Vocal con tilde o con diéresis |
| ¿ / ¡ | 1 | 2 | Signos de interrogación y exclamación de apertura |
| € | 1 | 3 | Símbolo del euro |
| 😀 | 1 | 4 | Emoji simple |
| 👍🏽 | 1 a la vista | 8 | Emoji con modificador de tono de piel |
| 👨👩👧 | 1 a la vista | 18 | Familia formada por varios emojis unidos por un carácter invisible |
| 🇪🇸 / 🇲🇽 | 1 a la vista | 8 | Bandera |
Los emojis compuestos son los que más engañan. En pantalla ves uno solo, pero por dentro son varios símbolos encadenados y cada uno suma sus propios bytes. Una familia ocupa lo mismo que 18 letras sin tilde.
En palabras y frases, cada tilde amplía la diferencia.
| Texto | Caracteres | Bytes en UTF-8 |
|---|---|---|
| año | 3 | 4 |
| canción | 7 | 8 |
| ¿Qué tal? | 9 | 11 |
| Hola, ¿cómo estás? Te espero mañana en la cafetería. | 52 | 57 |
Imagina, como ejemplo hipotético, que un campo admite 10 bytes y quieres guardar «¿Qué tal?». Con 9 caracteres parece que cabe, pero son 11 bytes y no entra.
Por qué la misma «á» puede ocupar 2 o 3 bytes
Una «á» puede guardarse como un solo carácter, que ocupa 2 bytes, o como una «a» seguida de un acento combinable, que ocupa 3. Se ven igual, pero no pesan lo mismo. El anexo UAX #15 de Unicode considera ambas formas canónicamente equivalentes. Define cuatro formas de normalización, y para este caso interesan dos. La NFD separa la letra de su acento; la NFC primero la separa y después la vuelve a unir en un solo carácter.
En la práctica, «canción» ocupa 8 bytes con la ó compuesta y 9 con la tilde separada, aunque en pantalla se vean idénticas. Si copias texto de otra aplicación y el tamaño no cuadra, esta puede ser la causa. Mide siempre el texto final, tal como lo vas a enviar. Si lo procesas con código y lo vas a guardar o enviar normalizado en NFC, normalízalo antes de medirlo. Si no vas a transformarlo, mide el texto tal como está.
Límites técnicos que se miden en bytes y no en caracteres
Algunos límites técnicos se expresan en bytes, así que un texto en español puede estar por debajo del límite en caracteres y superarlo en bytes. Estas son las cifras de las fuentes oficiales, consultadas el 29 de octubre de 2026.
| Dónde | Qué dice la fuente | Unidad |
|---|---|---|
| Cookies (RFC 6265, sección 6.1) | Recomienda que los navegadores admitan al menos 4096 bytes por cookie, contando nombre, valor y atributos. También al menos 50 cookies por dominio y 3000 en total. | Bytes |
| Notificaciones push (Firebase Cloud Messaging) | Hasta 4096 bytes de carga útil en mensajes de notificación y de datos, y 2048 en los mensajes enviados a temas, contando claves y valores. La consola de Firebase limita el texto a 1000 caracteres. | Bytes en la carga útil, caracteres en la consola |
| Bases de datos (MySQL 8.4, VARCHAR) | Longitud declarada de 0 a 65.535. El máximo real depende del límite de fila de 65.535 bytes, que comparten todas las columnas, y del juego de caracteres. | Bytes por fila |
Cada caso tiene su matiz. La cifra de la RFC 6265 es la capacidad mínima que se recomienda a los navegadores, no un tope máximo. Además, el valor de una cookie solo admite ciertos caracteres ASCII, y la misma RFC recomienda codificar los datos arbitrarios, por ejemplo en Base64. Un texto con tildes o emojis ocupará más después de codificarlo, así que mide el valor final. En Firebase conviven dos unidades distintas, porque la consola cuenta caracteres y la carga útil se mide en bytes. En MySQL, según su manual, la longitud declarada de VARCHAR se cuenta en caracteres, y cada valor lleva además un prefijo de longitud de 1 byte si los valores de la columna no pueden pasar de 255 bytes y de 2 si pueden pasar. En utf8mb4 un carácter puede ocupar más de 3 bytes, así que en la fila caben menos caracteres.
Cómo medir los bytes de un texto con código
En JavaScript, la propiedad .length no devuelve los bytes de un texto. Por ejemplo, "😀".length devuelve 2 porque cuenta unidades UTF-16, no bytes ni caracteres.
| Emoji | Caracteres visibles | .length en JavaScript | Bytes en UTF-8 |
|---|---|---|---|
| 😀 | 1 | 2 | 4 |
| 👍🏽 | 1 | 4 | 8 |
| 👨👩👧 | 1 | 8 | 18 |
En ninguna fila coinciden las tres cifras. Para obtener los bytes en UTF-8 tienes estas opciones.
- En JavaScript, con new TextEncoder().encode(texto).length.
- En JavaScript, con new Blob([texto]).size, el mismo método que usa nuestra Calculadora de tamaño de texto de Digily Link.
- En Python, con len(texto.encode("utf-8")).
Prueba cualquiera de ellas con «canción» y deberías obtener 8, o 9 si la palabra viene con la tilde separada.
KB y KiB, por qué las herramientas dan cifras distintas
Antes de comparar una cifra con un límite, conviene saber qué criterio sigue cada herramienta. Con el prefijo kilo del Sistema Internacional, 1 KB son 1000 bytes, y para 1024 bytes existe la unidad KiB. Aun así, muchas herramientas escriben «KB» cuando dividen entre 1024. Nuestra Calculadora de tamaño de texto es una de ellas. Cuando muestra «1.5 KB», son unos 1536 bytes, porque la cifra se redondea a dos decimales. Además, solo pasa a KB cuando el texto supera los 1024 bytes, así que un texto de exactamente 1024 bytes todavía aparece como «1024 B».
Otras herramientas usan 1000, incluido nuestro Verificador de tipo MIME, que además muestra un solo decimal. Por eso la misma cifra puede verse distinta en dos sitios.
Veamos otro ejemplo hipotético. Un servicio dice que admite «4 KB» y tu texto pesa 4050 bytes. Si el servicio cuenta 4000 bytes, te pasas; si cuenta 4096, entra. Si un servicio te da un límite en KB, busca en su documentación qué unidad usa o compara directamente en bytes. Las fuentes de la tabla de límites expresan sus cifras en bytes, así que en esos casos no hay duda.
Cómo usar la Calculadora de tamaño de texto
La calculadora te dice cuántos bytes ocupa cualquier texto en cuanto lo pegas. Mide bytes en UTF-8, no caracteres, y cualquiera puede usarla.
- Abre la Calculadora de tamaño de texto en digily.link.
- Pega el texto en el campo «Texto». Usa la versión final, con sus tildes, emojis y saltos de línea, para no llevarte sorpresas por la forma en que se guardan las letras.
- Lee el resultado en la línea «Tamaño». Se actualiza mientras escribes, sin botón de enviar.
- Compara la cifra con el límite del servicio. Si el resultado sale en KB, multiplícalo por 1024 para pasarlo a bytes.
El cálculo se hace en tu navegador y el texto no se envía a nuestro servidor. Si te quedas cerca del límite, prueba a quitar un emoji compuesto o una palabra larga y mira cómo cambia el tamaño.
Calcula el tamaño de tu texto en bytes con nuestra calculadora de tamaño de texto antes de guardarlo en un campo, una cookie o una notificación.
Preguntas frecuentes
¿Cuántos bytes ocupa la ñ?
En UTF-8 ocupa 2 bytes, tanto en minúscula como en mayúscula. Lo mismo pasa con las vocales con tilde, la ü, ¿ y ¡.
¿Cuántos bytes ocupa un espacio?
Un byte. El espacio es un carácter ASCII, y la RFC 3629 codifica esos caracteres en un solo byte.
¿Cuántos bytes ocupa un salto de línea?
Depende del tipo de salto. El salto LF, habitual en Linux y macOS, es un solo carácter ASCII y ocupa 1 byte. El salto CRLF de los archivos de texto de Windows son dos caracteres y ocupa 2. No hemos comprobado cuál cuenta la calculadora, así que si el límite es estricto pega el texto con los saltos de línea y sin ellos y compara los dos resultados.