What is JWT Decoder?
Paste any JSON Web Token to see its decoded header, payload, and signature. Check token claims, verify expiration times, and debug authentication issues in seconds.
The decoder splits the token on dots, Base64URL-decodes the header and payload, and parses both as JSON. You see the signing algorithm (HS256, RS256, EdDSA, etc.), all reserved claims (iss, sub, aud, exp, iat, nbf, jti), and any custom claims your service added. Timestamp claims are converted from Unix epoch to your local timezone so you can spot an expired token at a glance.
How to use
- Paste your JWT token into the input field — the three Base64-encoded sections will be automatically detected.
- View the decoded header (algorithm, type) and payload (claims, expiration, issuer) side by side.
- Copy individual decoded sections or the full parsed output.
When to use
- Debugging a 401 response by checking whether the bearer token's exp has already passed.
- Verifying that a token issued for staging carries the right aud and iss before the production rollout.
- Reading the user_id or scopes a third-party SSO provider embedded in your access token.
Result
You're debugging a 401 error in your API. Paste the bearer token from the request header to check if the 'exp' claim has already passed or if the 'aud' claim matches your expected audience.
FAQ
- Does this tool verify the signature?
- For HMAC tokens (HS256, HS384, HS512), paste the secret and the tool checks the signature right on your device. For RS and ES tokens (RS256/384/512, ES256/384/512), paste the issuer's PEM public key and it verifies the same way. Either way, the secret or key never leaves your device.
- Is it safe to paste a real production token?
- Decoding happens on your device — the token is never sent to a server. That said, a bearer token grants whoever holds it the user's access, so the bigger risk is anyone watching your screen, not the tool itself.
- What does it mean if the alg field says 'none'?
- Some libraries used to accept unsigned tokens with alg=none, which is a known attack vector. A production API should reject these outright. Seeing 'none' on a token meant to authenticate users is a red flag worth fixing.
- Why does the payload show numbers instead of dates for exp and iat?
- JWTs store timestamps as seconds since 1970-01-01 UTC. The decoder converts them to a human-readable local date next to each claim so you can tell whether a token has expired without doing the math.
- Can I decode a token that uses encryption (JWE)?
- JWE tokens have five dot-separated parts and are encrypted, not just signed. This decoder reads JWS tokens (three parts: header.payload.signature). For JWE you need the decryption key, which by design has to stay on the receiving server.
Related Tools
PGP Key Generator
Generate PGP encryption key pairs
Secure Notes
Create and store encrypted notes locally
File Encryptor
Encrypt files with AES-256 encryption
SSL Certificate Decoder
Decode and inspect SSL/TLS certificates
Caesar Cipher Tool
Shift cipher with custom rotation
Passphrase Generator
Generate strong memorable passphrases