Read the header and payload of a JSON Web Token in this tab. Anyone who has the token can do the same — JWT is not encryption. We do not verify the signature, so a forged token can still ‘decode’ cleanly.
You have a Bearer token and an auth bug: is it expired, which alg, what is in sub? That is this page. The fear people type is “is it safe to decode a JWT online?” — because a JWT is often a live credential.
Decoding is Base64URL plus JSON. It is not decryption. jwt.io is the brand everyone knows; many clone sites are not jwt.io. This decoder stays in the tab and does not verify the signature.
How a JWT is put together
A compact JWS has three segments: header.payload.signature. The first two are readable to anyone who intercepts the token. The signature is what an API should check with a pinned key — work we do not do here.
- Paste the token. Do not mail it to a teammate’s “random decoder.”
- Read
alg,kid,iss,aud,exp. - Open DevTools → Network if you want proof the paste did not leave.
If you only needed to decode a blob that is not a JWT, use Base64.
What this will not do
- Verify HS256/RS256/ES256 or show a green “signature verified” badge.
- Decrypt JWE.
- Forge admin tokens or recover a secret.
- Replace a proper JWT library test suite.
alg: none is a red flag, not a feature. Algorithm confusion (HS vs RS) is a server bug; a decoder can only show you the header.
Treat refresh tokens and session JWTs like passwords. Expired test tokens are the ones that belong on a webpage debugger.