Formula
JWT = base64url(header) . base64url(payload) . signature
- Decoding only reverses the Base64URL; it does not check the signature.
The first two parts are just encoded JSON anyone can read.
Worked example
A sample HS256 token
- JWT
- eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUiLCJpYXQiOjE1MTYyMzkwMjJ9.c2lnbmF0dXJl
Result
Decoded — signature not verified
Algorithm: HS256
Signature present: Yes — NOT verified
{
"alg": "HS256",
"typ": "JWT"
}How it works
A JSON Web Token has three dot-separated parts. The first two are Base64URL-encoded JSON — the header (algorithm and type) and the payload (the claims). This tool decodes them and presents the standard time claims — iat (issued at), nbf (not before) and exp (expires) — as dates, relative to your device clock.
Decoding is not verifying. Anyone can create a token with any contents; only checking the signature with the right key proves it came from the issuer, and this tool never does that, so never trust decoded claims for access decisions. Tokens with the algorithm “none” are flagged as unsigned, and encrypted (five-part) tokens can't be read without the key.
The token stays in your browser and share links are disabled for this tool. For the Base64 step see Base64 Encode and Decode; to tidy the JSON use the JSON Formatter; to convert timestamps use the Unix Timestamp Converter.
Assumptions and limits
- Signatures are not verified. The 'expired' note relies on your device clock.