JWT Decoder
Decode any JWT token — view header, payload claims, and whether it is expired. Nothing sent to any server.
About the JWT Decoder
JSON Web Tokens (JWTs) are the standard authentication token format used by most modern web APIs. They encode three pieces of information: the header (algorithm used to sign), the payload (claims — user ID, roles, expiry etc.), and the signature (used to verify authenticity).
What this tool does
It Base64-decodes the header and payload and displays them as readable JSON. If the payload contains an exp claim, it shows the expiry date/time and whether the token is currently valid or expired.
Security note
This tool does not verify the signature — that requires the secret key, which should never leave your server. The tool is decode-only and sends no data anywhere.
JWT structure explained
A JWT consists of three Base64URL-encoded sections separated by dots: header.payload.signature. The header identifies the algorithm (typically RS256 or HS256). The payload contains claims: registered claims like iss (issuer), exp (expiry), sub (subject), and iat (issued at), plus any custom claims. The signature is created by hashing the header and payload with a secret or private key.
- iss (issuer) — who created the token (e.g. your auth server URL)
- sub (subject) — who the token is about (usually user ID)
- exp (expiry) — Unix timestamp after which the token is invalid
- iat (issued at) — Unix timestamp when the token was created
- Custom claims — roles, permissions, tenant ID, or any application-specific data
Frequently Asked Questions
const isExpired = Date.now() / 1000 > decodedPayload.exp. Many APIs return 401 Unauthorized when receiving an expired JWT.