"Está en Base64, así que va encriptado". Esa frase, muy repetida, es falsa, y puede costar caro: Base64 no protege nada. Es una forma de escribir cualquier dato como texto, igual de pública que el dato original. En esta guía verás cómo funciona, para qué sirve de verdad (y es mucho), por qué cualquiera puede decodificarlo en un segundo, y qué usar cuando lo que necesitas es proteger información.
Qué es Base64
Los archivos y muchos datos son binarios: secuencias de bytes que no corresponden a letras. Hay sitios por los que esos bytes no pueden viajar tal cual —el cuerpo de un correo, una cabecera HTTP, un JSON, una URL, una hoja de estilos— porque esperan texto. Base64 resuelve eso: toma los bytes de tres en tres (24 bits), los reparte en cuatro grupos de 6 bits y representa cada grupo con uno de 64 caracteres "seguros": A-Z, a-z, 0-9, + y /. Si al final sobran bytes, rellena con =. El resultado es texto que cualquier sistema acepta, a cambio de ocupar un 33 % más.
Un ejemplo: la palabra Hola son los bytes 72, 111, 108, 97. En Base64 se escribe SG9sYQ==. Los dos = indican que el último grupo quedó incompleto. Nada se ha ocultado: es la misma información escrita con otro alfabeto, como pasar un número de decimal a hexadecimal.
Por qué no es cifrado
Cifrar significa transformar un dato de modo que solo quien tiene una clave pueda recuperarlo. Base64 no tiene clave: el procedimiento para deshacerlo es público, fijo y trivial, y lo hace cualquier navegador, cualquier lenguaje y cualquier página web en milisegundos. Pegar una contraseña en Base64 en un archivo de configuración, un correo o un repositorio es exactamente igual que pegarla en texto plano, salvo que además da una falsa sensación de seguridad. Lo mismo vale para un token, una clave de API o un número de tarjeta.
Hay un caso que confunde especialmente: los JWT (los tokens de sesión que usan muchas apps). Tienen tres partes separadas por puntos, y las dos primeras son JSON en Base64 (en su variante URL-safe, con - y _). Cualquiera que tenga el token puede leer lo que dice: usuario, roles, fecha de caducidad. La tercera parte es una firma que impide modificarlo, pero no impide leerlo. Por eso un JWT nunca debe llevar datos sensibles en su cuerpo.
Para qué sirve de verdad
- Imágenes incrustadas (data URI):
<img src="data:image/png;base64,iVBOR…">mete un icono o un logotipo pequeño dentro del HTML o del CSS, sin una petición extra. Para imágenes grandes no compensa: pesan un tercio más y no se cachean por separado. - Adjuntos de correo: el formato MIME codifica cada adjunto en Base64 para que viaje por un protocolo pensado para texto.
- Autenticación básica HTTP: la cabecera
Authorization: Basic …llevausuario:contraseñaen Base64. Por eso solo es aceptable sobre HTTPS: sin cifrado de transporte, la contraseña va a la vista. - JSON y APIs: enviar un archivo (una firma, una foto) dentro de un campo de texto JSON.
- Claves y certificados: los archivos PEM (
-----BEGIN CERTIFICATE-----) son binario en Base64 con cabeceras. - JWT, cookies y URLs: transportar estructuras pequeñas como una sola cadena sin caracteres problemáticos.
Compruébalo tú mismo: codifica y decodifica texto o archivos (con UTF-8 correcto y variante URL-safe) y verás que no hace falta ninguna clave. Todo en tu navegador, sin que lo que pegues salga de él.
Abrir el codificador Base64 →Las variantes y los errores típicos
URL-safe: como + y / tienen significado en una URL, existe una variante que los cambia por - y _ y suele omitir el relleno =. Es la que usan JWT y muchos enlaces de activación; si decodificas uno "normal" y falla, prueba la otra. Acentos y emojis: Base64 codifica bytes, no letras, así que primero hay que convertir el texto a bytes (UTF-8). La función clásica del navegador, btoa, solo acepta caracteres de un byte: por eso en muchas herramientas "canción" o un emoji dan error o salen mal. La nuestra convierte a UTF-8 antes. Saltos de línea: algunos sistemas parten el Base64 en líneas de 76 caracteres; al decodificar hay que ignorarlos.
Qué usar cuando sí necesitas proteger datos
Si tienes que guardar contraseñas, no se cifran ni se codifican: se les aplica un hash lento con sal (bcrypt, scrypt o Argon2) que no se puede deshacer. Si tienes que transmitir datos sensibles, el canal debe ir cifrado (HTTPS/TLS), y el contenido, si hace falta, con un cifrado real con clave (AES-GCM, por ejemplo, disponible en el navegador vía Web Crypto). Si tienes que comprobar que un archivo no ha cambiado, usa un hash como SHA-256, que también tienes en nuestras herramientas para desarrolladores. Y si lo que necesitas es una clave o un secreto aleatorio, genéralo con el generador de contraseñas; en ¿es seguro un generador de contraseñas online? explicamos por qué importa dónde se genera.
Preguntas frecuentes
¿Base64 comprime?
Al contrario: aumenta el tamaño un 33 % (cada 3 bytes se convierten en 4 caracteres). Si necesitas reducir, comprime antes (gzip, o una imagen en WebP) y codifica después.
¿Cómo sé si una cadena es Base64?
Solo tiene letras, dígitos, + y / (o - y _), su longitud es múltiplo de 4 (contando el relleno =) y, decodificada, produce algo con sentido. Que parezca Base64 no garantiza que lo sea: un hash hexadecimal, por ejemplo, también es "texto raro".
¿Es seguro pegar un token en una herramienta online para decodificarlo?
Solo si la herramienta trabaja en tu navegador. Un decodificador que envía lo que pegas a un servidor acaba de recibir tu token. Nuestras herramientas para desarrolladores no tienen backend: puedes desconectar internet y seguir usándolas.
Conclusión
Base64 es una herramienta de transporte, no de seguridad: convierte bytes en texto para que pasen por donde solo cabe texto, y cualquiera lo deshace sin clave. Úsalo para data URI, adjuntos, JWT y APIs; nunca para "esconder" contraseñas o datos. Y cuando quieras codificar, decodificar o inspeccionar una cadena, hazlo con el codificador Base64 de EzzyApps, que procesa todo en tu navegador.