🔑 JWT Token Decoder
Paste any JWT to instantly decode its header, payload, and signature. Inspect claims, expiry, algorithm, and more — entirely in your browser.
Paste a JWT token above to decode it
Header · Payload · Claims · Expiry — all decoded in your browserAbout JWT Decoder
JSON Web Tokens (JWT, pronounced "jot") are compact, URL-safe tokens defined by RFC 7519 and widely used for authentication and information exchange in modern web applications. A JWT consists of three Base64URL-encoded sections separated by dots (header.payload.signature). The header identifies the token type and signing algorithm, the payload carries claims about the subject (user ID, roles, expiry), and the signature allows the recipient to verify the token has not been tampered with.
This tool instantly decodes all three sections of any JWT and presents them as formatted JSON. It also parses timestamp claims (exp, iat, nbf) into human-readable dates with relative time — so you can immediately see if a token has expired or when it was issued. Everything runs entirely in your browser; no token is ever transmitted to a server.
How to decode a JWT
- Copy your JWT from your application, browser DevTools, Postman, or curl response.
- Paste it into the input area above — the three sections decode automatically.
- Inspect the Header (algorithm, type, key ID), Payload (all claims), and Signature tabs.
- Check the Expiry section to see if the token is still valid, expired, or not yet active (
nbf).
JWT sections explained
🔴 Header
Contains the token type (always 'JWT') and the signing algorithm: HS256, RS256, ES256, PS256, and their 384/512 variants. May include a key ID (kid) for key rotation.
🔵 Payload
Contains claims — statements about the user and additional metadata. Registered claims: iss (issuer), sub (subject), aud (audience), exp (expiry), iat (issued at), nbf (not before), jti (JWT ID).
🟢 Signature
A cryptographic signature of header + payload. Verifying it requires the server's secret key (HMAC) or public key (RSA/ECDSA) — this client-side tool can only decode, not verify.
⏰ Expiry Check
exp, iat, and nbf timestamps are converted to local date/time and shown with relative time: 'expires in 2h', 'issued 3d ago', 'not valid for 1m'.
🔒 Privacy
100% client-side. Your token never leaves your browser. Avoid pasting tokens on shared computers or untrusted environments.
🌐 Algorithm support
Decodes any JWT regardless of algorithm — HS256/384/512, RS256/384/512, ES256/384/512, PS256/384/512. The header is decoded as-is.
Frequently Asked Questions
Can this tool verify the JWT signature?
No. Signature verification requires the server's secret key (for HS256/384/512) or the server's public key (for RS256, ES256, PS256). This tool can only decode and display the header and payload. To verify a JWT, use your backend SDK or a tool like jwt.io where you can provide the key.
Is it safe to paste a real JWT into this tool?
All decoding happens in JavaScript running in your browser — no network request is made. However, treat JWTs like passwords: avoid pasting tokens from production systems on shared or public computers. For development and debugging, this tool is completely safe to use.
What is the difference between exp, iat, and nbf?
exp (Expiration Time) is the Unix timestamp after which the token must not be accepted. iat (Issued At) is when the token was created. nbf (Not Before) is the earliest time the token should be accepted — useful for tokens issued slightly ahead of when they will be used.
Why does my JWT have only two parts instead of three?
A standard JWT always has three dot-separated parts. If you see only two parts, the token may be an unsecured JWT (alg: none) with an empty signature, or it may be truncated. It could also be a different token format like an opaque OAuth 2.0 access token, which is not a JWT.
What algorithms does this decoder support?
Any algorithm — the decoder simply Base64URL-decodes the header and payload. HMAC (HS256/384/512), RSA (RS256/384/512), ECDSA (ES256/384/512), and RSA-PSS (PS256/384/512) all produce the same JSON header and payload structure. Only the signature format differs.