Codificador / Decodificador Base64

Codifica texto a Base64 o decodifica Base64 de vuelta a texto — compatible con UTF-8, todo en tu navegador.

1.268 visitas

Cómo Funciona

Base64 convierte datos binarios en texto plano usando un alfabeto de 64 caracteres imprimibles: A-Z, a-z, 0-9, más + y / (64 símbolos son exactamente 2⁶, por eso se llama Base64). El codificador lee la entrada de 3 bytes (24 bits) en 3 bytes, divide esos 24 bits en cuatro fragmentos de 6 bits y asigna cada fragmento de 6 bits a un carácter del alfabeto — así que 3 bytes de binario siempre se convierten en exactamente 4 caracteres de texto. Si la longitud de la entrada no es un múltiplo exacto de 3, el último grupo se rellena con uno o dos caracteres = para mantener la longitud de salida como múltiplo de 4.

En concreto: los tres bytes que forman "Man" (77, 97, 110 — 01001101 01100001 01101110 en binario) se reagrupan en cuatro fragmentos de 6 bits (010011, 010110, 000101, 101110), cada uno asignado a un carácter, produciendo TWFu. Como cada 3 bytes de entrada siempre se expanden a 4 caracteres de salida, los datos codificados en Base64 son de forma fiable alrededor de un 33% más grandes que el original — una imagen de 300 KB se convierte en una cadena Base64 de unos 400 KB, algo que importa al incrustar imágenes como URIs data: o al adjuntar archivos binarios dentro de JSON o correo electrónico.

Esta herramienta maneja Unicode correctamente codificando primero el texto en UTF-8, de modo que los caracteres multibyte y los emojis ("çğü 😀") hacen el viaje de ida y vuelta intactos — una llamada ingenua a btoa() de JavaScript lanza un error con ellos porque espera un byte por carácter. Todo se ejecuta localmente en tu navegador; nada de lo que escribes se envía a ningún sitio.

Base64 aparece constantemente en lugares que la mayoría de la gente nunca nota: una etiqueta HTML <img src="data:image/png;base64,..."> incrusta una imagen entera directamente en lugar de enlazar a un archivo; la cabecera HTTP Authorization: Basic transporta una cadena "usuario:contraseña" codificada en Base64 (solo formato, no protección — es el TLS lo que realmente mantiene la privacidad en tránsito); los adjuntos de correo electrónico se codifican en Base64 desde el estándar MIME original, porque SMTP se diseñó para transportar texto de 7 bits, no binario puro; y los JSON Web Tokens (JWT) usan la variante segura para URL para empaquetar una estructura binaria firmada en tres segmentos de texto separados por puntos.

Qué Debes Saber

  • Base64 no es cifrado — es una representación reversible y públicamente conocida, sin ningún secreto. Cualquiera puede decodificarla al instante con el mismo alfabeto; existe únicamente para que los datos binarios puedan transportarse con seguridad por canales de solo texto (adjuntos MIME de correo, URIs data, campos JSON, cabeceras HTTP Basic-Auth), nunca para ocultar contenido.
  • Variante segura para URL: como + y / tienen un significado especial en las URL, un alfabeto Base64 "seguro para URL" los sustituye por - y _ y a menudo omite el relleno =. Esta herramienta decodifica automáticamente ambas variantes.
  • El coste de tamaño es fijo y predecible: la expansión de ~33% (proporción 4/3) es exacta para la propia carga útil — por eso las API que aceptan cargas binarias sin procesar suelen ser más eficientes en ancho de banda que las que requieren cuerpos JSON envueltos en Base64.
  • El relleno indica el resto: un = significa que la longitud original de los datos era 2 bytes más que un múltiplo de 3; dos = significan 1 byte más. Ningún relleno significa que la entrada era un múltiplo exacto de 3 bytes.

Preguntas Frecuentes

¿Por qué mi salida decodificada se ve corrupta?

Normalmente porque la entrada no era Base64 válido (truncada, o con caracteres seguros para URL -_ en lugar de +/), o porque los bytes originales no eran texto en absoluto. Esta herramienta decodifica automáticamente las variantes seguras para URL.

¿Puedo codificar archivos?

Esta herramienta es para texto. Para archivos, el patrón habitual es una URI data:, que envuelve la cadena Base64 con un prefijo de tipo MIME para que un navegador o cliente de correo sepa cómo mostrarla — la mayoría de los lenguajes ofrecen soluciones de una línea para crearla (PHP base64_encode(file_get_contents(...)), JS FileReader.readAsDataURL). Los archivos muy grandes suelen ser mejores enviados como binario sin procesar en lugar de envueltos en Base64, dado el ~33% de sobrecarga de tamaño.

¿Es seguro Base64 para contraseñas?

No — es trivialmente reversible por diseño, sin ninguna clave o secreto implicado. La autenticación HTTP Basic lo usa solo para el formato de transporte (empaquetando "usuario:contraseña" en una cadena segura para cabeceras) y depende por completo de TLS/HTTPS para la confidencialidad real en tránsito. Guarda las contraseñas con hash mediante un algoritmo lento y con sal (bcrypt, argon2, scrypt) — nunca codificadas, y nunca en Base64, que cualquiera puede revertir en una línea de código.

¿Por qué la salida codificada en Base64 es siempre alrededor de un 33% más grande que la entrada?

Porque la codificación asigna cada 3 bytes (24 bits) de entrada a 4 caracteres de salida, y cada carácter de salida solo transporta 6 bits de información en lugar de los 8 bits de un byte — es una proporción de expansión fija de 4/3, no algo que varíe según el contenido. Un archivo de 3 MB se convierte cada vez en una cadena Base64 de aproximadamente 4 MB.

¿Cuál es la diferencia entre el Base64 estándar y la variante "segura para URL"?

El Base64 estándar usa + y / en su alfabeto, ambos con un significado reservado dentro de las URL y las rutas de archivo, así que una variante segura para URL los sustituye por - y _ (y a menudo omite el relleno =) para que la cadena codificada pueda colocarse directamente en una URL o nombre de archivo sin necesidad de escape. Esta herramienta reconoce y decodifica automáticamente ambas variantes.

Comentarios

Aún no hay comentarios — ¡sé el primero en escribir uno!

Herramientas Similares