Decodificador y generador de JWT
Pega un JSON Web Token para leer su header y sus claims, ver cuándo caduca y verificar la firma. Tu token no sale de esta página.
Añade esta calculadora a tu web
Copia el código y pégalo en el HTML de tu página. Es gratis; mantén el enlace de crédito, por favor.
Cómo se forma un JWT
Un JSON Web Token (RFC 7519) son tres cadenas Base64URL unidas por puntos: header.payload.firma. El header indica el algoritmo de firma, el payload contiene los claims (ID de usuario, roles, caducidad) y la firma se calcula sobre las dos primeras partes.
Con HS256 la firma es un HMAC hecho con un secreto compartido: el mismo secreto firma y verifica. RS256, PS256 y ES256 firman con una clave privada y verifican con una pública, así muchos servicios pueden comprobar tokens sin poder crearlos.
Cómo comprobar un token con seguridad
- Verifica siempre la firma en el servidor y rechaza alg "none".
- Fija el algoritmo esperado: no dejes que lo elija el header del token.
- Comprueba exp, nbf, iss y aud, con uno o dos minutos de margen de reloj.
- Usa tokens de vida corta y trátalos como contraseñas: este decodificador funciona sin conexión, pero muchos otros lo envían a un servidor.
Claims registrados de JWT (RFC 7519)
| Claim | Nombre | Significado |
|---|---|---|
iss | Emisor | Quién creó y firmó el token |
sub | Sujeto | De quién trata el token, normalmente un ID de usuario |
aud | Audiencia | Para quién es el token |
exp | Caducidad | Segundos desde 1970 a partir de los que debe rechazarse |
nbf | No antes de | Segundos desde 1970 antes de los que debe rechazarse |
iat | Emitido | Cuándo se creó |
jti | ID del JWT | ID único para evitar que se reutilice |
Preguntas frecuentes
¿Cualquiera puede leer un JWT?
Sí. El header y el payload solo están codificados en Base64URL, no cifrados, así que quien tenga el token puede leerlos. Nunca pongas contraseñas ni secretos en el payload.
¿Decodificar un JWT comprueba que es válido?
No. Decodificar solo lee el contenido. Solo la verificación de la firma con el secreto o la clave pública correctos demuestra que no se falsificó ni modificó, y el servidor debe comprobar además exp, nbf y aud.
¿Por qué mi token aparece caducado si se acaba de emitir?
exp, iat y nbf van en segundos desde 1970, no en milisegundos. Si se usa Date.now() de JavaScript sin dividir entre 1000, la fecha queda a miles de años, y las diferencias de reloj entre servidores pueden hacer que un token nuevo parezca caducado o aún no válido.
¿Lo que pego se envía a un servidor?
No. Esta herramienta funciona por completo en tu navegador con JavaScript y la API Web Crypto integrada. Nada de lo que escribes, pegas o abres se sube ni se guarda.