Contador de Bytes - Calculadora de Tamaño de Cadenas en Línea
Calcula el tamaño en bytes de cadenas en codificaciones UTF-8, UTF-16, ASCII, ISO-8859-1 y Base64. Compara con límites comunes — 100% del lado del cliente, sin envío de datos al servidor.
Preguntas Frecuentes
¿Qué es un contador de bytes?
Un contador de bytes calcula el número exacto de bytes que ocupa una cadena en varias codificaciones de caracteres (UTF-8, UTF-16, ASCII). A diferencia del conteo de caracteres, el conteo de bytes refleja el tamaño real de memoria o almacenamiento de los datos de texto.
¿Por qué el conteo de bytes es diferente al conteo de caracteres?
En codificaciones multibyte como UTF-8, los caracteres más allá de ASCII requieren 2-4 bytes. Por ejemplo, un carácter chino ocupa 3 bytes en UTF-8 pero cuenta como 1 carácter. Los emoji pueden ocupar 4 o más bytes. Esto importa para límites de almacenamiento, cargas de API y columnas de base de datos.
¿Son seguros mis datos? ¿Salen de mi navegador?
Todos los cálculos se realizan 100% del lado del cliente usando la API TextEncoder integrada del navegador. Su texto nunca sale de su navegador y nunca se envía a ningún servidor.
¿Cuál es la diferencia entre UTF-8 y UTF-16?
UTF-8 usa 1-4 bytes por carácter (eficiente para texto con predominancia ASCII). UTF-16 usa 2 o 4 bytes por carácter (codificación interna de JavaScript). Para texto en inglés, UTF-8 es más pequeño. Para texto CJK, son similares. UTF-16 es relevante al trabajar con cadenas internas de JavaScript, APIs de Windows o longitudes de cadenas en Java/C#.
¿Cómo se calcula el tamaño codificado en Base64?
La codificación Base64 convierte cada 3 bytes de entrada en 4 caracteres ASCII. La fórmula es ceil(byteLength / 3) * 4. Esto resulta en aproximadamente un 33% de sobrecarga de tamaño, lo cual es importante al incluir datos en URLs, cargas JSON o URIs de datos.
¿Cuáles son los límites de tamaño comunes que encuentran los desarrolladores?
Límites comunes incluyen: cookies HTTP (4 KB), longitud de URL (2,048 caracteres), encabezados HTTP (8 KB), localStorage (5 MB por origen), mensajes SMS (160 caracteres GSM-7 / 70 caracteres Unicode) y columnas VARCHAR de base de datos (varía según el motor de BD).
Ejemplos de Código
// UTF-8 byte size using TextEncoder
function getUtf8ByteSize(str) {
return new TextEncoder().encode(str).byteLength;
}
// UTF-16 byte size (JavaScript internal encoding)
function getUtf16ByteSize(str) {
return str.length * 2; // Each code unit = 2 bytes
}
// Base64 encoded size from UTF-8
function getBase64Size(str) {
const utf8Len = new TextEncoder().encode(str).byteLength;
return Math.ceil(utf8Len / 3) * 4;
}
// Usage
const text = 'Hello, World! 안녕하세요 🌍';
console.log('Characters:', [...text].length); // 19
console.log('UTF-8 bytes:', getUtf8ByteSize(text)); // 33
console.log('UTF-16 bytes:', getUtf16ByteSize(text)); // 40
console.log('Base64 size:', getBase64Size(text)); // 44