Cómo se usa
- 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.
- Deja la Codificación de texto en UTF-8, salvo que el sistema de destino espere otro juego de caracteres.
- 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.
- 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: base64no 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
-----BEGINy-----ENDusan 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
| Alfabeto | A-Z a-z 0-9 + / |
|---|---|
| Tamaño de salida | 4 caracteres por cada 3 bytes (aprox. 133%) |
| Relleno | Con = hasta un múltiplo de 4 caracteres |
| Estándar | RFC 4648, sección 4 |
| Distingue mayúsculas y minúsculas | Sí |
Ejemplos
| Entrada (UTF-8) | Salida |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ== |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Preguntas frecuentes
¿Por qué mi salida Base64 es distinta de la de otro codificador?
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?
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?
¿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.