¿Qué es Base64?
Base64 es un esquema de codificación que convierte datos binarios en texto ASCII usando 64 caracteres imprimibles (A-Z, a-z, 0-9, +, /). Se usa ampliamente para transmitir datos binarios a través de medios que solo soportan texto, como email (MIME) y URLs.
¿Cómo funciona la codificación Base64?
La codificación Base64 funciona dividiendo la entrada en grupos de 3 bytes (24 bits) y convirtiendo cada grupo en 4 caracteres de 6 bits. Cuando el número de bytes no es múltiplo de 3, se añaden caracteres de relleno (=) al final.
Ejemplo de conversión:
Texto original: "ABC"
Binario: 01000001 01000010 01000011
Agrupado (6 bits): 010000 010100 001001 000011
Decimal: 16 20 9 3
Base64: "QUJD"
¿Para qué sirve Base64?
1. Incorporar Imágenes en HTML/CSS: Las Data URLs permiten incluir imágenes directamente en el código sin peticiones HTTP adicionales.
<img src="data:image/png;base64,iVBORw0KGg..." />2. Transmisión de Datos Binarios en JSON: Las APIs REST frecuentemente usan Base64 para enviar archivos o datos binarios en payloads JSON.
3. Autenticación HTTP Basic: Las credenciales se codifican en Base64 en el header Authorization.
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=4. Email (MIME): Los adjuntos en emails se codifican en Base64 para garantizar compatibilidad con servidores que solo soportan ASCII de 7 bits.
5. Almacenamiento Temporal: Almacenar datos binarios en cookies, localStorage o sessionStorage.
Ventajas y Desventajas
✓ Ventajas
- • Compatible con sistemas que solo aceptan texto ASCII
- • Fácil de transmitir por email, URL y JSON
- • Soportado nativamente en todos los lenguajes
- • Seguro para copiar/pegar sin perder datos
✗ Desventajas
- • Aumenta el tamaño en ~33% (overhead)
- • No es encriptación (no ofrece seguridad)
- • Costo de CPU para encode/decode
- • No es legible por humanos
Base64 vs Otros Esquemas
| Esquema | Caracteres | Overhead | Uso Común |
|---|---|---|---|
| Base64 | A-Z, a-z, 0-9, +, / | ~33% | Email, JSON, Data URLs |
| Base64URL | A-Z, a-z, 0-9, -, _ | ~33% | URLs, JWT tokens |
| Hexadecimal | 0-9, A-F | 100% | Hashes, colores CSS |
| Base32 | A-Z, 2-7 | ~60% | TOTP, códigos de respaldo |
Casos de uso prácticos
🖼️ Data URL para favicon
Incorpore un favicon inline sin petición HTTP externa:
🔑 HTTP Basic Auth
Enviar credenciales en peticiones HTTP:
const credentials = btoa('usuario:contraseña');
headers.Authorization = `Basic ${credentials}`;📧 Adjunto de email
Los protocolos SMTP usan Base64 para adjuntos, garantizando que caracteres especiales no corrompan el mensaje durante la transmisión.
Base64 NO es encriptación
⚠️ Advertencia Importante
Base64 es un esquema de codificación, no encriptación. Cualquier persona puede decodificar Base64 instantáneamente. Nunca use Base64 para proteger contraseñas, tokens o datos sensibles. Para seguridad real, use algoritmos de encriptación como AES, RSA o bcrypt.
FAQ - Preguntas Frecuentes
1. ¿Por qué Base64 aumenta el tamaño del archivo?
Porque convierte 3 bytes (24 bits) en 4 caracteres de 6 bits cada uno. Esto genera un overhead de aproximadamente 33%. Un archivo de 1 MB se convierte en ~1.33 MB en Base64.
2. ¿Qué significa el "=" al final de las cadenas Base64?
El signo "=" es relleno, añadido cuando el número de bytes de entrada no es múltiplo de 3. Puede haber 0, 1 o 2 caracteres "=" al final.
3. ¿Se puede usar Base64 para URLs?
Base64 estándar usa "+", "/" y "=" que son caracteres especiales en URLs. Use Base64URL (reemplaza + por -, / por _ y elimina relleno) para URLs seguras.
4. ¿Cómo convertir imágenes a Base64?
En JavaScript: use FileReader API. Línea de comandos: base64 image.png. En Python: base64.b64encode().
5. ¿Base64 soporta caracteres Unicode?
¡Sí! Nuestra herramienta usa encodeURIComponent para soportar UTF-8, incluyendo emojis y caracteres acentuados.
6. ¿Cuál es la diferencia entre btoa() y atob()?
btoa() = binary to ASCII (codifica). atob() = ASCII to binary (decodifica). Son funciones nativas de JavaScript del navegador.