Codificar y decodificar Base64

Pega tu texto, elige dirección y formato y copia el resultado: esta herramienta convierte texto a Base64 o Base64url y viceversa (tildes, ñ y emojis se tratan correctamente como UTF-8) y hace la codificación URL con signos de porcentaje en sus tres variantes habituales. Si la entrada no es válida, te indica la posición del error.

Para decodificar, pega el texto en Base64 o con codificación por porcentaje. Los saltos de línea en Base64 se ignoran.

Tu texto se queda en tu navegador: no se envía, no se guarda y no aparece en la dirección de la página.

Resultado

Resultado
wqFTYWx1ZG9zIGRlc2RlIEPDoWRpeiB5IEJvZ290w6EhIPCfkYs=
Tamaño
32 caracteres = 38 bytes UTF-8 → 52 caracteres

Cómo se calcula

Base64 representa bytes cualesquiera con solo 64 caracteres imprimibles (A–Z, a–z, 0–9, + y /). Cada 3 bytes se convierten en 4 caracteres; si al final sobran bytes, uno o dos signos igual completan el hueco (el relleno o padding). El resultado es aproximadamente un tercio más largo que el original. Así, los datos binarios pueden viajar por canales que solo aceptan texto: adjuntos de correo, URL de datos (data:image/png;base64,…), autenticación HTTP Basic o JSON.

Base64 no es cifrado. Cualquiera puede recuperar el original sin clave. Nunca confíes en Base64 para proteger credenciales.

Base64 frente a Base64url

El signo más y la barra tienen un significado especial en las URL y en los nombres de archivo. Por eso Base64url (RFC 4648 § 5) los sustituye por el guion y el guion bajo, y normalmente omite el relleno; así se codifican los JSON Web Tokens (JWT). Ejemplo: los bytes FB FF se convierten en +/8= en Base64 y en -_8 en Base64url.

Por qué importa UTF-8

Base64 codifica bytes, no letras. Por eso la herramienta convierte primero tu texto a UTF-8: la «ñ» ocupa dos bytes y un emoji, cuatro. La función btoa() integrada en el navegador no sabe hacerlo y da error con caracteres que no son Latin-1. Si los bytes decodificados no forman texto UTF-8 válido, la herramienta los muestra como valores hexadecimales.

Codificación URL: tres variantes

Cada carácter fuera del conjunto permitido se escribe como % seguido de dos dígitos hexadecimales por cada byte UTF-8 (RFC 3986 § 2.1): espacio = %20, é = %C3%A9.

Todas las conversiones se hacen en tu navegador. Tu entrada no se envía, no se guarda y no se escribe en la barra de direcciones.

Preguntas frecuentes

¿Cómo decodifico Base64?

Elige «Decodificar» y el formato «Base64» y pega el código: el texto plano aparece al instante. Si el código contiene - y _, es Base64url; en ese caso elige ese formato.

¿Base64 es un cifrado?

No. Base64 es solo otra forma de escribir los mismos datos y se puede revertir sin clave. Para proteger datos necesitas un cifrado real y, para contraseñas, un hash de contraseñas.

¿Por qué Base64 termina a menudo en = o ==?

Base64 trabaja en grupos de 3 bytes. Si al final sobran 1 o 2 bytes, la salida se rellena con == o = para que su longitud sea múltiplo de 4. Base64url suele omitir ese relleno.

¿Qué diferencia hay entre encodeURI y encodeURIComponent?

encodeURI está pensado para direcciones completas y no toca / ? & = #. encodeURIComponent también los codifica y es la opción correcta para valores de parámetros sueltos; si no, un & dentro del valor partiría la URL.

¿Por qué un espacio a veces es %20 y a veces +?

En las rutas y según RFC 3986, un espacio se escribe %20. Los formularios HTML (application/x-www-form-urlencoded) lo escriben como +. Al decodificar tienes que saber qué variante tienes; allí un signo más real se escribe %2B.

¿Cuánto aumenta el tamaño de un archivo en Base64?

Unos 4/3 del tamaño original: 3 bytes se convierten en 4 caracteres. Una imagen de 300 KB ocupa unos 400 KB en Base64, algo más con los saltos de línea MIME.

Fuentes y base legal

Última actualización:

Herramientas relacionadas