Codificador Base64
Codifica texto a formato Base64 con seguridad UTF-8 para APIs, cabeceras y payloads
¿Qué es la Codificación Base64?
Base64 es un esquema de codificación binario-a-texto que representa datos binarios usando 64 caracteres ASCII imprimibles. Fue diseñado para transportar datos binarios a través de canales que solo soportan texto de manera confiable, como el correo electrónico (MIME), cabeceras HTTP y data URIs. La codificación utiliza los caracteres A–Z, a–z, 0–9, más (+) y barra (/), con signo igual (=) como padding. Cada 3 bytes de entrada producen exactamente 4 caracteres de salida, resultando en un aumento predecible del 33% en tamaño.
Cómo Funciona el Algoritmo de Codificación
Base64 opera sobre grupos de 3 bytes de entrada (24 bits en total). Estos 24 bits se dividen en cuatro grupos de 6 bits, y cada valor de 6 bits se mapea a uno de los 64 caracteres del alfabeto Base64. Cuando la longitud de entrada no es múltiplo de 3, el codificador añade padding con uno o dos signos igual para mantener la alineación de bloques de 4 caracteres.
Por ejemplo, la cadena ASCII "Hi" contiene 2 bytes. El codificador lee 16 bits, rellena con ceros hasta alcanzar 18 bits (tres grupos de 6 bits), y añade un "=" para señalar que se agregó un byte de padding. Este proceso determinista asegura que cualquier decodificador pueda reconstruir el binario original exactamente.
Los navegadores modernos implementan Base64 nativamente mediante btoa() y atob(),
pero estas funciones solo manejan caracteres Latin-1. Para texto UTF-8 — que incluye emojis, caracteres
CJK y letras acentuadas — primero debes codificar la cadena a una secuencia de bytes UTF-8 usando
TextEncoder antes de aplicar la codificación Base64.
Casos de Uso Comunes para Codificación Base64
- Data URIs: Inserta imágenes pequeñas, fuentes o SVGs directamente en HTML o CSS sin peticiones HTTP adicionales. El formato es
data:[mediatype];base64,[datos]. - Autenticación HTTP Basic: La cabecera Authorization transmite credenciales como
Base64(usuario:contraseña). Esto es codificación, no cifrado — siempre usa HTTPS junto con ella. - Adjuntos de correo (MIME): Los archivos binarios se codifican en Base64 para que puedan viajar a través de servidores SMTP que solo manejan texto ASCII de 7 bits.
- Payloads JSON: Las APIs que necesitan incluir blobs binarios (certificados, imágenes, objetos serializados) dentro de JSON usan cadenas Base64 ya que JSON no tiene tipo binario nativo.
- Almacenar binarios en bases de datos de texto: Sistemas como Redis, valores de atributos DynamoDB, o exportaciones CSV pueden almacenar de forma segura datos binarios codificados en Base64 como cadenas de texto.
Manejo de UTF-8 y Errores Comunes
Un error común es pasar caracteres multi-byte directamente a btoa(), lo que lanza
una DOMException para cualquier carácter fuera del rango Latin-1. El enfoque correcto es
primero convertir la cadena a un array de bytes UTF-8, luego codificar esos bytes. Esta herramienta
maneja esa conversión automáticamente, por lo que puedes pegar texto en cualquier idioma de forma segura —
incluyendo árabe, chino, japonés, coreano, emojis y símbolos matemáticos.
Al transmitir texto UTF-8 codificado en Base64, documenta la cadena de codificación claramente: "texto UTF-8 → bytes UTF-8 → cadena Base64". El receptor debe revertir ambos pasos para reconstruir el original. Omitir el paso UTF-8 produce mojibake (caracteres ilegibles) al decodificar.
Code Examples
Codificación Base64 segura para UTF-8 en JavaScript
// Encode UTF-8 text to Base64
function encodeBase64(text) {
const encoder = new TextEncoder();
const bytes = encoder.encode(text);
const binary = String.fromCharCode(...bytes);
return btoa(binary);
}
// Example usage
const encoded = encodeBase64('Hola Mundo 🌍');
console.log(encoded); // "SG9sYSBNdW5kbyDwn4yN"Standards & Specifications
- RFC 4648 — Define los alfabetos Base64 y Base64URL con reglas de padding
Preguntas Frecuentes
¿Para qué se usa la codificación Base64?
La codificación Base64 se usa para convertir datos binarios en formato de texto ASCII, haciéndolos seguros para transmitir por protocolos basados en texto como email, HTTP y JSON.
¿La codificación Base64 cifra mis datos?
¡No! Base64 es un esquema de codificación, no cifrado. Cualquiera puede decodificar datos Base64. Nunca uses Base64 solo para proteger información sensible.
¿Por qué Base64 hace los datos más grandes?
La codificación Base64 aumenta el tamaño aproximadamente un 33% porque representa 3 bytes usando 4 caracteres ASCII.
¿Se envían mis datos a un servidor?
No, toda la codificación ocurre en tu navegador. Tus datos nunca salen de tu dispositivo.