Conversor de Base64

Escribe un texto para obtener su Base64, o pega Base64 para ver qué contiene. No hace falta decir en qué dirección vas, y si lo que sale es una imagen o un archivo, lo mostramos como tal.

Dirección
o suéltalo en este recuadro. 10 MB como máximo.
Al codificar, escribir

El resultado aparece mientras escribes. Los textos y los archivos se convierten dentro de esta página y no se nos envían. Base64 es una forma de escribir bytes como letras, no un cifrado: cualquiera puede decodificarlo.

Enviar bytes por canales hechos para texto

El correo electrónico se diseñó para cartas en inglés sencillo. Las primeras direcciones web también, y hoy lo mismo ocurre con JSON y XML. Una foto, un PDF o una clave criptográfica están hechos de bytes arbitrarios, y para un canal así, muchos de esos bytes significan algo especial o no significan nada. Si los empujas tal cual, llegan dañados.

Base64 es el atajo. Reescribe cualquier secuencia de bytes con 64 caracteres inofensivos: A a Z, a a z, 0 a 9, + y /. Todos los archivos adjuntos de correo viajan así. También las imágenes incrustadas en una hoja de estilos y los tokens que mantienen tu sesión iniciada.

Tres bytes se convierten en cuatro caracteres

Un byte tiene 8 bits, y uno de 64 caracteres puede representar 6 bits. Así que el codificador toma 3 bytes (24 bits) cada vez y los corta en cuatro grupos de 6 bits. Cada grupo elige un carácter del alfabeto.

text     M        a        n
bytes    01001101 01100001 01101110
6 bits   010011 010110 000101 101110
Base64   T      W      F      u

Esto tiene dos efectos secundarios. La salida es un tercio más larga que la entrada, un 33 % aproximadamente, algo más con saltos de línea. Y cuando la entrada no es divisible entre 3, el último grupo se completa con uno o dos signos =, llamados relleno (padding). Ma da TWE= y M da TQ==. El relleno no lleva datos, por eso algunos sistemas lo omiten.

Estándar, URL-safe, MIME

VarianteCaracteres 63 y 64RellenoDónde te la encuentras
Estándar+ /SíData URI, autenticación HTTP Basic, claves PEM
URL-safe (Base64URL)- _Normalmente ningunoJSON Web Tokens, enlaces, nombres de archivo
MIME+ /SíArchivos adjuntos de correo, con un salto de línea cada 76 caracteres

Al decodificar, esta herramienta acepta todas a la vez: cualquiera de los dos alfabetos, con relleno o sin él, con espacios y saltos de línea en cualquier parte. Después te dice qué variante vio. Los caracteres fuera del alfabeto se listan con su posición y se omiten. Una longitud que deja un carácter de sobra se marca. Un solo carácter contiene 6 bits y no puede formar un byte, así que algo se cortó.

El texto son bytes primero

Base64 codifica bytes, no letras, así que el texto tiene que convertirse en bytes antes de que pase nada más. Esta herramienta usa UTF-8, la codificación de casi toda la web. En UTF-8 una letra latina sin acento ocupa 1 byte, é ocupa 2, la mayoría de los caracteres chinos o japoneses ocupan 3 y un emoji ocupa 4. Por eso é solo se convierte en w6k=.

El error clásico es saltarse ese paso. En JavaScript, btoa("é") devuelve 6Q==, el byte Latin-1, y btoa("👍") lanza un error. A la vuelta, atob() te entrega é donde antes había é. La solución es TextEncoder antes de codificar y TextDecoder después de decodificar.

Cuando los bytes decodificados no son UTF-8 válido, la herramienta no te escupe basura. Mira los primeros bytes, que identifican la mayoría de los formatos de archivo (se reconocen PNG, JPEG, GIF, WebP, PDF, ZIP y gzip), previsualiza una imagen, ofrece el resultado como archivo y muestra el comienzo en hexadecimal.

No oculta nada

Base64 no tiene clave ni secreto. Decodificar es la misma receta leída al revés, y todos los lenguajes de programación la incluyen. Una contraseña “protegida” con Base64 es una contraseña en texto claro con pasos de más. Toma la cabecera HTTP Authorization: Basic dXNlcjpwYXNz, que cualquiera puede convertir de nuevo en user:pass.

Una URI data: como data:image/png;base64,iVBORw0… mete un archivo entero dentro de una dirección. Para un icono diminuto, eso ahorra una petición. Para cualquier cosa más grande pagas el 33 % extra y el archivo ya no puede guardarse en caché por separado.

Preguntas frecuentes

¿Base64 es cifrado?

No. Es una codificación, una forma pública y reversible de escribir bytes con 64 caracteres imprimibles. No hay clave, así que cualquiera puede decodificarlo. Úsalo para transportar datos, nunca para protegerlos.

¿Por qué Base64 termina con uno o dos signos igual?

El codificador trabaja con grupos de 3 bytes. Cuando el último grupo solo tiene 1 o 2 bytes, la salida se completa con == o = para que su longitud siga siendo múltiplo de 4. Los signos no llevan datos, y el Base64 URL-safe suele omitirlos.

¿Cuál es la diferencia entre Base64 y Base64URL?

Dos caracteres. El Base64 estándar usa + y /, que tienen significado en las direcciones web. Base64URL los cambia por - y _ y suele quitar el relleno =. Los datos de dentro son los mismos.

¿Por qué los acentos o los emoji salen mal después de decodificar?

El decodificador leyó los bytes con la codificación de texto equivocada, normalmente Latin-1 cuando el texto era UTF-8. Es entonces cuando ves é en lugar de é. Decodifica los bytes como UTF-8 (en JavaScript, con TextDecoder) y el texto vuelve intacto.

¿Cuánto más grande es un archivo en Base64?

Un 33 % aproximadamente, ya que cada 3 bytes se convierten en 4 caracteres. Una imagen de 300 KB pasa a ser unos 400 KB de texto, más un 2,6 % cuando las líneas se parten a 76 caracteres para el correo.

¿Cómo convierto una imagen en una data URI?

Suelta la imagen en la herramienta. Obtienes el Base64 y una dirección data:image/…;base64,… completa para pegar en un atributo src o en un url() de CSS. Reserva esto para imágenes pequeñas de unos pocos kilobytes.