¿Se envía mi JWT a un servidor?+−
No. La decodificación ocurre totalmente en tu navegador usando las API web atob y TextDecoder: el token, y cualquier secreto o clave pública que pegues para verificar una firma, nunca salen de tu dispositivo.
¿Puede esta herramienta verificar la firma?+−
Sí, como extra y sin garantías. Si conoces el secreto HMAC (para HS256/384/512) o pegas la clave pública codificada en PEM (para RS256/384/512 o ES256/384/512), la herramienta comprueba la firma localmente usando la API Web Crypto del navegador. Sin una clave, solo se decodifican y muestran el encabezado y el payload: decodificar nunca requiere la clave de firma.
¿Por qué dice que el algoritmo es "none"?+−
"alg": "none" significa que el token no está firmado en absoluto: cualquiera podría haber escrito cualquier claim en él. Algunas bibliotecas aceptaron históricamente estos tokens sin firmar como válidos, lo que se convirtió en una forma conocida de saltarse la autenticación. Esta herramienta siempre lo marca de forma destacada para que no se te pase.
¿Qué significan exp, iat y nbf?+−
Son los claims de marca de tiempo estándar de RFC 7519: iat indica cuándo se emitió el token, nbf el primer momento en que es válido, y exp cuándo deja de serlo. Los tres se almacenan como un NumericDate (segundos desde el epoch Unix), que esta herramienta convierte en una fecha legible y un tiempo relativo como "expira en 2 horas".
¿Por qué puedo leer el payload sin un secreto?+−
Porque el encabezado y el payload de un JWT solo están codificados en base64url, no cifrados: codificar no es lo mismo que ocultar. Cualquiera que tenga el token ya puede leer sus claims; la firma solo demuestra que no han sido alterados por alguien que no tiene la clave. Nunca pongas nada que no quieras que un atacante lea directamente dentro del payload de un JWT.
Mi token tiene 3 partes, pero aun así no se decodifica. ¿Por qué?+−
Cada uno de los tres segmentos (encabezado, payload, firma) debe ser texto base64url válido, y el encabezado y el payload deben decodificarse como JSON válido. Esta herramienta decodifica el encabezado y el payload de forma independiente y te dice exactamente cuál está roto y por qué (base64 incorrecto, UTF-8 incorrecto o JSON inválido), en lugar de simplemente fallar en silencio.