JWT Decoder & Inspector
Decode any JWT instantly, verify HMAC signatures, and catch common security mistakes — all client-side.
Also known as: JWT debugger, Token decoder, JSON Web Token inspector, JWT verifier
How it works
- 1Paste a JWT (header.payload.signature) into the input.
- 2Review the decoded header and payload, plus any expiration/issued-at claims and security warnings.
- 3For HS256/384/512 tokens, enter the shared secret to verify the signature directly.
- 4Copy the decoded header or payload JSON with one click.
Why use JWT Decoder & Inspector
Instant, accurate decoding
Header and payload are decoded and pretty-printed immediately, for any well-formed JWT.
Time claims explained in plain terms
exp, iat, and nbf are converted to readable dates with a clear past/future status, not just raw Unix timestamps.
Real HMAC signature verification
HS256/384/512 signatures are cryptographically verified against a secret you provide, using the Web Crypto API.
Active security warnings
Flags alg:none, deprecated algorithms, and a missing exp claim — the same mistakes behind real documented JWT vulnerabilities.
Honest about what can't be verified
Clearly explains why RS256/ES256 signatures can't be checked without a public key, instead of pretending to verify them.
Nothing ever transmitted
The token and any secret you enter are processed entirely in your browser tab.
Who uses JWT Decoder & Inspector
Debugging an API authentication issue
Inspect exactly what claims a token carries when a request is unexpectedly rejected or accepted.
Checking when a session token expires
Read the exp claim as an actual date and time instead of a raw Unix timestamp.
Verifying a webhook or internal service token
Confirm an HS256-signed token was genuinely issued by a service that knows the shared secret.
Auditing a third-party JWT for security issues
Check whether a token uses a weak algorithm, alg:none, or lacks an expiration claim.
Learning how JWTs are structured
See the actual header, payload, and signing input behind the token format used across modern auth systems.
Testing your own JWT implementation
Confirm your service is issuing tokens with a real algorithm, correct claims, and a working signature.
About JWT Decoder & Inspector
A JWT is just three base64url-encoded segments joined by dots — a header, a payload, and a signature — and decoding the first two requires nothing more than reversing that encoding. The genuinely useful part isn't the decode itself, but everything built around it: understanding what the claims actually mean, and knowing what to look for when something's wrong.
This tool draws a clear line between decoding and verifying. Decoding — reading the header and payload — works for any well-formed token, since no cryptographic key is needed to just look inside it. Verifying a signature is different: HS256/384/512 tokens are HMAC-based and can be verified client-side with just the shared secret, which this tool supports directly. RS256, ES256, and other asymmetric algorithms require a public key this tool intentionally doesn't ask for, so it's honest about not being able to verify those.
It also actively looks for known JWT security anti-patterns: an alg of "none" (a critical vulnerability if a server actually accepts it, since it means no signature is required at all), deprecated or weak algorithms, and a missing exp claim (meaning the token never expires). These aren't hypothetical — they've been the root cause of real, documented authentication bypasses in production systems.
Every part of this — decoding, claim interpretation, security analysis, and HMAC verification — runs entirely in your browser. That matters because a JWT often carries live session or authorization data; pasting one into a tool that sends it to a server is a real exposure, even for a token you're just trying to debug.
JWT Decoder & Inspector vs. other options
How Open Tools Library compares to desktop software and other online tools.
| Feature | Open Tools Library | Desktop software | Other online tools |
|---|---|---|---|
| Price | Free, unlimited | Varies by IDE plugin | Often free with tracking |
| Token privacy | Never leaves your device | Stays local | Often sent to a server |
| Signature verification | Real HMAC verification built in | Rarely included | Sometimes present |
| Security anti-pattern warnings | Built in (alg:none, weak algs, missing exp) | Rarely included | Rarely included |
| Time claim interpretation | Human-readable with past/future status | Varies | Often raw timestamps only |
| Installation | None | Required | None |
Pro tips
- Be cautious pasting production tokens into any online tool — this one never transmits them, but that's not true of every JWT tool on the internet.
- Only HS256/384/512 can be verified with a plain secret — RS256/ES256/PS256 need a public key, which is a fundamentally different, asymmetric trust model.
- An expired exp claim doesn't automatically mean a token is rejected — that depends entirely on whether the receiving application actually checks it.
- alg:none being present in a token is only dangerous if a server is naive enough to accept it — but that exact mistake has caused real production vulnerabilities.
Technical specs
- Format supported
- JWS Compact Serialization (header.payload.signature)
- Decode engine
- Native base64url decoding
- Verify algorithms
- HS256, HS384, HS512 (HMAC-based)
- Not verifiable here
- RS256, ES256, PS256 (require a public key)
- Verify engine
- Native browser Web Crypto API (SubtleCrypto HMAC)
- Processing location
- 100% local, in your browser
Privacy & security
A JWT often carries live session identity or authorization claims — pasting one into an online tool is inherently sensitive, so where it's processed matters.
The token and any secret you enter are processed entirely in your browser — never transmitted anywhere.
No logging, no storage — nothing is retained after you close the tab.
Safe to use even with production tokens, since nothing about them is ever sent to a server.
The same trust model applies whether you're debugging a throwaway test token or a live one.
Frequently asked questions
Is my token or secret uploaded anywhere?
No. Decoding and verification both happen entirely in your browser — nothing is ever transmitted.
Can this verify RS256 or ES256 tokens?
No — those use asymmetric cryptography and require the issuer's public key, which this tool doesn't ask for. Only HS256/384/512 can be verified here.
What does alg:none mean, and why is it flagged?
It means the token claims to require no signature at all. If a server actually accepts tokens like this, anyone can forge arbitrary claims — it's a well-documented, critical JWT vulnerability class.
Why does it warn about a missing exp claim?
Without an expiration claim, a token is valid forever unless the issuing system revokes it some other way — worth knowing, since that's easy to overlook when generating tokens.
Can this tool create or sign new JWTs?
No — it's a decoder and verifier only, not a token issuer.
Troubleshooting
It says the token can't be decoded
A JWT must have exactly three dot-separated segments. Check for missing characters, extra whitespace, or a token that was truncated when copied.
The payload segment shows an error
The payload segment isn't valid base64url-encoded JSON — this usually means the token was corrupted or copied incompletely.
Verification says invalid even though I'm sure the secret is right
Check for trailing whitespace or a copy-paste encoding difference in the secret — HMAC verification is byte-exact, so even an invisible extra space will produce a mismatch.
There's no option to verify my RS256 token
RS256 is an asymmetric algorithm that requires the issuer's public key to verify, not a shared secret — this is a deliberate limitation, not a bug, since supporting it safely would need public key input.
Related searches
Landed here looking for something worded a little differently? JWT Decoder & Inspector covers all of these too:
Ready to use JWT Decoder & Inspector?
Free, private, and ready right now — no signup required.
Scroll to JWT Decoder & Inspector