Cómo decodificar cadenas Base64 (y payloads JWT)

Base64 es codificación reversible, no cifrado. Decodifícalo en un paso, maneja Unicode correctamente y lee las secciones de JWT que usan Base64url.

Qué es Base64 en realidad

Base64 asigna datos binarios a 64 caracteres ASCII imprimibles. Es totalmente reversible y no requiere clave, así que es una codificación, no un cifrado — nunca lo uses para «ocultar» secretos.

Codificar y decodificar

En el navegador, codifica con btoa y decodifica con atob. Para texto que no es ASCII, haz una ida y vuelta por UTF-8 para que caracteres como é, ü o 你 sobrevivan en lugar de convertirse en bytes corruptos.

Leer un JWT

Un JWT son tres tramos en Base64url unidos por puntos: header, payload y signature. Decodifica los dos primeros para leer los claims. La signature es binaria y no está pensada para ser leída por humanos.

Base64 vs Base64url

Base64 estándar usa + y / con relleno =. La variante segura para URLs, Base64url, los sustituye por - y _ y elimina el relleno, de modo que el valor se puede meter sin problema dentro de URLs y JWTs.

Decodificar no es lo mismo que verificar

Decodificar un JWT muestra los claims pero no dice nada sobre su autenticidad. Cualquiera puede falsificar un token cuyo payload diga "role":"admin"; solo la firma, verificada contra la clave del emisor, prueba que el token es real. Nunca tomes una decisión de confianza sobre un token sin verificar.

Claims habituales de JWT y su significado

iss es el emisor, sub el sujeto (id de usuario), aud la audiencia prevista, exp la expiración (segundos Unix), iat la fecha de emisión, nbf «not before» y jti un id único. Los claims personalizados conviven con estos. Comprueba siempre exp y aud en el servidor, no solo en el cliente.

Relleno y variantes URL-safe

Base64url suele llegar sin el relleno =. Para decodificarlo en código, rellena la longitud hasta un múltiplo de 4 con =, luego cambia - por + y _ por /, y por último ejecuta un decodificador Base64 normal. El atob del navegador no acepta Base64url directamente — la conversión tiene que ocurrir antes.