Codificar texto y archivos en Base64

Convierte texto, bytes sin procesar o cualquier archivo a Base64. Elige el juego de caracteres que espera el destinatario, conserva o elimina el relleno = y ajusta las líneas a 76 o 64 caracteres para MIME y PEM.

Se ejecuta por completo en tu navegador. No se sube nada.

Cómo se usa

  1. Escribe o pega el texto que quieres codificar, cambia el Formato de entrada a Hexadecimal para codificar bytes sin procesar o haz clic en Abrir archivo para codificar un archivo.
  2. Deja la Codificación de texto en UTF-8, salvo que el sistema de destino espere otro juego de caracteres.
  3. Configura las opciones: mantén la variante Estándar para la mayoría de los casos, desactiva el Relleno si el destinatario no lo necesita y ajusta las líneas a 76 (MIME) o 64 (PEM) caracteres cuando haga falta.
  4. Copia la salida en Base64 o descárgala como archivo.

Cómo funciona la codificación Base64

El codificador lee la entrada de tres en tres bytes. Esos 24 bits se dividen en cuatro grupos de 6 bits, y cada valor de 6 bits (de 0 a 63) selecciona un carácter: A-Z para 0 a 25, a-z para 26 a 51, 0-9 para 52 a 61 y, por último, + y /. Entran tres bytes y salen cuatro caracteres; por eso Base64 ocupa aproximadamente un 33 % más que los datos originales.

Text     M        a        n
Bytes    77       97       110
Bits     01001101 01100001 01101110
6-bit    010011 010110 000101 101110
Index    19     22     5      46
Base64   T      W      F      u

Relleno y longitud de la salida

Cuando la longitud de la entrada no es múltiplo de tres, el último grupo queda incompleto. Un byte sobrante se convierte en dos caracteres seguidos de ==; dos bytes sobrantes, en tres caracteres y un =. Por tanto, la salida con relleno siempre tiene 4 × ceil(n / 3) caracteres para n bytes de entrada.

El relleno no contiene datos. Los JSON Web Tokens, los parámetros de URL y muchas API lo omiten, así que desactiva el Relleno cuando el sistema de destino espere una salida sin él. Para enlaces y nombres de archivo, elige la variante Segura para URL o usa la página Base64URL; ambas sustituyen + y / por - y _.

Ajuste de línea para MIME y PEM

De forma predeterminada, la salida es una sola línea larga, que es lo que necesitan JSON, los data URI y los encabezados HTTP. Hay dos formatos que esperan saltos de línea:

  • MIME, 76 caracteres. Los adjuntos de correo enviados con Content-Transfer-Encoding: base64 no deben tener líneas de más de 76 caracteres (RFC 2045). Esta opción termina las líneas con CRLF, como exige MIME.
  • PEM, 64 caracteres. Los certificados y las claves que van entre las líneas -----BEGIN y -----END usan líneas de 64 caracteres (RFC 7468). Esta opción usa finales de línea LF.

Juegos de caracteres y archivos

Base64 codifica bytes, no letras, así que primero el texto se convierte en bytes mediante un juego de caracteres. La letra é ocupa dos bytes en UTF-8, pero solo uno en ISO-8859-1 o Windows-1252, de modo que el mismo texto produce un Base64 distinto. UTF-8 es lo correcto para la web, JSON y casi cualquier API moderna; elige GBK, Shift_JIS, Windows-1251 u otro juego de caracteres solo para coincidir con un sistema heredado.

Los archivos se codifican exactamente tal como están almacenados, sin ninguna conversión de juego de caracteres. Para imágenes con fragmentos HTML y CSS listos para usar, consulta Imagen a Base64; para obtener un data URI con el tipo MIME detectado, usa Archivo a Base64.

Especificación

AlfabetoA-Z a-z 0-9 + /
Tamaño de salida4 caracteres por cada 3 bytes (aprox. 133%)
RellenoCon = hasta un múltiplo de 4 caracteres
EstándarRFC 4648, sección 4
Distingue mayúsculas y minúsculasSí

Ejemplos

Entrada (UTF-8)Salida
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

Preguntas frecuentes

¿Por qué mi salida Base64 es distinta de la de otro codificador?
Casi siempre se debe a que los bytes de entrada son distintos. Las causas típicas son un salto de línea final (el comando de shell echo añade uno; usa printf '%s' o echo -n), otro juego de caracteres, finales de línea de Windows en el texto o una configuración distinta de relleno, alfabeto o ajuste de línea. Los mismos bytes con las mismas opciones siempre dan la misma salida.
¿Cómo codifico texto Unicode en Base64 con JavaScript?
btoa() solo acepta caracteres hasta U+00FF y lanza un error con cualquier otro. Convierte primero la cadena a bytes UTF-8, por ejemplo con btoa(String.fromCharCode(...new TextEncoder().encode(str))). En Node.js, usa Buffer.from(str, 'utf8').toString('base64').
¿Cómo codifico en Base64 desde la línea de comandos?
Ejecuta printf '%s' 'your text' | base64 en Linux o macOS. GNU base64 divide la salida en líneas de 76 caracteres de forma predeterminada (añade -w 0 para obtener una sola línea), y openssl base64 la divide en líneas de 64 (añade -A).
¿La codificación Base64 es una forma de cifrado?
No. Base64 no tiene clave y cualquiera puede revertirlo con un decodificador Base64. Sirve para transportar datos binarios por canales que solo aceptan texto, no para ocultar información.
¿Cuánto aumenta Base64 el tamaño de mis datos?

Cada 3 bytes se convierten en 4 caracteres, redondeando hasta completar un grupo, así que la salida ocupa aproximadamente un 33 % más. El ajuste de línea MIME añade dos bytes más (CRLF) cada 76 caracteres.