Desarrollo · 4 min de lectura ·
Base64 explicado: para qué sirve y por qué no es cifrado
Base64 aparece en correos, data URI, cabeceras de API y JWT. Cómo funciona, por qué hace los datos un tercio más grandes y por qué nunca oculta nada.

Base64 está en todas partes en el software: adjuntos de correo, imágenes incrustadas en CSS, la cabecera Authorization de HTTP Basic y las partes de un JWT. Tiene una sola tarea: escribir cualquier dato, incluidos bytes binarios, usando solo caracteres de texto seguros.
Cómo funciona
Base64 toma los datos de tres en tres bytes (24 bits) y los divide en cuatro grupos de 6 bits. Cada grupo es un número de 0 a 63 que corresponde a uno de 64 caracteres: A-Z, a-z, 0-9, + y /. Cuando la entrada no se divide en grupos de tres, unos signos = rellenan el final.
Texto M a n
Bytes 01001101 01100001 01101110
6 bits 010011 010110 000101 101110
Base64 T W F u → TWFu
Por qué existe
Muchos sistemas antiguos, sobre todo el correo, se diseñaron para texto y podían estropear bytes arbitrarios. Base64 convierte cualquier cosa en caracteres normales que atraviesan esos canales sin cambios. El precio es el tamaño: cada 3 bytes se convierten en 4 caracteres, así que los datos codificados ocupan un 33 % más.
No es cifrado
No hay clave. Cualquiera puede decodificar Base64 al instante, así que no oculta nada. Una contraseña en una cabecera Basic (dXNlcjpwYXNz es simplemente user:pass) está tan expuesta como el texto plano. Protege los secretos con HTTPS y cifrado de verdad, y nunca trates Base64 como una medida de seguridad.
Variantes que te encontrarás
Base64url cambia + y / por - y _ y suele quitar el relleno, de modo que el resultado es seguro en URL y nombres de archivo; los JWT lo usan. Las data URI ponen los datos codificados en línea, como data:image/png;base64,iVBOR…, lo que ahorra una petición en imágenes diminutas pero hace más pesadas las grandes.
El tamaño en cifras
La longitud codificada es 4 × ceil(n / 3) caracteres para n bytes, así que el aumento es de alrededor de un 33 %, más los saltos de línea si el codificador los añade.
Imagen de 100 KB → unos 133 KB de Base64
Adjunto de 1 MB → unos 1,33 MB (más saltos de línea en el correo)
Por qué falla la decodificación
- Falta el relleno: algunos sistemas quitan los signos = finales y los decodificadores estrictos rechazan la entrada. Añade = hasta que la longitud sea múltiplo de 4.
- El alfabeto equivocado: Base64url usa - y _ en lugar de + y /. Decodifícalo con un decodificador Base64url o vuelve a cambiar los caracteres antes.
- Saltos de línea y espacios: el correo (MIME) corta Base64 cada 76 caracteres. La mayoría de los decodificadores los ignora, pero no todos.
- Texto en la codificación equivocada: al decodificar obtienes bytes. Si eran texto UTF-8 pero se leen como Latin-1, las tildes, la ñ o el hebreo se convierten en caracteres extraños.
La trampa de btoa en JavaScript
La función btoa() del navegador solo acepta caracteres de Latin-1 y lanza un error con hebreo, chino o emojis. Codifica primero el texto a bytes UTF-8, por ejemplo con TextEncoder, y después a Base64.
Cuándo usarlo y cuándo no
Base64 es la herramienta adecuada cuando datos binarios tienen que viajar por un canal pensado para texto: cargas JSON y XML, correo, URI de datos y cabeceras HTTP. No sirve para ocultar datos, ni para reducirlos (siempre crecen), ni para guardar archivos grandes en una base de datos, donde una columna binaria o un almacenamiento de objetos son más pequeños y rápidos. Si el destino acepta bytes en bruto, envía bytes en bruto.
Pruébalo
El codificador Base64 de 4Dev convierte texto a Base64 mientras escribes. Usa UTF-8, así que las tildes, la ñ, los emoji y cualquier otro texto no inglés se codifican correctamente. Para el camino inverso, usa el decodificador Base64.