Codificador y Decodificador Base64
Codifica y decodifica texto en Base64.
¿Cómo funciona la codificación Base64?
Base64 transforma datos binarios en texto ASCII utilizando un alfabeto de 64 caracteres. El proceso funciona así: los datos de entrada se dividen en bloques de 3 bytes (24 bits). Cada bloque se subdivide en 4 grupos de 6 bits. Cada grupo de 6 bits (que puede representar valores del 0 al 63) se mapea a un carácter del alfabeto Base64: las letras A-Z (0-25), a-z (26-51), los dígitos 0-9 (52-61), y los caracteres + (62) y / (63).
Si la longitud de la entrada no es múltiplo exacto de 3 bytes, se aplica padding con el carácter =. Si sobra 1 byte, se añaden dos ==; si sobran 2 bytes, se añade un =. Por ejemplo, el texto «Hola» (4 bytes) se codifica como SG9sYQ==: los primeros 3 bytes producen SG9s y el byte restante produce YQ== con padding.
Variantes de Base64: estándar, URL-safe y MIME
Base64 estándar (RFC 4648): usa el alfabeto A-Z, a-z, 0-9, +, / con padding =. Es la variante más común y la que implementan las funciones btoa() yatob() de los navegadores. Se usa en la mayoría de contextos generales.
Base64 URL-safe (RFC 4648 §5): reemplaza + por - y/ por _, porque los caracteres originales tienen significado especial en URLs (+ se interpreta como espacio y / como separador de ruta). Además, suele omitir el padding =. Los tokens JWT usan esta variante para codificar sus segmentos header y payload, al igual que muchas APIs que incluyen datos codificados en parámetros de URL.
Base64 MIME (RFC 2045): usa el mismo alfabeto que la variante estándar, pero inserta un salto de línea cada 76 caracteres. Es el formato utilizado en emails para codificar archivos adjuntos y contenido no ASCII dentro del protocolo SMTP, que tiene restricciones de longitud de línea.
Casos de uso comunes de Base64
Data URIs en HTML y CSS: puedes incluir imágenes pequeñas directamente en tu código usando data:image/png;base64,.... Esto elimina una petición HTTP adicional, lo que puede mejorar el rendimiento para iconos y gráficos pequeños (generalmente menores de 5-10 KB). Para imágenes más grandes, la sobrecarga del 33% de Base64 hace que sea más eficiente cargarlas como archivos separados.
Tokens JWT (JSON Web Tokens): un JWT consta de tres partes separadas por puntos, donde el header y el payload están codificados en Base64url. Esto permite transmitir datos estructurados como JSON dentro de una cadena de texto compacta que puede incluirse en headers HTTP, cookies o URLs.
Autenticación HTTP Basic: el esquema de autenticación Basic combina usuario y contraseña en el formato usuario:contraseña y lo codifica en Base64 para incluirlo en el header Authorization. Es importante recordar que esto no proporciona seguridad — solo es un formato de transporte, y siempre debe usarse sobre HTTPS.
Emails y archivos adjuntos (MIME): el protocolo SMTP para envío de emails solo soporta texto ASCII de 7 bits. Para enviar archivos adjuntos (imágenes, PDFs, documentos), el contenido binario se codifica en Base64 dentro de una estructura MIME que el cliente de correo decodifica automáticamente al recibir el mensaje.
El overhead del 33%: cuándo importa y cuándo no
Cada 3 bytes de datos originales se convierten en 4 caracteres Base64, lo que representa un incremento del 33% en tamaño. Para un token de autenticación de 100 bytes, los 33 bytes adicionales son insignificantes. Pero para una imagen de 1 MB, el resultado de 1.37 MB significa 370 KB extra que se transfieren innecesariamente por la red.
Como regla general: usa Base64 para datos menores de 5-10 KB (iconos SVG, tokens, configuraciones pequeñas) donde eliminar una petición HTTP adicional compensa la sobrecarga. Para datos más grandes, transmítelos en formato binario nativo, que es más eficiente tanto en tamaño como en velocidad de codificación/decodificación.
Cuándo NO usar Base64
No lo uses como seguridad: Base64 es una codificación, no un cifrado. Cualquier persona puede decodificar una cadena Base64 sin clave. No protege contraseñas, tokens sensibles ni datos confidenciales. Para seguridad real, usa cifrado (AES, RSA) o hashing (SHA-256, bcrypt).
No lo uses para archivos grandes: codificar un video de 100 MB en Base64 produce 133 MB de texto, es más lento de procesar y consume más memoria. Los protocolos modernos (HTTP/2, WebSocket) soportan transferencia binaria eficiente.
No lo uses en bases de datos si hay alternativas: la mayoría de bases de datos tienen tipos de datos binarios nativos (BLOB en MySQL, bytea en PostgreSQL, Buffer en MongoDB) que son más eficientes que almacenar strings Base64. Reserva Base64 para campos de texto donde no haya otra opción, o para datos pequeños donde la simplicidad compensa la sobrecarga.
Preguntas frecuentes
Base64 es un sistema de codificación que convierte datos binarios en texto ASCII utilizando un alfabeto de 64 caracteres (A-Z, a-z, 0-9, + y /). Funciona tomando los datos de entrada en grupos de 3 bytes (24 bits) y dividiéndolos en 4 grupos de 6 bits. Cada grupo de 6 bits se mapea a uno de los 64 caracteres del alfabeto. Si la entrada no es múltiplo de 3 bytes, se añade padding con el carácter = al final para completar el último grupo.
No, Base64 no es cifrado ni encriptación. Es una codificación completamente reversible que cualquier persona puede decodificar sin necesidad de clave o contraseña. Su propósito es representar datos binarios como texto, no proteger información. Nunca uses Base64 para ocultar contraseñas, tokens sensibles o datos confidenciales. Si necesitas seguridad, usa cifrado real como AES-256 o hashing como SHA-256.
La codificación Base64 aumenta el tamaño de los datos exactamente un 33% (ratio 4:3), porque cada 3 bytes de entrada se convierten en 4 caracteres de salida. Un archivo de 1 MB se convierte en ~1.37 MB en Base64. Con el encoding MIME (que añade saltos de línea cada 76 caracteres), el incremento es ligeramente mayor. Por esto, Base64 solo es recomendable para datos pequeños como iconos, tokens o configuraciones.
Base64 estándar usa los caracteres + y / que tienen significado especial en URLs (+ se interpreta como espacio, / como separador de ruta). La variante URL-safe reemplaza + por - y / por _ para que la cadena pueda incluirse directamente en URLs sin necesidad de escape. Los tokens JWT, por ejemplo, usan Base64url (URL-safe sin padding) para codificar sus segmentos header y payload.
Sí. Nuestra herramienta soporta UTF-8 completo, incluyendo acentos (á, é, ñ), caracteres especiales de cualquier idioma, y emojis. Internamente, el texto se convierte primero a bytes UTF-8 y luego esos bytes se codifican en Base64. Al decodificar, el proceso se invierte: los bytes Base64 se interpretan como UTF-8 para recuperar el texto original con todos sus caracteres especiales intactos.
Evita Base64 en estos casos: para archivos grandes (imágenes mayores de 5-10 KB, documentos, videos) donde el 33% de overhead es significativo y es mejor transmitir en binario; como método de seguridad (no es cifrado); para almacenar datos en bases de datos cuando puedes usar campos de tipo BLOB o bytea; y en APIs de alto rendimiento donde el overhead de codificar y decodificar cada petición se acumula. En general, si puedes transmitir los datos en formato binario nativo, es preferible hacerlo.