Ir al contenido
UtilDock

Decodificador JWT

Lee las claims de un token y demuestra su firma · se ejecuta en esta pestaña, nunca se envía a ninguna parte

Token

Pega un token para leerlo

Firma

Un JWT está codificado, no cifrado: cualquiera que tenga este token puede leer todo lo de arriba sin ninguna clave. Solo comprobar la firma te dice que es auténtico y que no ha sido alterado.

Sin comprobar

Claims

Pega un token en el panel Token y sus claims aparecerán aquí, en lenguaje claro.

Cabecera

Carga útil

Cómo funciona el Decodificador JWT

Un decodificador de JWT que divide un token en sus tres partes, decodifica la cabecera y el payload, y lista cada claim en lenguaje claro — con la caducidad, el «no antes de» y la fecha de emisión mostrados como fechas reales en lugar de segundos desde la época. También verifica la firma: pega el secreto compartido para un algoritmo HS o una clave pública para RS, PS o ES, y la comprobación se ejecuta sobre la propia WebCrypto de tu navegador. Ni el token ni la clave se suben nunca, y la clave ni siquiera se guarda en este navegador.

Pega un token —con o sin su prefijo Bearer— y se dividirá en sus tres partes, coloreadas para que veas dónde termina cada una. La cabecera y la carga útil se decodifican a JSON, y los claims se listan de nuevo en lenguaje claro, con exp, nbf e iat mostrados como fechas reales y como cuánto hace o cuánto falta.

Decodificar un JWT no es verificarlo. Las dos primeras partes son base64url, no cifrado: cualquiera que tenga el token puede leerlas, y por eso un token nunca es sitio para guardar un secreto. Activa Comprobar la firma y pega el secreto compartido para un algoritmo HS, o una clave pública para uno RS, PS o ES, y la firma se comprueba de verdad — HS256/384/512, RS256/384/512, PS256/384/512 y ES256/384/512, usando la propia WebCrypto del navegador.

La clave que pegas se trata de forma distinta a cualquier otra entrada de este sitio: nunca se escribe en localStorage ni se restaura al recargar. Nada de esto —ni el token ni la clave— se sube a ningún sitio, y no existe servidor que pudiera recibirlos.

Preguntas frecuentes

¿Es seguro pegar un JWT real en este decodificador?

Sí. El token lo decodifica JavaScript en tu propia pestaña y no hay backend al que enviarlo: desconéctate de la red y el decodificador sigue funcionando. Con los JWT esto importa más que con casi cualquier otro dato, porque un token es una credencial viva, y pegarlo en un sitio que lo envía a un servidor entrega todo lo que ese token concede.

¿Decodificar un JWT significa que es válido?

No, y la diferencia importa. La cabecera y el payload están codificados en base64url, no cifrados, así que cualquiera que tenga el token puede leerlos: por eso un JWT nunca es sitio para guardar un secreto. Solo comprobar la firma con la clave correcta te dice que el token es auténtico, que no ha sido alterado y que puedes fiarte de sus claims.

¿Qué algoritmos de firma puede verificar?

HS256, HS384 y HS512 con un secreto compartido, y RS256/384/512, PS256/384/512 y ES256/384/512 con una clave pública dada como bloque PEM, como JWK suelto o como JWKS completo — en cuyo caso el kid del token elige la clave. La verificación usa la WebCrypto integrada en el navegador, así que ningún material de clave se envía a ninguna parte.

¿Se guarda mi clave o mi secreto de firma?

No. Todas las demás herramientas del sitio guardan tu entrada en localStorage para que una recarga no pierda tu trabajo; la clave de verificación queda deliberadamente excluida. Se mantiene en memoria, se usa para la comprobación y desaparece cuando sales de la página.

¿Por qué mi token aparece como caducado?

La claim exp es un NumericDate —segundos desde 1970— y el decodificador la muestra como fecha real junto a cuánto hace que pasó. Un token caducado es la causa más común de un 401 repentino en una API que funcionaba hace un momento. Una claim nbf en el futuro hace lo mismo por el otro extremo.