¿Qué es Base64?
Base64 es una forma de codificar datos binarios en texto puro. Usa 64 caracteres imprimibles (A-Z, a-z, 0-9, +, /) para representar cualquier dato binario, permitiendo que los binarios se transmitan por canales que solo soportan texto (como JSON, XML, URL, correo).
Principio de codificación
Tabla de caracteres
Base64 usa 64 caracteres: mayúsculas A-Z (26), minúsculas a-z (26), dígitos 0-9 (10), signo más +, barra /, en total 64. El signo igual = se usa como relleno al final.
Proceso de codificación
- Agrupar los datos de entrada en bloques de 3 bytes (24 bits)
- Dividir los 24 bits en 4 grupos, cada uno de 6 bits
- Cada 6 bits corresponde a un carácter Base64 (2 elevado a 6 = 64, exactamente 64 caracteres)
- Si faltan bytes para completar 3, se rellena con =
Ejemplo
3 bytes de entrada (24 bits) → 4 caracteres Base64. Por tanto, el número de bytes codificados es 4/3 del original, es decir, aproximadamente 133%, un aumento del 33%.
¿Por qué crece 33%?
Esencialmente, 1 byte puede representar 256 valores (8 bits), pero cada carácter Base64 solo representa 64 valores (6 bits). Para representar la misma cantidad de información, la codificación de 6 bits necesita 8/6 = 4/3 veces más caracteres que la de 8 bits. Por tanto, el tamaño tras la codificación Base64 es 4/3 del original, un aumento del 33%.
Este es el coste inherente de Base64 — intercambiar espacio por "transmisión como texto".
Ejemplo de codificación
Texto "Man" (3 bytes ASCII):
- M = 77 = 01001101
- a = 97 = 01100001
- n = 110 = 01101110
- Combinar en 24 bits: 01001101 01100001 01101110
- Dividir en 4 grupos de 6 bits: 010011 010110 000101 101110
- Caracteres Base64 correspondientes: T W F u
- Resultado de codificación: TWFu
3 bytes se convierten en 4 bytes, exactamente 4/3.
Variantes de Base64
Base64 estándar
La tabla de caracteres incluye + y /, con relleno = al final. Adecuado para uso general.
Base64 seguro para URL
- y / tienen significados especiales en URL, se sustituyen por - y _. Adecuado para transmisión en URL.
Base64URL
Variante segura para URL, comúnmente usada en JWT (JSON Web Token).
Base64 vs Base32 vs Hex
Base64
- Conjunto de 64 caracteres
- Aumenta 33% tras la codificación
- Incluye letras mayúsculas y minúsculas, números y +/, distingue mayúsculas y minúsculas
Base32
- Conjunto de 32 caracteres (A-Z, 2-7)
- Aumenta 60% tras la codificación
- No distingue mayúsculas y minúsculas, evita caracteres confusos, adecuado para entrada manual
Hex (hexadecimal)
- Conjunto de 16 caracteres (0-9, a-f)
- Aumenta 100% tras la codificación (cada byte se convierte en dos caracteres)
- El más simple y compatible, pero duplica el tamaño
Tamaño: Hex > Base32 > Base64. Si quieres pequeño, elige Base64; si quieres compatibilidad y simplicidad, elige Hex.
¿Es Base64 un cifrado?
No. Base64 es codificación, no cifrado. Cualquiera puede decodificarlo, no hay protección por clave. Usar Base64 como cifrado es un grave error — solo "disfraza" los datos como texto confuso, al decodificar se obtiene el texto plano.
Para cifrar datos sensibles usa algoritmos de cifrado como AES; Base64 solo se usa para codificación de transmisión.
Casos de uso
Transmisión de datos
Transmitir datos binarios por canales de texto (JSON, XML, URL, correo), codificándolos en texto con Base64.
Incrustar imágenes pequeñas
Codificar imágenes pequeñas en Base64 e incrustarlas en HTML/CSS para reducir peticiones HTTP (ver usos de imágenes Base64).
JWT
JSON Web Token usa Base64URL para codificar el header y el payload.
Data URI
El protocolo data URL usa Base64 para incrustar recursos.
Basic Auth
La autenticación HTTP Basic usa Base64 para codificar usuario y contraseña (ten en cuenta que no es cifrado, debe usarse con HTTPS).
Codificar y decodificar con DocsAll
La herramienta de codificación y decodificación Base64:
- Introducir texto o cadena Base64
- Elegir codificar o decodificar
- Convertir con un clic
- Copiar el resultado
Se procesa en el navegador, los datos no se transmiten al exterior.
Errores comunes
Confundir con cifrado
Base64 no es cifrado; no protejas datos sensibles solo con Base64.
Aumento de tamaño tras la codificación
La codificación Base64 de archivos grandes aumenta el tamaño un 33%, incrementando los costes de transmisión y almacenamiento. Si puedes usar un canal binario, no uses Base64.
Confusión de conjuntos de caracteres
El Base64 estándar contiene +/; al ponerlo en una URL hay que escaparlo o usar la variante segura para URL. Mezclar variantes provoca fallos de decodificación.
El = final no se puede omitir
El carácter de relleno = es parte de la codificación; omitirlo puede causar errores de decodificación. Algunas implementaciones toleran la omisión, pero no es estándar.
Resumen
Base64 es codificación, no cifrado; usa 64 caracteres para representar datos binarios, y el aumento del 33% de tamaño es un coste inherente. Su propósito es permitir que los datos binarios se transmitan por canales de texto. En contextos de URL usa la variante segura para URL. La herramienta de codificación/decodificación de DocsAll se ejecuta en el navegador, los datos no se transmiten al exterior.