Cargando aplicación...
Preparando tu experiencia meskeIA
Codifica y decodifica texto, imágenes y archivos
Historia, estándares y aplicaciones prácticas de la codificación Base64 en desarrollo web
| Esquema | Caracteres usados | Overhead | Casos de uso | Padding | Limitaciones |
|---|---|---|---|---|---|
| Base64 estándar (RFC 4648) | A–Z, a–z, 0–9, +, / | +33% | Email MIME, adjuntos, datos binarios generales | = (obligatorio) | + y / rompen URLs; no válido en nombres de archivo |
| Base64 URL-safe | A–Z, a–z, 0–9, -, _ | +33% | JWT, parámetros URL, cookies, OAuth tokens | = (opcional, suele omitirse) | Incompatible con decodificadores estándar sin conversión previa |
| Base64 MIME/email | A–Z, a–z, 0–9, +, / | +33% | Adjuntos de correo, Content-Transfer-Encoding | = (obligatorio) + saltos de línea cada 76 chars | Saltos de línea obligatorios; mayor tamaño real en email |
| Base32 | A–Z, 2–7 (32 caracteres) | +60% | TOTP/2FA, códigos que el usuario transcribe en voz alta | = (obligatorio) | Overhead muy alto; solo útil cuando la legibilidad humana importa |
| Base58 (Bitcoin) | Sin 0, O, I, l (para evitar confusiones) | +37% | Direcciones Bitcoin, hashes IPFS, identificadores legibles | No tiene | No estándar RFC; implementaciones propietarias; sin padding |
Incrusta iconos pequeños (<5 KB) directamente en CSS/HTML como Data URLs para eliminar peticiones HTTP adicionales. Ideal para el logo del favicon o iconos SVG críticos above-the-fold.
background: url('data:image/svg+xml;base64,...')
Tip: Por encima de 5 KB, un archivo externo cacheado siempre será más eficiente.
Codifica el header y el payload de los JWT en Base64url para que puedan viajar de forma segura en cabeceras HTTP Authorization, parámetros de URL y cookies sin necesidad de percent-encoding.
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
Recuerda: Base64url NO es cifrado. Cualquiera puede decodificar el payload; la seguridad la da la firma HMAC.
Transfiere archivos binarios (certificados, claves, configuraciones) a través de protocolos que solo aceptan texto (SMTP, XML, variables de entorno en CI/CD, secretos de Kubernetes).
base64 certificado.pem | kubectl create secret generic...
En pipelines CI/CD, los secretos binarios como certificados TLS se almacenan habitualmente como Base64 en variables de entorno.
Serializa imágenes de perfil, firmas digitales o documentos escaneados dentro de payloads JSON para APIs REST que no admiten multipart. Habitual en apps de banca móvil y OCR.
{ "foto": "data:image/jpeg;base64,/9j/4AAQ..." }
Para imágenes grandes (>100 KB), valora subir el archivo a un bucket (S3/R2) y enviar solo la URL en el JSON.
Base64 es un sistema de codificación que convierte datos binarios arbitrarios en una cadena de caracteres ASCII imprimibles. Su utilidad principal es permitir que datos binarios (imágenes, PDFs, claves) puedan viajar por canales que solo admiten texto, como el protocolo SMTP del correo electrónico, atributos HTML o cuerpos JSON.
Creado en los años 80 para el protocolo MIME, sigue siendo el estándar universal para incrustar binarios en texto.
No. Base64 es una codificación reversible que cualquiera puede deshacer en milisegundos sin necesitar ninguna clave. No añade ninguna capa de seguridad o privacidad. Para proteger datos usa cifrado real (AES-256, RSA) o hashing con sal (bcrypt, Argon2) según el caso.
Un error muy frecuente: ocultar datos sensibles en Base64 creyendo que están "codificados". No lo están; solo están ofuscados.
Exactamente un 33,33%. Base64 convierte cada 3 bytes originales en 4 caracteres ASCII (cada carácter representa 6 bits, no 8). Además, puede añadir 1 o 2 caracteres = de padding si los datos no son múltiplos de 3 bytes. En archivos reales el overhead real es siempre entre 33% y 37%.
Usa Base64url cuando necesites codificar datos binarios (como un hash o un token de 32 bytes) en una URL. Usa URL encoding cuando necesites escapar texto plano con caracteres especiales (espacios, tildes) en una URL. Son herramientas para propósitos distintos: Base64 convierte binario a texto; URL encoding escapa caracteres especiales en texto ya legible.
Un JSON Web Token (JWT) tiene tres partes separadas por puntos: header.payload.signature. Tanto el header como el payload son objetos JSON codificados en Base64url (no cifrados). La firma es un HMAC o RSA calculado sobre las dos primeras partes. Puedes decodificar el payload sin clave —es público— pero solo el servidor con la clave secreta puede generar y verificar la firma.
Decodifica el payload de un JWT con esta misma herramienta: copia la segunda parte (entre los dos puntos) y haz clic en "Decodificar Base64".
En las URLs, el carácter + se interpreta como espacio y el / como separador de segmentos de ruta. Si un token Base64 estándar contiene estos caracteres y se incluye en una URL sin escapar, el servidor lo interpretará incorrectamente. Base64url los reemplaza por - y _ respectivamente, que no tienen significado especial en URLs y no necesitan percent-encoding.
Nunca. Almacenar contraseñas en Base64 es un error de seguridad gravísimo. Como Base64 es 100% reversible, cualquier atacante que acceda a tu base de datos obtendrá las contraseñas en texto plano al instante. Las contraseñas deben procesarse con funciones de hashing específicas y lentas: bcrypt, Argon2id o PBKDF2 con un número de iteraciones alto y un salt único por usuario.
Evita Base64 cuando: (1) el archivo supera 10–20 KB (usa multipart/form-data o URLs de objeto en almacenamiento en la nube), (2) los datos ya son texto legible (codificar UTF-8 normal en Base64 es redundante y ocupa más), (3) necesitas caching eficiente (un Data URI no se puede cachear por separado del documento), (4) el rendimiento es crítico (codificar/decodificar Base64 consume CPU adicional), (5) los datos son contraseñas o secretos (ver pregunta anterior).
btoa(texto) para texto Latin-1. Para texto Unicode (tildes, emojis): btoa(unescape(encodeURIComponent(texto))). En Node.js: Buffer.from(datos).toString('base64') para cualquier tipo de dato.data:image/png;base64,iVBORw0KGgo.... Puedes asignarlo directamente a src de una imagen o a background-image en CSS.data:[tipo-mime];base64,[datos]. Si omites el prefijo, el navegador no sabrá cómo interpretar los datos. El tipo MIME correcto es esencial para imágenes, PDFs y cualquier otro tipo de archivo.El + y / del Base64 estándar se interpretan como espacio y separador de ruta en URLs. Para tokens, hashes o cualquier dato en parámetros de URL, cookies o cabeceras HTTP usa la variante url-safe (- y _) para evitar errores silenciosos.
Por debajo de 5 KB, un Data URI puede ahorrar una petición HTTP. Por encima, el incremento del 33% de tamaño, la imposibilidad de cachear el recurso por separado y el impacto en el parsing del HTML hacen que un archivo estático servido por CDN sea siempre más eficiente.
Una cadena Base64 en el código fuente sin comentario es indistinguible de texto aleatorio. Añade siempre un comentario indicando qué tipo de dato contiene, cuándo se generó y con qué variante. Esto ahorra horas de depuración a futuros colaboradores.
El tipo MIME en un Data URI es declarativo: cualquier usuario puede poner data:image/png;base64, seguido de un ejecutable. Tras decodificar en el servidor, verifica los primeros bytes del archivo para confirmar el tipo real antes de procesarlo o almacenarlo.
Un archivo .png externo se cachea en el navegador con su propio TTL y se reutiliza en múltiples páginas. Un Data URI se descarga de nuevo con cada documento que lo incluye. Para imágenes que aparecen en varias páginas, el archivo externo es siempre la mejor opción.
Base64 no oculta, no protege ni asegura nada. Si un dato es sensible (contraseñas, claves API, datos personales), aplica cifrado real (AES-256-GCM) o hashing seguro (bcrypt, Argon2id). Base64 es transporte, no seguridad.