Cómo usar el codificador y decodificador Base64
- Elige Codificar para convertir texto en Base64, o Decodificar para convertir Base64 de nuevo en texto.
- Pega tu entrada. El texto se trata como UTF-8, así que las letras con tilde, los alfabetos no latinos y los emojis funcionan correctamente.
- Activa la opción Seguro para URL si el resultado va en una URL, un nombre de archivo o un JWT.
- Copia la salida.
La codificación y la decodificación se hacen en local, en tu navegador; nada de lo que pegas se sube ni se guarda.
Cómo funciona Base64
Base64, definido en la RFC 4648, representa datos binarios arbitrarios con 64 caracteres ASCII imprimibles: A–Z, a–z, 0–9, + y /. Existe para que el contenido binario pueda circular con seguridad por sistemas pensados para texto, como el correo electrónico, JSON, XML y las cabeceras HTTP.
El algoritmo toma la entrada en bloques de 3 bytes (24 bits) y los divide en cuatro grupos de 6 bits. Cada valor de 6 bits (0–63) selecciona un carácter del alfabeto. La palabra Man muestra el proceso:
| Paso | Valor |
|---|---|
| Bytes | M=77, a=97, n=110 |
| 24 bits | 01001101 01100001 01101110 |
| Grupos de 6 bits | 010011 010110 000101 101110 = 19, 22, 5, 46 |
| Base64 | TWFu |
Como cada 3 bytes se convierten en 4 caracteres, la salida en Base64 es aproximadamente un 33 % más grande que la entrada (más los saltos de línea, si un formato como MIME los inserta).
Relleno con =
Cuando la longitud de la entrada no es múltiplo de tres, el último grupo se rellena. Un byte sobrante produce dos caracteres más ==; dos bytes sobrantes producen tres caracteres más =. Por ejemplo, Hi se codifica como SGk=.
Base64 seguro para URL
Los caracteres estándar + y / tienen un significado especial en las URL y las rutas de archivo. La RFC 4648 §5 define el alfabeto base64url, que los sustituye por - y _. A menudo se omite el relleno. Los JSON Web Tokens usan base64url sin relleno.
Estándar: +/8=
Seguro para URL: -_8
Errores habituales
Base64 no es cifrado
Cualquiera puede decodificar Base64 al instante; no hay clave. No lo uses nunca para «ocultar» contraseñas o claves de API. Para comprobar la integridad, usa un hash del generador de hash, y para la confidencialidad, usa un cifrado de verdad.
UTF-8 en JavaScript
La función btoa() integrada en el navegador solo acepta caracteres del rango Latin-1 y lanza un error con cualquier otro. Convierte primero el texto a bytes UTF-8:
btoa("✓"); // InvalidCharacterError
const bytes = new TextEncoder().encode("✓");
btoa(String.fromCharCode(...bytes)); // "4pyT"
Mezclar alfabetos
Decodificar datos base64url con un decodificador estándar estricto falla con - y _, o si falta el relleno. Convierte el alfabeto y vuelve a añadir el relleno hasta un múltiplo de cuatro caracteres antes de decodificar.
Dónde encontrarás Base64
- Los data URI incrustan archivos pequeños directamente en HTML o CSS:
data:image/png;base64,iVBORw0KGgo... - La autenticación HTTP Basic envía
username:passwordcodificado en Base64.user:passse convierte enAuthorization: Basic dXNlcjpwYXNz, que se revierte sin ningún esfuerzo, así que la autenticación Basic solo debe usarse con HTTPS. Puedes inspeccionar esas cabeceras con el comprobador de cabeceras HTTP. - Los archivos adjuntos de correo (MIME) y los certificados y claves PEM.
- Los JWT, cuya cabecera y carga útil son JSON codificado en base64url. Usa el decodificador de JWT para leerlos.
printf 'text' | base64 codifica y base64 -d decodifica (las versiones antiguas de macOS usan -D). Usa printf o echo -n para que no se codifique también un salto de línea final.Preguntas frecuentes
¿Por qué mi cadena Base64 termina en = o ==?
Es el relleno. Indica al decodificador cuántos bytes contenía el último grupo cuando la longitud de la entrada no era divisible entre tres.
¿Es seguro Base64?
No. Es una codificación, no un cifrado. No ofrece ninguna confidencialidad; solo permite transportar datos binarios como texto de forma segura.
¿Por qué la salida codificada es más grande que la entrada?
Cada carácter Base64 transporta 6 bits en lugar de 8, así que 3 bytes de entrada necesitan 4 caracteres de salida, un aumento de aproximadamente un tercio.
¿Qué diferencia hay entre Base64 y base64url?
Solo cambian dos caracteres: base64url usa - y _ en lugar de + y /, y normalmente omite el relleno =, así que el resultado se puede poner en URL sin más escapado.
Actualizado