Decodificar y codificar Base64

Pega Base64 para leerlo, o escribe texto o elige un archivo para codificarlo. UTF-8 se maneja bien, se entienden los dos alfabetos y el relleno que falta, y una entrada no válida se señala en el carácter donde falla.

Dirección
Se ignoran los saltos de línea y los espacios. Valen el alfabeto estándar y el URL-safe, con o sin relleno =, y también una data URL (data:).

Pega Base64 en el cuadro para decodificarlo.

Base64 está por todas partes en el trabajo con servidores: secretos de Kubernetes, claves SSH, cabeceras de autenticación básica, certificados. ¿Buscas el servidor en sí? Desde 3,02 € al mes hoy, entre 2226 servidores.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo funciona Base64

Base64 escribe cualquier secuencia de bytes con 64 caracteres seguros, de modo que los datos binarios puedan viajar por sistemas hechos para texto: correo electrónico, JSON, URL, cabeceras HTTP. Cada 3 bytes (24 bits) se convierten en 4 caracteres de 6 bits. Cuando los datos no se dividen en grupos de 3, el último grupo es más corto y los signos = lo completan hasta 4 caracteres.

M        a        n
01001101 01100001 01101110
010011 010110 000101 101110
T      W      F      u        →  TWFu

Primero el texto se convierte en bytes, y esta página usa UTF-8 para ello, la codificación que casi todos los sistemas esperan. Por eso «é» se convierte aquí en w6k=; la función btoa() del propio navegador falla con esos caracteres. La variante URL-safe de la RFC 4648 cambia + y / por - y _, que no necesitan escape en direcciones ni en nombres de archivo, y a menudo omite el relleno. Los JSON Web Token la usan.

Al decodificar, la página acepta los dos alfabetos, el relleno ausente, los saltos de línea y el prefijo de una data URL. Si un carácter no es Base64, indica cuál es y dónde está. Si los bytes no son texto UTF-8 válido, se muestran en hexadecimal, con una descarga que deduce el tipo de archivo por sus primeros bytes.

Ejemplo

La palabra «foobar» son 6 bytes, así que se codifica en 8 caracteres sin relleno: Zm9vYmFy. «fooba» son 5 bytes y lleva un «=»: Zm9vYmE=. «f» sola se convierte en Zg==. Son los valores de prueba de la RFC 4648.

Preguntas

¿Base64 es cifrado?

No. Base64 es una codificación: cualquiera puede decodificarla sin clave, igual que hace esta página. No oculta nada. Una contraseña en una cabecera de autenticación básica o en un secreto de Kubernetes está solo codificada en Base64, así que protégela con HTTPS y reglas de acceso, no con la codificación.

¿Por qué Base64 ocupa más que el original?

Cada 3 bytes se convierten en 4 caracteres, así que el resultado es aproximadamente un 33 % mayor, más hasta dos signos =. Los saltos de línea cada 76 caracteres, como en el correo electrónico, añaden algo más. Es el precio de usar solo caracteres de texto seguros.

¿Qué es Base64 URL-safe?

La variante definida en la sección 5 de la RFC 4648. Usa - y _ en lugar de + y /, que tienen significados especiales en las URL y en los nombres de archivo, y a menudo omite el relleno =. Los JSON Web Token y muchas API la usan. Esta página decodifica ambas y codifica con cualquiera de las dos mediante la opción de arriba.

¿Por qué al decodificar salen caracteres extraños?

O los datos no son texto, como una imagen, un archivo comprimido o una clave, o el texto se codificó con un juego de caracteres distinto de UTF-8. Esta página muestra los datos binarios en hexadecimal y te deja descargarlos como archivo. Si ves algunas letras mal en un texto por lo demás legible, probablemente el origen usó Latin-1 o Windows-1252.

¿Cómo decodifico Base64 en la línea de comandos?

En Linux: echo 'Zm9vYmFy' | base64 -d. En macOS: base64 -D, o base64 --decode en versiones recientes. Para codificar un archivo: base64 -w 0 file en Linux para una sola línea larga, base64 -i file en macOS. En PowerShell: [Convert]::FromBase64String('Zm9vYmFy').