Qué es Base64 y cuándo te lo vas a encontrar

Si has trabajado con APIs, autenticación HTTP, tokens JWT, imágenes embebidas en CSS, o adjuntos de email, ya viste Base64 — aunque tal vez no lo identificaste. Es una codificación silenciosa pero ubicua, y los desarrolladores que entienden cómo funciona depuran más rápido.

Qué es Base64 exactamente

Es una forma de representar datos binarios usando solo 64 caracteres ASCII imprimibles (A-Z, a-z, 0-9, + y /). Cada 3 bytes de datos originales se convierten en 4 caracteres Base64, así que el resultado es un 33% más grande que el original.

Por ejemplo, el texto Hola codificado en Base64 es SG9sYQ==. Los signos de igual al final son padding — Base64 procesa en bloques de 3 bytes y rellena cuando faltan.

Para qué se usa (que NO sea encriptación)

Esto es lo primero que hay que dejar claro: Base64 no es encriptación. Cualquiera puede decodificar SG9sYQ== y obtener Hola en milisegundos. Es solo un cambio de formato.

Se usa cuando necesitas mover datos binarios por un canal que solo acepta texto. Los casos típicos:

1. Adjuntos de email (MIME)

Los servidores SMTP fueron diseñados para enviar texto. Si quieres mandar una imagen, un PDF o cualquier archivo binario, el cliente de correo lo codifica en Base64 antes de meterlo en el cuerpo del mensaje. Por eso un email con adjuntos pesa más que la suma de sus archivos.

2. Data URIs

Esa imagen que ves como CSS background donde el url() empieza con data:image/png;base64,iVBORw0KGgoAAAA… es una imagen Base64. Útil para iconos pequeños que no quieres servir como archivo aparte (ahorra requests HTTP), pero pésimo para imágenes grandes (no se cachean separadamente).

3. Autenticación HTTP Basic

El header Authorization: Basic dXN1YXJpbzpjb250cmFzZW5h es exactamente usuario:contrasena codificado en Base64. Por eso HTTP Basic debe ir siempre sobre HTTPS — un atacante con acceso a la red lee la credencial en texto plano con un decodificador.

4. JSON Web Tokens (JWT)

Los tokens JWT que verás en autenticación de APIs (Bearer eyJhbGc...) son tres partes separadas por puntos, cada una codificada en Base64URL (una variante con - y _ en lugar de + y /):

eyJhbGc...   .  eyJzdWI...   .  SflKxw...
^ header        ^ payload       ^ firma

Decodificar el payload de un JWT te muestra exactamente quién es el usuario y qué claims tiene — útil cuando estás depurando.

5. Llaves API y certificados

Muchas APIs te entregan llaves codificadas en Base64 para que no se rompan al copiar/pegar en archivos de configuración. Los certificados PEM (.pem) son DER binario codificado en Base64 con encabezado -----BEGIN CERTIFICATE-----.

Errores comunes

Confundir Base64 con encriptación. Si necesitas seguridad, encripta primero (AES, ChaCha20) y luego codifica el resultado en Base64 si tienes que transportarlo por texto.

Olvidar el padding =. Algunas implementaciones lo omiten (“Base64 sin padding”). El decodificador tiene que aceptar ambos.

Mezclar Base64 estándar y Base64URL. Los + y / rompen URLs y nombres de archivo. Base64URL los sustituye por - y _. No son intercambiables — si decodificas con el alfabeto equivocado, obtienes basura.

Codificar UTF-8 incorrectamente. En navegadores, btoa() falla con caracteres no-ASCII. Tienes que pasar primero por TextEncoder para obtener bytes y de ahí a Base64.

Codifica y decodifica en tu navegador

Cuando necesitas inspeccionar el payload de un JWT, generar un Data URI para una imagen, o decodificar un header Basic Auth que te enviaron, conviene tener un convertidor a mano:

Abre el Codificador / Decodificador Base64

Soporta UTF-8 correctamente (con acentos, emojis y caracteres no-ASCII), tiene modo encode y decode, y nada de lo que pegues sale de tu navegador.


Si estás integrando APIs externas — pasarelas de pago, plataformas de email transaccional, webhooks — entender cómo viajan las credenciales y los datos te ahorra horas de depuración. Y si tu equipo se atasca con la autenticación de alguna API en específico, eso es exactamente lo que resolvemos en Waloja.