JWTLens
JWT Decoder
Paste a JWT — see the decoded header, payload, and whether it's expired.
Standard JWT claims and what they mean
A JWT is three base64url segments separated by dots: header, payload, and signature. These are the registered claims defined by RFC 7519, all of them optional.
| Claim | Name | Meaning | Type |
|---|---|---|---|
| iss | Issuer | Who issued the token | String |
| sub | Subject | Who the token is about, usually a user ID | String |
| aud | Audience | Who the token is intended for | String or array |
| exp | Expiration time | Reject at or after this time | Unix seconds |
| nbf | Not before | Reject before this time | Unix seconds |
| iat | Issued at | When the token was created | Unix seconds |
| jti | JWT ID | Unique identifier, used to prevent replay | String |
Decoding is not verifying. Anyone can read a JWT payload because it is only base64-encoded, not encrypted, so never put secrets in it and never trust its contents without checking the signature server-side. Times are Unix seconds, not milliseconds.
JWT structure
A JSON Web Token has three base64url-encoded parts separated by dots: header (algorithm and type), payload (claims like sub, iat, exp), and signature. The signature verifies the token hasn't been tampered with. JWTs are self-contained — the server doesn't need a database lookup to validate them.
Common JWT claims
Standard claims include: iss (issuer), sub (subject/user ID), aud (audience), exp (expiration timestamp), iat (issued at), nbf (not before), jti (unique token ID). Custom claims can hold any data. Never put sensitive information in a JWT payload — it's encoded, not encrypted.
Frequently asked questions
I pasted my JWT and it says 'expired' — can I still decode it?
Yes. Expiration is just a claim (the 'exp' field) inside the payload — decoding still works fine. The token's data is readable regardless of whether it's expired; expiration only matters to the server that validates it.
Is it safe to paste my JWT into this tool?
Yes — decoding happens entirely in your browser. Nothing is sent to any server. That said, a JWT's payload is not encrypted, so anyone who has the token can read its contents, which is why sensitive data should never be stored in JWT claims.
What's the difference between a JWT and a session cookie?
A session cookie is just an opaque ID — the server must look up the session data in a database. A JWT is self-contained — it carries the user data inside the token itself, which the server verifies via the signature without a database lookup.
How does decoding a JWT relate to the Base64 tool?
A JWT's header and payload are Base64url-encoded JSON. This decoder splits the token at the dots and decodes each part, which you could do manually with our Base64 tool — but this adds JWT-specific features like expiration checking and claim labeling.
Related Developer calculators
Cron Schedule Explainer
Parse a cron expression into a human-readable schedule description.
OpenAI Feature Gross Margin Calculator
Gross margin of a per-user AI feature after tokens, retries, and cache.
OpenGPU VRAM & Deployment Fit Planner
VRAM needed to serve a model, including the KV cache that grows with concurrency.
OpenDatabase Storage, RAM & IOPS Sizing Calculator
Storage, RAM, and IOPS to provision for a database after indexes, replicas, and growth.
OpenLast updated: September 7, 2026