JWT Decoder
Decode and inspect JWT tokens. All processing happens in your browser.
JWT Decoder
Decode and inspect JSON Web Tokens. All processing happens in your browser.
How to Use JWT Decoder
- 1
Paste your JWT
Paste a JWT token into the input field. The token is automatically split into its three parts.
- 2
Inspect the decoded parts
View the decoded header (blue), payload (purple), and signature (green) sections with pretty-printed JSON.
- 3
Check standard claims
See descriptions for standard claims like exp, iat, iss, sub, and aud with human-readable timestamps.
- 4
Verify expiry status
Instantly see whether the token is expired and a human-readable countdown of the time remaining or elapsed.
Frequently Asked Questions
Related Tools
How JWTs Work in Authentication
A JWT (JSON Web Token) is a compact, URL-safe way to transmit claims between two parties. It has three parts separated by dots: a header (specifying the algorithm), a payload (containing claims like user ID and expiration), and a signature (proving the token was not tampered with). The header and payload are Base64URL-encoded JSON — not encrypted. Anyone can read them, which is why you should never put sensitive data like passwords in a JWT payload.
Common JWT Claims
iss (issuer) identifies who created the token. sub (subject) identifies the user. exp (expiration) is a Unix timestamp after which the token is invalid. iat (issued at) records when the token was created. aud (audience) specifies who the token is intended for. Short expiration times (15 minutes for access tokens) limit the damage window if a token is stolen — which is why refresh tokens exist to obtain new access tokens without re-authentication.
JWT Security Considerations
The most notorious JWT vulnerability is the "alg: none" attack, where an attacker modifies the header to specify no signature algorithm and removes the signature. Libraries that accept "none" as a valid algorithm will verify the tampered token. Always validate the algorithm server-side and reject "none." Another common mistake: storing JWTs in localStorage makes them accessible to any JavaScript on the page (XSS vulnerability). HttpOnly cookies are more secure for browser-based authentication.