JWT Decoder
Header, payload and signature inspection
A JSON Web Token is three Base64url-encoded segments separated by dots: a header naming the algorithm, a payload of claims, and a signature over the first two. RFC 7519 defines the format and a set of registered claims — iss for issuer, sub for subject, exp for expiry, iat for issued-at — alongside whatever custom claims an application adds.
The critical thing to understand is that the payload is encoded, not encrypted. Anyone holding a token can read every claim in it, which this page demonstrates by doing exactly that. The signature does not hide the contents; it proves they have not been altered. Never put anything in a JWT that the bearer should not see.
How to use it
- Paste the tokenThe three segments are split and decoded separately. Decoding happens in this tab — pasting a live token into a remote decoder means handing over a working credential.
- Read the headerThe alg claim names the signing algorithm and kid identifies which key was used, which is what you need when a signature fails to verify against the key you expected.
- Check the timing claimsexp, iat and nbf are Unix timestamps in seconds. Expiry is checked against the clock so you can see immediately whether a token is still live.
Frequently asked questions
Is a JWT encrypted?
No. The header and payload are Base64url-encoded, which is reversible by anyone, and this page reads them without any key at all. If you need the contents hidden you want JWE, a separate standard for encrypted tokens. Treat a plain JWT as a signed postcard.
Does decoding a token verify it?
No, and the distinction matters. Decoding reads the claims; verification recomputes the signature with the issuer’s key and confirms it matches. A decoder shows what a token says, not whether it is genuine — accepting an unverified token is one of the most serious mistakes in JWT handling.
What is the "alg: none" vulnerability?
The specification allows an algorithm value of none, meaning unsigned. Libraries that honoured the header’s claim about which algorithm to use could be handed a token with the signature stripped and alg set to none, and would accept it. Always validate against an algorithm your server chose, never the one the token asks for.
What is the difference between HS256 and RS256?
HS256 is symmetric HMAC: the same secret signs and verifies, so every verifier can also mint tokens. RS256 is asymmetric: a private key signs and a public key verifies, so verifiers cannot forge. For anything crossing a service boundary, asymmetric is the safer default.
How do I revoke a JWT before it expires?
You largely cannot, which is the format’s main drawback. A signed token stays valid until exp regardless of what happens to the account. Practical mitigations are short lifetimes with refresh tokens, or a server-side deny list — which reintroduces the state that stateless tokens were meant to eliminate.