¿Qué es Base64 y para qué sirve?
Base64 es un sistema de codificación que representa cualquier dato binario —una imagen, un PDF, un texto con caracteres especiales— usando únicamente 64 caracteres imprimibles y seguros: las letras A–Z y a–z, los dígitos 0–9 y los símbolos + y / (más el = como relleno final). Nació para transportar datos binarios por canales diseñados solo para texto, como el correo electrónico (MIME), y hoy se usa constantemente en desarrollo web: imágenes incrustadas en CSS y HTML, tokens JWT, cabeceras de autenticación HTTP Basic, adjuntos en JSON o XML y claves en archivos de configuración.
Este codificador y decodificador de Base64 online trabaja en dos direcciones y con dos tipos de entrada: texto (con soporte completo de UTF-8, incluidos acentos, la ñ y emojis) y archivos de hasta 10 MB, que puede convertir a Base64 puro o a un data URL listo para pegar en tu código. También reconstruye archivos a partir de un Base64 o data URL que le pegues. Todo ocurre en tu navegador.
Cómo funciona: 3 bytes se convierten en 4 caracteres
El mecanismo de Base64 es sencillo: toma los datos de entrada en grupos de 3 bytes (24 bits) y los divide en 4 bloques de 6 bits. Cada bloque de 6 bits es un número entre 0 y 63, que se sustituye por el carácter correspondiente del alfabeto Base64:
Si la longitud de los datos no es múltiplo de 3, el último grupo se completa y el resultado se rellena con uno o dos caracteres =. Por eso una cadena Base64 estándar siempre tiene una longitud múltiplo de 4, y por eso el resultado ocupa aproximadamente un 33% más que el dato original.
| Valor (6 bits) | Caracteres |
|---|---|
| 0 – 25 | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
| 26 – 51 | a b c d e f g h i j k l m n o p q r s t u v w x y z |
| 52 – 61 | 0 1 2 3 4 5 6 7 8 9 |
| 62 | + (en la variante URL-safe: -) |
| 63 | / (en la variante URL-safe: _) |
| Relleno | = (uno o dos al final, según falten bytes) |
Un ejemplo clásico: el texto Hola son 4 bytes, que Base64 convierte en SG9sYQ== — 8 caracteres, con dos = de relleno porque el último grupo solo tenía 1 byte.
Por qué btoa() a secas falla con la ñ y los emojis
Si alguna vez has probado btoa("año") en la consola del navegador, habrás visto el error «The string to be encoded contains characters outside of the Latin1 range». La razón es que btoa solo acepta caracteres cuyo código sea menor de 256 (Latin-1), y caracteres como ñ, € o cualquier emoji quedan fuera.
La solución correcta —la que usa esta herramienta— es convertir primero el texto a bytes UTF-8 con TextEncoder, y codificar esos bytes. En la decodificación se hace el camino inverso: atob devuelve los bytes y TextDecoder los interpreta como UTF-8:
Decodificar: atob → Uint8Array → TextDecoder → texto
Así, ñ€😀 se codifica como w7Higqzwn5iA y vuelve intacto al decodificarlo. Además, esta herramienta procesa los bytes por bloques, de modo que también funciona con textos muy largos sin desbordar la pila de llamadas del navegador, y al decodificar tolera saltos de línea, espacios y la variante URL-safe (- y _), corrigiendo el relleno automáticamente.
Data URLs: archivos incrustados en tu código
Un data URL es una forma de incrustar un archivo completo dentro de una URL, con esta estructura:
El prefijo indica el tipo MIME del archivo (image/png, application/pdf…) y a continuación va el contenido codificado en Base64. Se usan mucho para:
- Iconos e imágenes pequeñas incrustados en CSS o HTML, evitando peticiones HTTP adicionales.
- Fuentes web embebidas directamente en la hoja de estilos.
- Adjuntar archivos en JSON cuando una API no admite subida binaria.
- Previsualizar archivos generados en el navegador sin pasar por un servidor.
La pestaña «Archivo» de esta herramienta genera el data URL completo (o solo el Base64, si desmarcas la casilla) y muestra el tamaño original y el codificado, para que valores si compensa incrustarlo: recuerda que el Base64 pesa un 33% más y no se cachea de forma independiente, así que no conviene para archivos grandes.
Importante: Base64 NO es cifrado
Es un error muy común —y peligroso— confundir codificar con cifrar. Base64 no protege absolutamente nada: es una transformación pública, reversible y sin clave. Cualquier persona que vea una cadena Base64 puede decodificarla en un segundo con una herramienta como esta.
- Nunca guardes contraseñas «en Base64»: equivale a guardarlas en texto plano. Las contraseñas deben almacenarse con funciones de hashing diseñadas para ello (bcrypt, scrypt, Argon2).
- Nunca envíes datos sensibles «ocultos» en Base64: un token, una clave de API o datos personales codificados en Base64 están tan expuestos como sin codificar. Si necesitas confidencialidad, usa cifrado real (por ejemplo AES) y transporta los datos por HTTPS.
- Ojo con los JWT: el contenido (payload) de un token JWT va en Base64 URL-safe, no cifrado. Cualquiera puede leerlo; la firma solo impide modificarlo. No metas secretos en el payload de un JWT.
En resumen: Base64 sirve para transportar datos por canales de texto, no para protegerlos. Trátalo siempre como si fuera texto plano visible.
Funciones de esta herramienta
- Codificar texto a Base64 con soporte UTF-8 completo: acentos, ñ, símbolos como € y emojis.
- Decodificar Base64 a texto, tolerando saltos de línea, espacios y la variante URL-safe, con corrección automática del relleno.
- Errores claros: si el Base64 no es válido, te lo dice sin romperse.
- Convertir archivos de hasta 10 MB a Base64 o data URL, con tamaños original y codificado.
- Reconstruir archivos desde un Base64 o data URL, detectando el tipo MIME para darles la extensión correcta.
- Copiar, intercambiar y descargar los resultados con un clic.
Preguntas frecuentes
¿Qué es Base64?
Base64 es un sistema de codificación que representa datos binarios usando solo 64 caracteres imprimibles: letras mayúsculas y minúsculas, dígitos y los símbolos + y /. Se usa para transportar datos binarios por canales que solo aceptan texto, como correos electrónicos, JSON, XML o atributos HTML.
¿Base64 es un método de cifrado?
No. Base64 es una codificación reversible, no un cifrado: cualquier persona puede decodificarla al instante sin necesidad de clave ni contraseña. Nunca uses Base64 para proteger contraseñas ni información sensible; para eso necesitas cifrado real como AES, o hashing con sal para contraseñas.
¿Por qué el Base64 ocupa más que el dato original?
Base64 convierte cada grupo de 3 bytes en 4 caracteres, por lo que el resultado ocupa aproximadamente un 33% más que el dato original, más el posible relleno con el carácter =. Es el precio de poder representar cualquier dato binario usando solo texto seguro.
¿Funciona con acentos, la letra ñ y emojis?
Sí. Esta herramienta convierte primero el texto a bytes UTF-8 con TextEncoder y después lo codifica, por lo que caracteres como ñ, á, € o los emojis se codifican y decodifican sin errores. Las funciones btoa y atob del navegador, usadas a secas, fallan con estos caracteres.
¿Qué es la variante Base64 URL-safe?
Es una variante que sustituye + por - y / por _ para poder incluir el resultado en URLs y nombres de archivo sin escaparlo, y que suele omitir el relleno =. Se usa por ejemplo en los tokens JWT. Esta herramienta la detecta y decodifica automáticamente, corrigiendo también el relleno que falte.
¿Se suben mis textos o archivos a algún servidor?
No. Toda la codificación y decodificación se realiza en tu propio navegador con JavaScript nativo (TextEncoder, TextDecoder, btoa, atob y FileReader). Ni tus textos ni tus archivos se envían a Internet, por lo que puedes trabajar con datos sensibles con tranquilidad.