Decodificador JWT
Pega un token y mira su header, payload y fechas al instante. 100% en tu navegador: el token no se envía a ningún sitio (en serio, desconecta el wifi y sigue funcionando).
Actualizado el 11 de junio de 2026
Header
Payload
Fechas del token
Anatomía de un JWT: header.payload.firma
Un JWT son tres bloques de Base64URL separados por puntos. El header dice qué algoritmo firma el token (HS256, RS256...). El payload lleva los claims: quién eres (sub), quién lo emitió (iss), cuándo caduca (exp)... La firma garantiza que nadie ha tocado lo anterior.
La clave que todo el mundo aprende el primer día (a veces por las malas): el contenido no va cifrado, solo codificado. La firma impide modificarlo sin que se note, pero no impide leerlo. Por eso un JWT nunca debe llevar secretos.
Decodificar ≠ verificar
Esta herramienta no comprueba la firma (para eso haría falta tu clave secreta, y precisamente no queremos que la pegues en ningún sitio). Verificar tokens es trabajo del backend con librerías como jsonwebtoken, jose o python-jose.
Preguntas frecuentes
Mi token marca "CADUCADO", ¿qué hago?
El claim exp ya pasó: el servidor lo rechazará con un 401. Pide un token nuevo (normalmente
con el refresh token o volviendo a iniciar sesión). Es el motivo número 1 de "ayer funcionaba y hoy no".
¿Por qué mi JWT no decodifica?
Casi siempre es un token incompleto al copiarlo (se corta en logs y consolas) o con espacios/saltos
de línea en medio. Comprueba que tenga exactamente dos puntos y empiece por
eyJ (que es {" en Base64).
¿Qué es eso de "alg": "none"?
Un clásico de los CTF: tokens sin firma. Si tu backend acepta alg: none o no fija qué algoritmos
admite, cualquiera puede fabricar tokens válidos. Las librerías modernas lo bloquean por defecto, pero
revísalo.
Otras herramientas que te pueden servir
- Conversor Base64 — codifica y decodifica Base64 y Base64URL a mano
- JSON Beautifier — formatea y valida payloads grandes
- Generador de UUID — para los jti y los IDs de tus tokens