📋 Contenidos
Qué Es Base64? La Explicación en 30 Segundos
Base64 es una forma de convertir datos binarios (bytes) en texto (caracteres ASCII). Toma cualquier dato — una imagen, un PDF, un string Unicode, una clave criptográfica — y lo representa usando solo 64 caracteres "seguros": A-Z, a-z, 0-9, +, y / (además de = para relleno).
Por qué 64 caracteres? Porque 2⁶ = 64. Cada carácter Base64 codifica exactamente 6 bits de datos. Tres bytes (24 bits) se convierten en cuatro caracteres Base64. Por eso la salida Base64 siempre es ~33% más grande que la entrada.
El objetivo es la seguridad. Los datos binarios pueden contener bytes que no son válidos en protocolos basados en texto (bytes nulos, caracteres de control, bytes por encima de 127). Base64 mapea todo a un conjunto de caracteres universalmente seguro que sobrevive intacto al correo electrónico, JSON, XML, URLs y copiar y pegar.
Cómo Funciona Realmente la Codificación Base64
Codifiquemos la palabra "Man" paso a paso:
Paso 1: Convierte cada carácter a su valor ASCII en bytes M → 77, a → 97, n → 110 Paso 2: Escribe la cadena binaria de 24 bits (3 bytes × 8 bits) 01001101 01100001 01101110 Paso 3: Divide en grupos de 6 bits (24 bits ÷ 6 = 4 grupos) 010011 010110 000101 101110 Paso 4: Convierte cada grupo de 6 bits a decimal 010011 = 19, 010110 = 22, 000101 = 5, 101110 = 46 Paso 5: Mapea cada decimal al alfabeto Base64 Índice: 0=A, 1=B, ... 25=Z, 26=a ... 51=z, 52=0 ... 61=9, 62=+, 63=/ 19=T, 22=W, 5=F, 46=u Resultado: "Man" → "TWFu"
Cuando la entrada no es múltiplo de 3 bytes, entra en juego el relleno. Un byte extra → dos caracteres Base64 + "==". Dos bytes extra → tres caracteres Base64 + "=". El relleno le indica al decodificador cuántos bytes debe descartar.
| Entrada | Binario (agrupado) | Salida Base64 |
|---|---|---|
| "M" (1 byte) | 010011 01[0000 000000] | TQ== |
| "Ma" (2 bytes) | 010011 010110 0001[00 000000] | TWE= |
| "Man" (3 bytes) | 010011 010110 000101 101110 | TWFu |
Ese es el algoritmo completo. Grupos de 6 bits, tabla de búsqueda, relleno para no-múltiplos-de-3. Lo suficientemente simple como para implementarlo en 20 líneas de código — y ampliamente implementado en la biblioteca estándar de todos los lenguajes.
Cuándo Usar Base64 (Y Cuándo NO)
✅ Buenos usos de Base64
- Incrustar binarios en protocolos de texto — Archivos adjuntos de correo (MIME), JSON Web Tokens, payloads XML. En cualquier lugar donde el transporte espere texto pero tengas bytes.
- Data URIs — Incrustar imágenes pequeñas directamente en HTML/CSS:
<img src="data:image/png;base64,iVBOR...">. Evita una solicitud HTTP adicional para recursos pequeños. - Tokens de autenticación de API — HTTP Basic Auth codifica
usuario:contraseñacomo Base64. Nota: esto NO es cifrado, solo codificación. - Strings binarios cortos en URLs — La variante Base64URL reemplaza + por - y / por _, y elimina el relleno =. Seguro para parámetros de URL.
- Almacenar binarios en JSON — JSON no puede contener bytes sin procesar. Codifica en Base64, almacena como string, decodifica en el otro extremo.
❌ Malos usos de Base64
- Cifrado — Base64 es codificación, no cifrado. Seguridad cero. Cualquiera puede decodificarlo. "Cifrar con Base64" es una frase de alerta.
- Archivos grandes — Codificar un archivo de 10MB como Base64 produce un string de texto de ~13.3MB. Ese 33% de sobrecarga se acumula. Usa transferencia binaria para payloads grandes.
- Almacenamiento en bases de datos — Almacenar imágenes como Base64 en una columna de base de datos es común pero generalmente incorrecto. 33% más grande, no se puede consultar, no se puede mostrar sin decodificar. Almacena blobs binarios o usa almacenamiento de objetos.
- Compresión — Base64 hace los datos más grandes, no más pequeños. Si intentas reducir el tamaño, comprime primero (gzip/brotli), luego codifica en Base64 la salida comprimida.
4 Lugares Donde Encuentras Base64 a Diario
1. Archivos Adjuntos de Correo (MIME)
Cada archivo adjunto que hayas enviado o recibido fue codificado en Base64. SMTP fue diseñado en 1982 para texto ASCII de 7 bits. Base64 convierte tu PDF, imagen o ZIP en caracteres seguros de 7 bits que sobreviven en cualquier servidor de correo del mundo.
2. JSON Web Tokens (JWTs)
Un JWT tiene este aspecto: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNGl1HaS3d4-ZEJVhM6Q0m0sRgFPah28vY7Fgzg. Las tres secciones separadas por puntos son JSON codificado en Base64URL (cabecera, payload, firma). Nuestro Decodificador de JWT decodifica estas secciones para que puedas inspeccionar su contenido.
3. Data URIs en CSS y HTML
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0i...);
Esto incrusta un SVG directamente en CSS. Sin archivo separado, sin solicitud HTTP. Ideal para iconos y logos pequeños. Pésimo para fotos (strings Base64 enormes, anula el caché). Para imágenes, usa nuestra herramienta Imagen a Base64.
4. Autenticación HTTP Básica
El navegador envía Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Ese string se decodifica a usuario:contraseña (en el ejemplo en inglés era username:password). De nuevo: NO está cifrado. Cualquiera en la red puede decodificarlo. Usa Basic Auth solo sobre HTTPS.
Cómo Codificar/Decodificar Base64 al Instante
No necesitas escribir código para tareas puntuales de Base64:
- Codificador/Decodificador Base64 — Pega texto y codifica/decodifica al instante. Maneja Base64 estándar y Base64URL. Sin cuenta, sin subida de archivos, funciona en tu navegador.
- Línea de comandos:
echo -n "hola" | base64(Linux/macOS) o[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("hola"))(PowerShell). - Consola del navegador:
btoa("hola")para codificar,atob("aG9sYQ==")para decodificar.
Para imágenes específicamente, usa nuestra herramienta Imagen a Base64 para convertir cualquier imagen a una data URI que puedes pegar directamente en HTML o CSS.