🔄

Codificador y Decodificador Base64

Codifica o decodifica Base64 con soporte Unicode completo — árabe, kurdo, emoji, todo.

0 caracteres · 0 bytes

Tu resultado aparecerá aquí

0 caracteres · 0 bytes

Base64 siempre agranda los datos un ~33% — es el precio de volver seguro el binario como texto.

Base64 es una de las herramientas peor entendidas de la informática, y el malentendido tiene consecuencias. Es una codificación, no un cifrado. No revuelve nada ni protege nada: cualquiera puede decodificarlo al instante, que es exactamente el objetivo. Base64 existe para resolver un problema de fontanería: algunos sistemas solo pueden transportar texto plano, pero los datos que necesitas enviar son binarios. Los adjuntos de correo, las URI de datos, los JSON que contienen imágenes y los tokens JWT dependen de él para mover bytes arbitrarios por canales diseñados únicamente para caracteres legibles. Esta herramienta codifica y decodifica enteramente en tu navegador, así que nada de lo que pegues viaja a ningún sitio.

Cómo funciona el codificador

Pega texto en cualquiera de los campos: el codificador produce Base64 y el decodificador lo revierte. La codificación toma tres bytes de entrada a la vez, es decir 24 bits, y vuelve a repartir esos bits en cuatro grupos de seis. Cada grupo de 6 bits corresponde a un carácter de un alfabeto de 64: A–Z, a–z, 0–9, más `+` y `/`. Como solo hacen falta 64 símbolos y todos son ASCII seguro, el resultado sobrevive intacto a cualquier canal de solo texto. Todo se ejecuta localmente en tu navegador; no se transmite ningún dato.

Cómo funciona la codificación

3 bytes (24 bits) → 4 caracteres (6 bits cada uno) "Man" → 01001101 01100001 01101110 → 010011 010110 000101 101110 → 19 22 5 46 → T W F u = "TWFu" Aumento de tamaño = 4 ÷ 3 ≈ 133% del original Relleno: '=' completa los grupos incompletos

La proporción de 4 a 3 es la razón por la que Base64 siempre agranda los datos un 33%: gastas cuatro caracteres para transportar tres bytes. Esa sobrecarga es el precio de la compatibilidad. El relleno `=` aparece cuando la longitud de tu entrada no es divisible entre tres: un byte sobrante produce dos `=`, dos bytes sobrantes producen uno. También es la razón por la que incrustar una imagen grande como URI de datos infla tu HTML: una imagen de 100 KB se convierte en unos 133 KB de texto que no puede cachearse por separado.

Lo que conviene saber sobre Base64

  • 1Base64 no es seguridad. No aporta ninguna confidencialidad: decodificar es una llamada de función sin ninguna clave. Quien diga que los datos están «codificados por seguridad» ha entendido mal la herramienta. Si necesitas secreto, necesitas cifrado; Base64 es embalaje de transporte, no un candado.
  • 2Usa Base64 seguro para URL en las URL. El Base64 estándar usa `+` y `/`, que tienen significado especial en las URL y acaban destrozados por la codificación porcentual. La variante segura sustituye por `-` y `_`. Mezclar ambas es una fuente común y confusa de errores, porque la cadena parece válida pero decodifica a basura.
  • 3Las URI de datos son un compromiso real. Incrustar un icono pequeño como Base64 ahorra una petición HTTP, lo que compensa por debajo de unos pocos kilobytes. Los recursos mayores te cuestan: el archivo crece un 33%, no puede cachearse de forma independiente y bloquea el análisis del HTML. Por debajo de unos 2 KB es la regla habitual.
  • 4Los tokens JWT son Base64, no cifrado. La cabecera y la carga útil de cualquier JSON Web Token son Base64 plano y legibles por cualquiera que tenga el token: pega uno en un decodificador y verás las afirmaciones. La firma impide la manipulación, no la lectura. Nunca pongas secretos en la carga de un JWT.
  • 5Cuidado con la codificación de caracteres al manejar texto no ASCII. Base64 opera sobre bytes, no caracteres, así que el árabe, el chino o los emoji deben convertirse primero a bytes UTF-8. Esta herramienta lo hace correctamente, pero las implementaciones ingenuas que usan `btoa()` directamente lanzarán errores con cualquier carácter por encima del rango Latin-1.

Preguntas frecuentes

¿Base64 es cifrado?

No, y esta distinción importa. Base64 es una codificación pública y reversible sin clave. Cualquiera puede decodificar cualquier cadena Base64 al instante con cualquier herramienta, incluida esta. No ofrece confidencialidad alguna. Su propósito es la compatibilidad: mover datos binarios con seguridad por canales de solo texto. Usarlo para «esconder» una contraseña protege exactamente tanto como escribirla al revés.

¿Por qué Base64 agranda mis datos?

Porque gasta cuatro caracteres de salida para representar cada tres bytes de entrada, dando un aumento inevitable del 33%. Cada carácter de salida transporta solo 6 bits de información mientras ocupa un byte completo de 8 bits de almacenamiento: esos 2 bits perdidos por carácter son exactamente de donde sale la sobrecarga. Es el coste de restringirse a un alfabeto seguro e imprimible.

¿Qué son los signos '=' del final?

Relleno. Base64 procesa la entrada en grupos de 3 bytes, así que cuando la longitud de tus datos no es divisible entre tres, el último grupo queda incompleto y se rellena para mantener la salida en múltiplos de cuatro. Un byte sobrante produce dos `=`, dos bytes producen uno, y un múltiplo exacto de tres no produce ninguno. Algunas implementaciones omiten el relleno, lo cual es válido pero puede romper decodificadores estrictos.

¿Cuándo debo usar una URI de datos en lugar de un archivo?

Para recursos pequeños —por debajo de unos 2 KB— donde ahorrar una petición HTTP compensa el 33% de penalización de tamaño. Los iconos pequeños y los SVG en línea son buenos candidatos. Las imágenes grandes no: inflan tu HTML, no pueden cachearse aparte de la página y retrasan el renderizado. Un logo incrustado como URI de datos de 200 KB se descarga de nuevo en cada carga de página.

¿Se envían mis datos a un servidor?

No. Tanto la codificación como la decodificación corren enteramente en tu navegador con JavaScript. Nada se transmite, registra ni almacena. Puedes verificarlo desconectándote de internet: la herramienta sigue funcionando, porque no hay componente de servidor. Esto importa cuando decodificas un token o una carga útil que no deberías compartir.