Codificar y decodificar Base64

Codifica texto en Base64 o decodifica Base64 a texto, con soporte completo de UTF-8 y una opción segura para URL.

Funciona 100% en tu navegador. Nada de lo que pegas se sube ni se guarda.
Texto o Base64
Resultado
Listo.

Cómo usar el codificador y decodificador Base64

  1. Elige Codificar para convertir texto en Base64, o Decodificar para convertir Base64 de nuevo en texto.
  2. 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.
  3. Activa la opción Seguro para URL si el resultado va en una URL, un nombre de archivo o un JWT.
  4. 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:

PasoValor
BytesM=77, a=97, n=110
24 bits01001101 01100001 01101110
Grupos de 6 bits010011 010110 000101 101110 = 19, 22, 5, 46
Base64TWFu

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:password codificado en Base64. user:pass se convierte en Authorization: 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.
Consejo: En la línea de comandos, 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

Copiado al portapapeles