
Base64 es un esquema de codificación binario a texto que representa datos binarios usando únicamente 64 caracteres ASCII imprimibles: A–Z, a–z, 0–9 y los símbolos + y /, con = como relleno. El objetivo es transmitir datos binarios de forma segura a través de sistemas diseñados para manejar texto: protocolos de correo electrónico, URLs, cargas útiles JSON y atributos HTML.
Es importante entender que Base64 no es cifrado. No ofrece ninguna seguridad. Cualquiera que vea datos codificados en Base64 puede decodificarlos al instante. Su propósito es la codificación para un transporte seguro, no la ocultación.
El algoritmo toma cada 3 bytes (24 bits) de entrada y los divide en cuatro grupos de 6 bits. Cada grupo de 6 bits se corresponde con uno de los 64 caracteres del alfabeto Base64. Como 3 bytes de entrada se convierten en 4 caracteres de salida, la codificación Base64 incrementa el tamaño de los datos aproximadamente un 33%.
Si la longitud de la entrada no es divisible entre 3, se añaden caracteres de relleno (= o ==) a la salida para que la longitud total sea múltiplo de 4. Esto permite a los decodificadores identificar correctamente la longitud de los datos originales.
URI de datos en desarrollo web: puedes incrustar imágenes, fuentes u otros archivos binarios directamente en HTML o CSS codificándolos en Base64. Por ejemplo, un icono pequeño puede incrustarse como <img src="data:image/png;base64,iVBORw0K...">, eliminando una petición HTTP. Esto es útil para recursos pequeños, pero resulta poco práctico para archivos grandes debido al aumento de tamaño.
Adjuntos de correo electrónico: el estándar MIME utiliza Base64 para codificar archivos adjuntos binarios (imágenes, PDF, etc.) en texto que puede viajar por servidores SMTP, que fueron diseñados para manejar texto ASCII. Cada vez que adjuntas un archivo a un correo, Base64 está actuando entre bastidores.
Almacenamiento de datos binarios en JSON o XML: estos formatos están basados en texto y no pueden representar de forma nativa datos binarios arbitrarios. Cuando una API necesita transmitir un archivo, una imagen o material criptográfico como parte de una respuesta JSON, la codificación Base64 es la solución estándar.
Autenticación básica en HTTP: el esquema HTTP Basic Auth codifica las credenciales en Base64 en la cabecera Authorization: Authorization: Basic dXNlcjpwYXNz. Una vez más, esto no es cifrado. Solo debe usarse sobre HTTPS.
Claves criptográficas y certificados: el formato PEM, ampliamente usado para certificados TLS y claves SSH, envuelve datos binarios codificados en DER en Base64 entre las cabeceras -----BEGIN CERTIFICATE----- y -----END CERTIFICATE-----.
El Base64 estándar usa + y /, que tienen significados especiales en las URLs. El Base64 seguro para URLs sustituye - por + y _ por /, haciendo que la cadena codificada sea segura para incluir en una URL sin codificación porcentual. Encontrarás esta variante en JWTs (JSON Web Tokens) y flujos OAuth.
La decodificación invierte el proceso exactamente. Cada grupo de 4 caracteres Base64 se vuelve a convertir en 3 bytes de datos binarios. La mayoría de los lenguajes de programación tienen soporte Base64 integrado:
btoa(str) para codificar, atob(str) para decodificar (navegador); Buffer.from(str, 'base64') en Node.jsimport base64; base64.b64encode(data) y base64.b64decode(data)echo -n "hello" | base64 y echo "aGVsbG8=" | base64 --decodeBase64 no es adecuado cuando necesitas seguridad real: usa en su lugar cifrado apropiado. También añade sobrecarga, así que no lo uses para transferencias binarias grandes donde hay disponible un flujo binario directo. Cuando almacenes datos en una base de datos que admite tipos de columnas binarias (BLOB, BYTEA), almacenar binario puro es más eficiente que texto codificado en Base64.
Entender Base64 te ayuda a leer documentación de APIs, depurar tráfico de red y trabajar con confianza con certificados, tokens y archivos multimedia: una habilidad fundamental para cualquier desarrollador web.
Abre el codificador y decodificador Base64 gratuito: convierte texto o datos binarios al instante. Se ejecuta completamente en tu navegador; nada se envía a un servidor.