Decode a JWT Safely (Without Trusting It)
JWTs are readable without a secret — decoding is not verification. Use the JWT Decoder to inspect header and payload claims during debugging, then verify with the JWT Validator or your library before trusting identity, roles, or expiry in any production API.
Last updated August 26, 2026
Steps
- 1
Paste a development token into the JWT Decoder and inspect header fields (alg, typ, kid) and payload claims.
- 2
Confirm sensitive data is not sitting in the payload — JWTs are signed, not encrypted by default.
- 3
In code, use decode-only helpers for logging; never authorize based on decode alone.
- 4
Verify the same token with an explicit algorithms allowlist using the JWT Validator or your API middleware.
- 5
Reject expired, not-yet-valid, and algorithm-mismatched tokens with 401 before reading business claims.
Related Articles
Frequently Asked Questions
Can anyone decode my JWT?
Yes. Header and payload are Base64URL-encoded, not encrypted. Anyone with the token string can read claims — never put passwords or secrets in the payload.
Is decoding the same as verifying?
No. Decoding reads bytes. Verification checks the cryptographic signature (and usually exp/nbf) so the token cannot be forged.
When is decode-without-verify acceptable?
Local debugging, support tooling, and logging non-sensitive claims. It is never acceptable as the sole auth check on a protected API.
Should I paste production tokens into online tools?
Prefer local or client-side tools on machines you trust. Our decoder runs in the browser, but high-privilege production tokens still belong on controlled environments.