Base64 explicado: por qué ocupa más y cómo decodificarlo
Base64 escribe datos binarios como texto plano, con 64 caracteres: de la A a la Z, de la a a la z, del 0 al 9, además de + y /. Cada tres bytes se convierten en cuatro caracteres, así que el texto es alrededor de un tercio más largo que los datos que contiene. Se usa cuando un formato solo admite texto, como una URL de datos en una página web, un campo JSON o un adjunto de correo.
Por qué los formatos de texto lo necesitan
Muchos formatos se diseñaron solo para texto. El cuerpo de un correo, un archivo JSON o un archivo CSS pueden contener letras y símbolos sin problemas, pero una imagen en bruto o un archivo ZIP contienen valores de bytes que algunos sistemas cambiarían, cortarían o interpretarían como códigos de control. Base64 usa solo caracteres que todos los sistemas de texto transmiten sin cambios, así que los datos llegan íntegros. Está definido en la RFC 4648.
Base64 es una codificación, no un secreto. Cualquiera puede decodificarlo sin clave, así que nunca debe usarse para ocultar una contraseña ni datos personales.
Cómo tres bytes se convierten en cuatro caracteres
Toma la palabra Man, que son tres bytes: 77, 97 y 110 en decimal. Juntos, esos tres bytes forman 24 bits. Si divides los 24 bits en cuatro grupos de seis bits, cada grupo es un número del 0 al 63, que apunta a un carácter del alfabeto. Man se convierte en TWFu.
Seis bits solo pueden representar 64 valores, así que cuatro caracteres transportan tres bytes. Por eso la salida es alrededor de un tercio más grande que la entrada, antes de añadir saltos de línea.
Cuando los datos no se dividen en grupos de tres bytes, el codificador rellena el final con signos =. Ma, que son dos bytes, se convierte en TWE=, y M, que es un byte, se convierte en TQ==. El relleno indica al decodificador cuántos bytes tiene el último grupo.
El texto debe codificarse primero en UTF-8
Base64 trabaja con bytes, y el texto está formado por caracteres. Un carácter como é o ✓ se guarda como más de un byte en UTF-8, la codificación que se usa en toda la web. La función btoa() del navegador toma una cadena y trata cada carácter como un byte, así que falla con caracteres fuera del latín básico. Llamarla con un símbolo de verificación lanza un InvalidCharacterError.
La solución es convertir primero el texto en bytes UTF-8 y después codificar esos bytes. La frase héllo ✓ ocupa 10 bytes en UTF-8, y su Base64 es aMOpbGxvIOKckw==. La herramienta Base64 hace este paso por ti. Al decodificar, lee los bytes de nuevo como UTF-8. Si los bytes no son texto UTF-8 válido, la herramienta los trata como un archivo y ofrece descargarlo.
Base64 seguro para URL
El alfabeto estándar contiene + y /. En una URL, + puede representar un espacio, y / separa las partes de una ruta, así que una cadena Base64 puede romper un enlace. La forma segura para URL (RFC 4648, sección 5) usa - y _ en su lugar, y normalmente elimina el relleno =. Úsala cuando la cadena vaya en una URL, un nombre de archivo o un token. El decodificador acepta ambas formas, con o sin relleno.
Si el Base64 proviene de un enlace, decodifica primero la URL. Un valor codificado con porcentajes en un enlace debe decodificarse antes de poder leer su Base64. La guía de codificación por porcentaje explica las reglas para enlaces.
Un token de inicio de sesión es el caso habitual: un JSON Web Token son tres partes en Base64url unidas por puntos, un encabezado, los datos y una firma. El decodificador de JWT separa esas partes y muestra el encabezado y los datos como JSON legible.
URL de datos e imágenes
Una URL de datos incluye el archivo dentro del propio enlace. Su forma es data:, después el tipo de medio, después ;base64, luego una coma y los datos. Una imagen pequeña se convierte en data:image/png;base64, seguido de los bytes codificados. Las páginas web y las hojas de estilo admiten este formato, lo que evita una petición para un icono diminuto.
El coste es el tamaño. Los datos son alrededor de un tercio más grandes, y viajan dentro de la página o de la hoja de estilo en lugar de como un archivo aparte que el navegador puede guardar en caché. Usa URL de datos para imágenes pequeñas, no para fotos grandes. Comprime la foto antes de codificarla si es grande.
Cuando decodificas Base64 en la herramienta, esta mira los primeros bytes de los datos. Los archivos PNG, JPEG, GIF y WebP empiezan con una firma conocida, así que la herramienta muestra una vista previa y ofrece descargarlo. Una URL de datos con tipo de imagen también se muestra como imagen.
Cómo hacerlo con fixmint
- Elige Codificar o Decodificar encima de Texto o Base64, y luego pega tu texto o tu Base64.
- Marca Alfabeto seguro para URL, sin relleno = para tokens, nombres de archivo y enlaces. El decodificador acepta ambas formas de todos modos.
- Para crear una URL de datos a partir de un archivo, arrastra el archivo a la zona de arrastre y marca Para archivos: generar una URL data:.
- Copia el resultado. Si los bytes decodificados son un archivo y no texto, usa la descarga que ofrece la herramienta.
Errores de decodificación comunes
- Un carácter no está permitido. La entrada contiene un carácter fuera de los 64, como unas comillas de una frase copiada. Revisa de dónde viene el texto. Un espacio de ancho cero en el texto copiado provoca el mismo error, así que elimina los caracteres ocultos e inténtalo de nuevo. La guía de caracteres ocultos explica de dónde proceden.
- La longitud es incorrecta. Falta o sobra un carácter, lo que normalmente significa que la copia se cortó.
- Saltos de línea y espacios. El correo (MIME) divide el Base64 cada 76 caracteres. El decodificador elimina espacios y saltos de línea, así que puedes pegar el texto dividido tal cual.
- Falta el relleno. Algunos sistemas eliminan los signos =. El decodificador los añade de nuevo.
Casos límite
- El resultado decodificado parece un sinsentido. Puede ser un archivo y no texto. Un archivo ZIP, un PDF o un programa se decodifican en bytes que no se leen como texto. La herramienta los ofrece para descargar.
- Entradas muy grandes. Todo el archivo se mantiene en el navegador mientras se codifica o decodifica, así que un archivo muy grande puede ser lento y, en un teléfono, puede fallar.
Respuestas rápidas
¿Base64 es lo mismo que el cifrado?
No. Es una codificación reversible sin clave, así que cualquiera puede decodificarla.
¿Por qué mi Base64 es más largo que el archivo?
Cada grupo de tres bytes se convierte en cuatro caracteres, así que el texto es alrededor de un tercio más grande.
¿Por qué no se decodifica una cadena Base64 copiada?
Normalmente se perdió o se añadió un carácter al copiar, como un salto de línea en un lugar incorrecto o un último carácter que falta. Vuelve a copiarla desde el origen.
Traducido del Original en inglés con ayuda de IA.
Comentarios
Aún no hay comentarios. Sé el primero.


