JWT Decoder
Decode and inspect JSON Web Tokens (JWTs) securely in your browser
Header
DecodedPayload
DecodedToken Details
Issuer (iss)
-
Issued At
-
Expiration
-
Algorithm
-
Status
-
Verify Signature
Signature verification not supported for algorithm . Use HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, or ES512.
none algorithm. It is not cryptographically signed and can be forged.
Understanding JWTs
How JSON Web Tokens work and why they're important
What is a JWT?
JWT (JSON Web Token) is an open standard for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed.
JWT Structure
JWTs consist of three parts separated by dots: header.payload.signature. The header typically contains the token type and the signing algorithm being used.
Security Best Practices
Always validate JWT signatures, check expiration times, and never store sensitive data in a JWT payload as they can be decoded (but not altered without the signature key).
Working with JSON Web Tokens
What each part of the token contains
A JWT is three base64url-encoded segments joined by dots: header.payload.signature. The header names the signing algorithm (alg) and usually a key identifier (kid). The payload carries the claims. The signature covers the first two segments exactly as they appear in the token.
Everything before the signature is encoded, not encrypted. Anyone holding the token can read the payload — including in a browser devtools panel or a server log. Never put anything in a JWT that the bearer shouldn't see. If you need confidentiality rather than integrity, you want JWE, not JWS.
Decoding is not verifying
This is the distinction that causes production incidents. Decoding parses the base64url and shows you the claims. Verifying checks the signature against a key, and confirms the token hasn't been altered and came from the issuer you expect.
A decoded-but-unverified token is attacker-controlled input. Anyone can craft a JWT with sub: "admin" and any claims they like. If your code reads claims without checking the signature, it will believe them. Always verify before you trust a single field.
The claims worth checking
iss — who issued it. Must match the issuer you configured, exactly. aud — who it's for. If it doesn't name your application or API, the token was minted for someone else and you should reject it.
exp and nbf — the validity window, as Unix timestamps in seconds (not milliseconds, a common off-by-1000 bug). iat — when it was issued, useful for enforcing a maximum age independent of exp. sub — the subject, which is the stable user identifier you should key off rather than an email address.
Frequently asked questions
Stop hand-rolling token validation
You just decoded that token by hand. AuthAction issues, signs, and rotates them for you — with JWKS, key rotation, and expiry handled.
Free, unlimited users. No credit card required.