Decodificar JWT

Decodifica el header, el payload y la expiración de un JWT.

Tu token se decodifica aquí, no se envía

Decodificar un token JWT online

Sobre este decodificador de JWT

Pega un JSON Web Token y obtén su header y su payload como JSON formateado, junto con un desglose de los claims registrados: emisor, sujeto, audiencia y las fechas exp, iat y nbf convertidas a hora local legible con tiempo relativo. Una insignia VÁLIDO / EXPIRADO te dice de un vistazo si el token ya venció, la causa más común de que una API empiece a devolver errores 401.

Un JWT suele contener IDs de usuario, correos y roles, y un token filtrado puede reutilizarse contra la API que lo emitió. Por eso este decodificador corre completamente en tu navegador: nada se envía a un servidor ni queda registrado en ningún lado. Ten en cuenta que decodifica pero no verifica: comprobar la firma requiere la clave secreta o pública del emisor, que nunca deberías pegar en un sitio web.

Qué significa cada claim y campo del header

El header lleva metadatos sobre cómo se firma el token; el payload lleva los claims, es decir las afirmaciones sobre el usuario o la sesión. El RFC 7519 (sección 4.1) registra siete nombres de claim; los campos del header vienen de la especificación JWS (RFC 7515). Este decodificador los muestra todos, pero solo los lee: nunca comprueba la firma.

CampoParteSignificado
issPayloadEmisor: quién creó y firmó el token.
subPayloadSujeto: el principal sobre el que trata el token, normalmente un ID de usuario.
audPayloadAudiencia: el o los destinatarios a los que va dirigido.
expPayloadExpiración (segundos Unix); en ese momento o después, el token NO DEBE aceptarse.
nbfPayloadNo antes de (segundos Unix); antes de esa hora, el token NO DEBE aceptarse.
iatPayloadEmitido en (segundos Unix): cuándo se creó el token.
jtiPayloadID del JWT: identificador único, útil para evitar la reutilización.
algHeaderAlgoritmo de firma, p. ej. HS256 o RS256; debe estar presente.
typHeaderTipo de medio del token, normalmente "JWT".
kidHeaderKey ID: pista que indica al servidor qué clave verifica este token.

¿Por qué se rechazó mi token?

Cuando un token funciona en todas partes menos en un endpoint, decodificarlo suele revelar el claim con el que el servidor no está de acuerdo. Esta herramienta muestra una insignia VÁLIDO / EXPIRADO a partir de exp, pero el servidor revisa más que la expiración. Las causas comunes:

Condición del tokenQué pasa
exp ya pasóSe rechaza por expirado: el típico 401 cuando el token lleva demasiado tiempo sin usarse.
nbf está en el futuro (o los relojes del cliente y el servidor difieren)Se rechaza como aún no válido; unos minutos de desfase de reloj son una causa frecuente.
aud no coincide con la APISe rechaza por audiencia incorrecta: el token se emitió para otro servicio.
iss no es un emisor de confianzaSe rechaza por emisor incorrecto.
alg es none, o un alg que el servidor no esperaDebe rechazarse: alg:none significa "sin firmar", y aceptarlo (o dejar que el token elija su propio algoritmo) permite a un atacante falsificar tokens. Un servidor correcto fija de antemano el algoritmo que aceptará.

Como esta herramienta solo decodifica, una insignia VÁLIDO aquí no significa que el servidor vaya a aceptar el token: solo la verificación de la firma en el servidor lo demuestra.

Preguntas frecuentes

¿Es seguro pegar un JWT real aquí?

Sí: la decodificación ocurre completamente en tu navegador y el token nunca se sube, se registra ni se guarda en ningún servidor. Aun así, trata los tokens de producción como contraseñas: si sospechas que uno se filtró, invalídalo o rota las credenciales.

¿Cuál es la diferencia entre decodificar y verificar un JWT?

Decodificar solo lee el header y el payload, que van en Base64URL y cualquiera puede leerlos sin ninguna clave. Verificar comprueba la firma criptográfica con la clave secreta (HS256) o pública (RS256/ES256) del emisor, lo que garantiza que el token no fue alterado. Esta herramienta decodifica; la verificación debe hacerse en tu servidor.

¿Qué significa el claim exp?

Es la fecha de expiración del token como timestamp Unix (segundos desde 1970). Después de ese momento la API debe rechazarlo, y por eso un token vencido genera errores 401. La insignia VÁLIDO / EXPIRADO se calcula con el reloj de tu equipo, así que es tan precisa como tu hora local.

Herramientas relacionadas