- The signature is not verified, and cannot be
- Verification needs the signing key, which only the issuer has. This tool decodes and displays; it does not validate. A decoded token proves nothing about authenticity, anyone can craft a token with any payload. Always verify server-side against the issuer's key before trusting a claim.
- Base64url, not Base64
- JWT segments use the URL-safe alphabet, with - and _ replacing + and /, and the padding stripped. That is why pasting a whole JWT into a standard Base64 decoder fails: the dots are not valid Base64, and the alphabet differs.
- The time claims that matter
- exp is the expiry, nbf the not-before time, and iat when the token was issued. All three are Unix timestamps in seconds, not milliseconds, and each is shown here as an ISO 8601 date, with exp explicitly flagged as expired or still valid. A "token invalid" error in an application is very often simply an expired exp.
- The alg: none attack
- If a header declares "alg": "none", the token is unsigned. Some older libraries accepted such tokens as valid, letting an attacker forge any payload by simply removing the signature. The algorithm is highlighted here for exactly that reason. A related attack switches RS256 to HS256 so the public key gets used as an HMAC secret, always pin the expected algorithm server-side rather than trusting the header.
- JWE tokens cannot be read
- A token with five segments rather than three is a JWE, encrypted rather than merely signed. Its payload is genuinely unreadable without the decryption key, so the tool reports this instead of failing obscurely.