In one sentence
This tool splits a JWT into its base64url-encoded header, payload and signature, decodes the JSON, explains each claim, converts exp, nbf and iat into dates, warns about unsafe patterns such as alg none, and can verify HS256, HS384 or HS512 signatures locally with Web Crypto.
How do I use the JWT Decoder?
Paste a token, read the status line and warnings, then check each claim against what your system expects.
- Paste the token. A leading
Beareris removed automatically. - The colored line shows the three parts: header (red), payload (purple), signature (teal).
- The status line shows whether the token is valid now, expired or not yet valid, based on your device's clock.
- Warnings flag problems such as
alg: none, missingexp, long lifetimes, key URLs in the header (jku,x5u) and claim names that suggest secrets. - To check an HMAC signature, open the verification panel and enter the shared secret.
Click Make a sample token to generate a fresh HS256 token signed with the demo secret twobo-demo-secret, valid for 15 minutes.
What does a JWT consist of?
Three base64url strings joined by dots: a JSON header, a JSON payload of claims, and a signature over the first two.
| Part | Example content | Purpose |
|---|---|---|
| Header | {"alg":"RS256","typ":"JWT","kid":"2026-11"} |
How it was signed and with which key |
| Payload | {"iss":"https://auth.example.com","sub":"user-4821","aud":"api://orders","exp":1794400000} |
Claims about the subject |
| Signature | Bytes from the algorithm | Lets the verifier detect changes |
The format is defined by RFC 7519, with signatures in JWS (RFC 7515) and encryption in JWE (RFC 7516).
Which checks should my code perform?
Signature with a pinned algorithm and trusted key, then issuer, audience, expiry and not-before, then token type and scopes.
RFC 8725, JSON Web Token Best Current Practices, lists the pitfalls. In particular, never let the token's alg choose the verification method, reject none, and check aud so a token for one API cannot be used at another. For OAuth access tokens in the JWT format, RFC 9068 also requires checking typ: at+jwt.
Is my token sent anywhere?
No. Decoding, warnings and HMAC verification all happen in this page with JavaScript and the browser's Web Crypto API.
You can load the page, disconnect from the network and keep using it. Even so, treat live production tokens as credentials: prefer expired or test tokens, and revoke any token that has been exposed.
Questions
Does decoding a JWT verify it?
No. Anyone can decode a JWT, because the header and payload are only base64url-encoded. Verification means checking the signature with the right key and algorithm, then checking iss, aud, exp and other claims. This tool verifies HMAC signatures; for RS256, ES256 or PS256 tokens, verify in your own code against the issuer's JWKS.
Why does the tool warn about HS256?
HS256 uses a shared secret, which is fine between two parties that trust each other. But if an issuer normally signs with RSA or EC keys, a token claiming HS256 may be an algorithm confusion attack, where an attacker uses the public key as an HMAC secret. Servers must pin the algorithms they accept.
Can it decode encrypted tokens?
It recognizes encrypted JWTs (JWE, five dot-separated parts) and shows their header. The content can only be read with the recipient's private key, which you should not paste anywhere.
What time format do exp, nbf and iat use?
NumericDate: seconds since 1970-01-01T00:00:00Z, ignoring leap seconds (RFC 7519). The tool shows each as an ISO date and relative time, and warns if a value looks like milliseconds.
Related reading
- OAuth security: what to get right
- Information security for identity systems
- Planning API Security Training for a Distributed Team
- API Security Today: The OWASP API Top 10 in Practice
- BYOD Security: An Identity-First Checklist
- How to Choose an Identity Integration Partner
- XACML With OpenID Connect, SAML, OAuth and SCIM: Who Does What
- Identity Conferences Worth Following, and How to Get Value