JWT Token Decoder & Debugger — Free Online, No Login
Paste any JWT token to decode it — header, payload, claims, and expiry all laid out clearly. Nothing leaves your browser.
Decode Token
How to decode a JWT token online
Paste your token into the box and hit Decode. The tool splits it into the three parts — header, payload, signature — and formats each as readable JSON. The header tells you the algorithm used. The payload has all the claims: who the user is, when it expires, what roles they have. The signature is shown as-is since verifying it requires your server's secret key.
What's actually inside a JWT
A JWT looks like three base64url strings joined by dots: header.payload.signature. That's it. The "encoding" makes it look cryptic but there's no encryption — paste the first two parts into any base64 decoder and you get plain JSON straight away.
The header typically just says what algorithm signed it (HS256, RS256, etc). The payload is where the actual data lives — usually sub (the user ID), iat (when it was issued), exp (when it expires), and whatever custom claims the server added. The signature is the only part that proves the token hasn't been tampered with, and verifying that needs the server's key — this tool can't do that.
Common claims and what they mean
| Claim | Meaning | Type |
|---|---|---|
| sub | Subject — usually the user ID | Registered |
| iss | Issuer — who created the token | Registered |
| aud | Audience — who the token is for | Registered |
| exp | Expiry — Unix timestamp when token stops being valid | Registered |
| iat | Issued at — Unix timestamp when token was created | Registered |
| nbf | Not before — token isn't valid until this time | Registered |
Why your token might be rejected even though it looks fine
- Expired — the
exptimestamp is in the past. Check it here and you'll see exactly when it expired. - Wrong audience — your server checks
audmatches the expected value, and it doesn't - Clock skew — server and client clocks differ by more than the tolerance (usually a few seconds)
- Tampered payload — someone changed a claim and the signature no longer matches
- Wrong algorithm — server expects RS256 but token was signed with HS256
Complete Developer Toolkit
JWT decoding sits at the center of API authentication debugging. After decoding a token, use our JSON formatter to pretty-print and validate the decoded header and payload — JWT claims like iss, sub, exp, and aud are standard JSON objects. Our Base64 encoder lets you manually encode or decode any individual JWT segment — JWTs are three Base64url-encoded parts separated by dots. Our API response simulator generates mock API responses containing JWT tokens so you can test your frontend authentication flow without a live auth server.
When debugging JWT-protected API calls, our URL encoder safely encodes token strings for use in query parameters or Authorization headers. The regex tester helps you write patterns to extract JWT tokens from log files or HTTP headers. Our UUID generator creates the jti claim values used to uniquely identify tokens and prevent replay attacks. For checking SSL certificates on the servers issuing your JWTs, our SSL expiry checker verifies your HTTPS is valid. The diff checker is handy for comparing two JWT payloads side by side to spot claim differences between token versions.
How to Use This Tool
- 1 Paste your JWT token into the input field.
- 2 Hit Decode JWT — or just press Ctrl+Enter.
- 3 Check the status badge to see if the token is still valid or has expired.
- 4 Read through the Header and Payload panels. Copy either one with the copy button.