Por qué existe Base64
Base64 se inventó para resolver un problema concreto: mover datos binarios a través de sistemas pensados solo para texto. Los protocolos de correo (SMTP), las cabeceras HTTP y muchos sistemas de almacenamiento se crearon para manejar caracteres ASCII imprimibles. Los datos binarios (imágenes, ejecutables, certificados) contienen valores de byte que esos sistemas malinterpretan como caracteres de control, saltos de línea o marcas de fin de cadena.
Base64 codifica cualquier dato binario usando solo 64 caracteres imprimibles: de la A a la Z, de la a a la z, del 0 al 9, más + y /. El resultado siempre se puede incrustar sin riesgo en formatos de texto.
Cómo funciona
Base64 toma 3 bytes de entrada (24 bits) y los convierte en 4 caracteres. Cada carácter representa 6 bits de los datos originales.
M= 77 = 01001101a= 97 = 01100001n= 110 = 01101110
Todo junto: 010011010110000101101110
Partido en grupos de 6 bits: 010011 | 010110 | 000101 | 101110
Cada grupo corresponde a un carácter del alfabeto Base64: T, W, F, u → TWFu
Como 3 bytes se convierten en 4 caracteres, Base64 aumenta el tamaño de los datos alrededor de un 33 %.
El carácter de relleno
Si la entrada no es divisible entre 3, Base64 rellena la salida con caracteres =. Un solo carácter de relleno significa que el último grupo tenía 2 bytes de entrada; dos caracteres, que tenía 1.
Man → TWFu (sin relleno)
Ma → TWE= (un relleno)
M → TQ== (dos rellenos)
Base64 seguro para URL
El Base64 estándar usa + y /, que son caracteres especiales en las direcciones web. La variante segura para URL los sustituye por - y _ respectivamente, y normalmente prescinde del relleno. La verás en los JWT, en los tokens de OAuth y en cualquier cosa pensada para viajar en una cadena de consulta.
Cuándo usar Base64
- Incrustar imágenes en HTML o CSS como URI de datos:
src="data:image/png;base64,iVBOR..." - Codificar datos binarios dentro de cargas JSON (JSON no tiene tipo binario)
- Enviar archivos adjuntos por correo (codificación MIME)
- Guardar claves criptográficas y certificados en formato PEM
- Codificar la cabecera y el contenido de un JWT
- Como forma de cifrado u ocultación: Base64 se revierte sin ningún esfuerzo
- Para "esconder" claves de API en el código del navegador, porque siguen siendo legibles
- Como acortador de URL o codificación de contraseñas: para eso hay que usar hashes de verdad
Errores habituales
**Error 1: tratar Base64 como si fuera cifrado.** No lo es. Cualquiera decodifica una cadena Base64 en segundos. Es codificación, no cifrado.
**Error 2: codificar dos veces.** Si aplicas Base64 a una cadena que ya está en Base64, obtienes un galimatías. Comprueba siempre la entrada antes de codificar.
**Error 3: usar Base64 estándar en una URL.** Los caracteres + y / se malinterpretan. Usa la variante segura para URL o codifica la salida con porcentajes.
**Error 4: olvidar el 33 % de tamaño extra.** Incrustar imágenes grandes como URI de datos infla mucho el peso de la página. Para imágenes de más de unos pocos kilobytes, casi siempre es mejor un archivo externo con su caché.
Decodificar Base64 en la práctica
El codificador y decodificador Base64 de NoxaKit hace las dos operaciones al instante en el navegador, muy útil para inspeccionar un JWT, depurar la respuesta de una API o mirar qué hay dentro de un certificado PEM. El visor de imágenes en Base64 decodifica las imágenes codificadas para que veas qué guarda realmente una URI de datos.