RevealTheme logo

Decodificador de JWT

Decodifica JSON Web Tokens (JWT) al instante. Se ejecuta en tu navegador: los tokens nunca salen de tu dispositivo, por lo que es seguro usarlo con secretos de producción.

Cómo usar esta herramienta

  1. 1

    Pega tu JWT en el campo de entrada.

  2. 2

    Haz clic en Decodificar. La cabecera y la carga útil se analizan y se muestran.

  3. 3

    Inspecciona el algoritmo, las reclamaciones (claims), la caducidad y el emisor.

¿Qué es un JWT y cómo funciona?

Un JSON Web Token (JWT, definido en la RFC 7519) es una forma compacta y segura para URL de representar un conjunto de reclamaciones (claims) sobre un usuario, con prueba criptográfica de que esas reclamaciones no fueron manipuladas. Los JWT impulsan la autenticación en la mayoría de las pilas web modernas: cuando inicias sesión, el servidor crea un JWT que contiene tu ID de usuario y permisos, lo firma con una clave secreta y te lo devuelve. Tu navegador almacena el token (normalmente en localStorage o en una cookie) y lo incluye en la cabecera Authorization de cada solicitud posterior. El servidor verifica la firma en cada solicitud: si es válida, se confía en las reclamaciones del token; si fue manipulado, la firma se rompe y la solicitud se rechaza. Los JWT tienen tres partes codificadas en Base64URL y separadas por puntos: la cabecera declara el algoritmo de firma (HS256 para HMAC-SHA256, RS256 para RSA, ES256 para ECDSA, none para tokens sin firmar, lo cual es peligroso y deberías rechazarlos); la carga útil (payload) contiene las reclamaciones reales (reclamaciones estándar como 'sub' para el sujeto, 'exp' para la caducidad, 'iat' para la fecha de emisión, además de cualquier reclamación personalizada que defina tu aplicación); la firma es la prueba de que la cabecera y la carga útil fueron firmadas por alguien que poseía el secreto. Este decodificador revela las dos primeras partes, que son información pública; la firma solo puede verificarse con la clave, razón por la cual todo decodificador de JWT muestra las reclamaciones sin verificación.

Casos de uso comunes

  • Depura problemas de autenticación decodificando el JWT que envía tu cliente: ve exactamente qué reclamaciones contiene, quién lo emitió y cuándo caduca.

  • Inspecciona los JWT de pasarelas de API (AWS Cognito, Auth0, Okta) para entender la estructura de reclamaciones de los servicios posteriores.

  • Verifica que las reclamaciones personalizadas (ID de organización, rol, indicadores de funciones) se establecen correctamente en el código de emisión del token.

  • Compara tokens antes y después de una renovación para confirmar que se extendió la caducidad.

  • Audita el algoritmo de un token: confirma que se usa RS256 o ES256 en producción, nunca 'none'.

  • Traduce las cargas útiles en base64url de los registros del servidor a reclamaciones legibles.

Preguntas frecuentes

¿Es seguro usarlo con JWT de producción?
Sí. La decodificación ocurre por completo en tu navegador mediante JavaScript local: el token nunca llega a nuestros servidores ni aparece en ningún registro. Puedes comprobarlo abriendo DevTools → pestaña Red mientras decodificas: no se dispara ninguna solicitud saliente. Dicho esto, trata los JWT como credenciales: no los pegues en URL, capturas de pantalla ni documentos compartidos, sin importar dónde se ejecute el decodificador.
¿Verifica esto la firma?
No. La verificación de la firma requiere el secreto (para HS256) o la clave pública (para RS256/ES256/PS256). Las herramientas web que te piden tu secreto para verificar un JWT son una señal de alarma de seguridad: estarías enviando tu clave de firma a un desconocido. Verifica las firmas en el servidor o con una biblioteca que controles (jose, jsonwebtoken).
¿Qué pasa si mi JWT ha caducado?
La caducidad no impide la decodificación: la reclamación 'exp' es solo un dato dentro de la carga útil. Busca 'exp' en la carga útil decodificada: es una marca de tiempo Unix (segundos desde 1970). Conviértela con nuestro Conversor de Marcas de Tiempo para ver la caducidad en tu zona horaria. Si 'exp' ya pasó, el token es rechazado por cualquier verificador conforme, aunque el decodificador siga leyéndolo.
¿Se pueden cifrar los JWT?
Sí: eso se llama JWE (JSON Web Encryption, RFC 7516). Esta herramienta gestiona JWS (JSON Web Signature, el caso común), donde la carga útil está firmada pero es visible. Los tokens JWE tienen 5 partes separadas por puntos en lugar de 3 y requieren la clave privada del destinatario para descifrarse. Si tu token tiene 5 partes, necesitas una herramienta compatible con JWE.
¿Qué significa 'alg': 'none' y es peligroso?
'none' significa que no hay firma: el token está sin firmar y cualquiera puede falsificar cualquier reclamación. Los sistemas de producción deben rechazar explícitamente los tokens con 'alg: none'. Algunas bibliotecas los aceptan por defecto (una clase de CVE muy conocida). Permite siempre solo los algoritmos que tu aplicación espera.
¿Por qué usar JWT en lugar de cookies de sesión?
Los JWT no tienen estado: el servidor no necesita consultar una sesión; el propio token contiene la identidad y los permisos del usuario. Esto hace que los JWT sean ideales para sistemas distribuidos y API. Las cookies de sesión tienen estado (requieren almacenamiento de sesión en el servidor) pero son más fáciles de invalidar (basta con eliminar la sesión). El compromiso: los JWT escalan mejor, pero no puedes 'cerrar la sesión de un usuario' hasta que el token caduque.
¿Cuáles son las reclamaciones estándar de un JWT?
La RFC 7519 define: iss (emisor), sub (sujeto, normalmente el ID de usuario), aud (audiencia), exp (hora de caducidad), nbf (no antes de), iat (emitido en), jti (ID del JWT). Más allá de esas, las aplicaciones añaden reclamaciones personalizadas como 'roles', 'permissions' o 'tenant_id'. Mantén pequeñas las reclamaciones personalizadas: los JWT viajan en la cabecera de cada solicitud y aumentan tu consumo de ancho de banda.

Herramientas relacionadas