A JSON Web Token (JWT) is a compact, URL-safe token made of three base64url-encoded segments — header, payload, and signature — separated by dots. This tool decodes the first two segments in your browser, formats them as readable JSON, checks time-based claims, and surfaces common security issues. Because tokens frequently carry session and identity data, nothing is ever sent to a server.
How it works
A JWT looks like header.payload.signature. The tool:
- Splits the token on
.and confirms there are three segments. - Base64url-decodes the header and payload (converting
-/_back to+//and restoring padding), thenJSON.parses each. - Reads time claims:
exp(expiry) andnbf(not before), both Unix seconds, and compares them to the current time. - Runs security heuristics:
alg: none(unsigned), suspiciously short tokens, and missingissoraudclaims.
The signature segment is shown verbatim but never validated, because real verification needs the signing key — which should never be pasted into any web page.
Tips and notes
- A decoded payload is readable by anyone who has the token, so never put secrets in JWT claims; treat the whole token as sensitive.
- Always verify the signature server-side with the expected algorithm allow-list. Reject
noneand reject unexpected algorithms even if they decode cleanly. - An expired token here may still be accepted elsewhere if a server has clock skew tolerance; the
expcheck is informational. - Short-lived access tokens plus refresh tokens are safer than long expiries — if you see an
expfar in the future, that is a smell worth flagging.