Decodificador JWT: ver el contenido de un token online

Pega un JWT y verás la cabecera y el payload como JSON legible, las fechas exp, iat y nbf en tu zona horaria y si el token ha caducado. El token no sale de tu navegador.

Para verificar la firma, escribe el secreto abajo: se comprueba en tu navegador y no se envía a ningún sitio. Aun así, mejor no pegar secretos de producción en webs.

Cabecera (header)
{
  "alg": "HS256",
  "typ": "JWT"
}
Datos (payload)
{
  "sub": "1234567890",
  "name": "John Doe",
  "role": "admin",
  "iat": 1767225600,
  "nbf": 1767225600,
  "exp": 1798761600
}
Firma (signature)
RDvudNA1pyyGaAIcSdO7DgEmU2_VncMo0ojXM6gg53U

Cómo se usa

Pega el token en el campo, solo o con el prefijo Authorization: Bearer …; los saltos de línea no molestan. El decodificador muestra al instante:

El token se decodifica en tu navegador y no se sube a un servidor. Trata los tokens de acceso reales como secretos: un token bearer válido que se filtre puede dar acceso dentro de sus permisos hasta que caduque o se revoque. Decodificarlo no confirma su validez.

Verificar la firma

Los tokens HS256, HS384 y HS512 se firman con un secreto compartido. Si lo tienes, escríbelo en el campo bajo el token y la firma se comprobará en tu navegador. Las firmas RS y ES (de clave pública) no se verifican aquí: necesitan la clave pública del servidor. El payload de un JWT normal no está cifrado, solo codificado en Base64URL: cualquiera puede leerlo, pero nadie puede falsificarlo sin la clave. Por eso:

Partes de un JWT

Un token son tres partes separadas por puntos: cabecera.payload.firma. Las dos primeras son JSON codificado en Base64URL (Base64 en el que + y / se sustituyen por - y _ y se quitan los = del final). Este es el ejemplo del estándar RFC 7519:

eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

Su cabecera es {"typ":"JWT","alg":"HS256"} y su payload, {"iss":"joe","exp":1300819380,"http://example.com/is_root":true}. El valor de exp, 1300819380, corresponde al 22 de marzo de 2011 a las 18:43 UTC: el token caducó hace mucho.

Claims estándar

Campo Significado
iss quién emitió el token
sub a quién se emitió; normalmente el ID del usuario
aud para qué servicio es
exp cuándo caduca (desde ese momento ya no es válido)
nbf desde cuándo es válido
iat cuándo se emitió
jti ID único del token, para poder revocarlo

exp, nbf e iat son Unix timestamps en segundos. Para pasar cualquiera de estos números a fecha, usa el conversor de Unix timestamp.

Errores frecuentes

Preguntas frecuentes

¿Por qué aparece «caducado» si el servidor sigue aceptando el token? Los servidores suelen tolerar unos minutos de desfase de reloj (leeway). Comprueba también la hora de tu dispositivo: el estado se calcula con ella.

¿Puedo cambiar el payload y reenviar el token? Puedes cambiarlo, pero la firma dejará de coincidir y cualquier servidor que la verifique rechazará el token.

¿Cómo decodifico una cadena Base64 cualquiera? Para eso está el decodificador Base64; un JSON grande se lee mejor en el formateador de JSON.