Decode and read JWTs locally
Paste a JSON Web Token and see the header and payload as formatted JSON, the standard claims made human-readable (exp, iat and nbf as dates, with an expired badge) and the raw signature segment. One thing first, loud and clear: the signature is NOT verified, this tool only decodes. Everything runs in your browser, your token never leaves your device.
Why must a token never reach someone else's server?
A JWT is not harmless debug text but a live credential: whoever holds it can act as the named user against the API until it expires. Copying a production token into an online tool that transmits it to a server is the same as giving away your session. That is exactly why this tool decodes strictly locally: no request, no log, no third party. It also works offline.
How is a JWT structured?
Per RFC 7519 (May 2015) a JWT consists of three Base64url segments separated by dots: header (algorithm and type), payload (the claims) and signature. Base64url is a reversible encoding, not encryption; anyone can read header and payload without any key. So never put passwords or other secrets into claims. The signature makes tampering detectable for the verifier, but it hides nothing.
What do the standard claims mean?
RFC 7519 section 4.1 registers exactly seven claims: iss (issuer), sub (subject), aud (audience), exp (expiration), nbf (not before), iat (issued at) and jti (token ID). The three time claims are NumericDates, seconds since the Unix epoch (January 1, 1970 UTC); the tool converts them into readable dates with relative time and marks expired tokens with a badge.
Why does this tool not verify the signature?
Because a serious check requires the issuer's secret or public key and belongs on the server that trusts the token. A decoder in the browser can only show what the token claims, not whether it is genuine. Tools that promise in-browser verification tempt you to paste the secret key, which is even more sensitive than the token itself. For debugging, decoding is enough; for trust decisions, never.
When the token cannot be decoded
The tool reports the failing segment individually: structure (not three dot-separated parts), header or payload, each distinguishing invalid Base64url from invalid JSON. Bearer prefixes and line breaks from log copies are removed automatically. If the error persists, the copy is usually truncated, or the value simply is not a JWT but an API key or an opaque session ID.