How to decode a JWT and read its claims
A JSON Web Token (JWT) looks like a long, opaque string, but it is really three readable parts bundled together. This guide explains what is inside one, how to read it, and the one thing developers most often get wrong — confusing decoding with verifying — all done locally so your token never leaves your browser.
The fastest way
Paste your token into the JWT Decoder and it splits out the header and payload as formatted JSON instantly. The rest of this guide explains what you're looking at.
Anatomy of a JWT
A JWT is three Base64URL sections separated by dots:
- Header — the signing algorithm (e.g. HS256) and token type.
- Payload — the claims: the data the token carries, such as the subject (
sub), issued-at (iat), and expiry (exp). - Signature — a hash of the first two parts with a key, proving they were not altered.
Each part is just Base64URL text, which is why it can be decoded without any key. If you want to decode the parts by hand, the Base64 tool will do the raw step — but the JWT Decoder handles the dots and URL-safe alphabet for you.
Decoding is not verifying
This is the critical point. Decoding reveals the contents; it does not check the signature. A decoded token tells you what it claims, not whether those claims are trustworthy or current. Verifying — confirming the signature with the secret or public key, and checking the expiry — is a server-side step. Never treat a token as valid just because you could read it.
Reading the claims
Common payload claims: sub (who the token is about),
iss (issuer), aud (intended audience),
iat (issued at), and exp (expiry). The time
claims are Unix timestamps in seconds — large integers you can convert to
a readable date if needed.
A note on privacy
A JWT is frequently a live session credential — pasting it somewhere that logs it could hand over an account. The JWT Decoder runs entirely in your browser, so the token is never uploaded or stored.