JWT Decoder
Header, payload, signature — decoded in your browser. Optional HS256/384/512 verify.
How to use
Paste a JWT into the input pane. The decoded Header, Payload, and Signature appear on the right as you type.
To verify an HS256/384/512 signature, toggle Verify signature and paste the shared secret. The badge shows valid or invalid immediately. RS*/ES*/PS* verification isn't supported (needs a public key).
Standard time claims (iat, nbf, exp) are shown as human-readable UTC and relative time. An expired token gets a red badge.
Keyboard shortcuts
Two shortcuts:
| Cmd / Ctrl + K | Focus the input pane |
| Cmd / Ctrl + Enter | Copy decoded header + payload as JSON |
When to use it
JWTs are opaque to the eye but the payload is just base64-encoded JSON. Decoding lets you inspect what you're actually receiving.
- Debugging an auth flow — is the
subclaim what you expect? Are the roles right? - Checking if a token has expired without wiring it into your app.
- Confirming the algorithm your identity provider is using.
- Sanity-checking an HS256 signature with your shared secret before shipping the code that consumes it.
Options
Verify signature — enables HMAC verification. Requires a shared secret. Only works for HS256, HS384, and HS512.
Secret — the UTF-8 shared secret used to compute the HMAC. Never leaves your browser.
Format-specific gotchas
Decoding is not verification. Any JWT decodes trivially — the signature is what prevents tampering. If you display decoded contents to a user, always verify the signature first.
The none algorithm is a footgun. Older JWT libraries accepted alg: none as valid, letting attackers forge tokens with no signature. If you see none in a token, question why.
Public-key algorithms aren't supported here. RS256, ES256, PS256, etc. need a public key. Decoding still works; only verification is skipped. Use your JWT library server-side for verification of asymmetric-signed tokens.
Times are in seconds since epoch. Standard JWT claims (iat, nbf, exp) use Unix seconds, not milliseconds. The tool renders both absolute UTC and a relative offset.
Signature format shown as base64url and hex. Copy whichever your consumer expects.
Privacy
Everything runs in your browser — the token, the secret, the decoded output. Nothing is sent to a server. Never paste a production token into an online tool you don't control. This tool is safe, but the habit of trusting others isn't.