JWT Security Inspector
Check a decoded token against the weaknesses that show up in real audits.
Paste a token on the left.
How it works
This reads a token's header and claims and reports what they say about the system that issued it. It does not verify the signature, resolve a key, or contact the issuer — a page running in your browser has none of those, and a report implying otherwise would be worse than no report.
That is a narrower job than the name suggests, and it is still a useful one. A great deal of how a JWT deployment is configured is visible in the token itself.
What the header gives away
An alg of none means the token is unsigned and every claim in it is unauthenticated. A
symmetric algorithm means the key that checks the token is the key that mints them, so any party able to verify is
also able to issue. And jku, jwk, x5u or x5c mean the token is
nominating the key used to check it — legitimate in some federated designs, and a problem wherever a verifier
honours them without pinning the source.
What the claims give away
A missing exp is a token that never expires on its own. A missing aud is a token nothing
restricts to one service, which matters when several share a signing key. A missing jti is a token
that cannot be revoked individually. None of these is automatically wrong; each is a decision, and the report says
which ones were made.
Credentials in the payload
A JWT is signed, not encrypted. Every claim is readable by anyone holding the token — including each intermediary it passes through and anything that logs a request header. Claims whose names or values look like key material are flagged by name only: the value is the exposure, and printing it into this page, your clipboard and your scrollback would compound that rather than report it.
What it will not do
Every finding states what the token shows and why it matters. None describes how to exploit it. This publication reports on weaknesses; it does not publish the next step.
Example
The sample is an unsigned token carrying a claim named api_key. It draws two critical findings: the
missing signature, and a credential sitting in a payload that anyone holding the token can read. The second is the
one people are surprised by, and it is the more common of the two in real systems.
Frequently asked questions
How is this different from the JWT Decoder?
The decoder shows you what a token says. This one reads the same data and reports what it implies about the issuing system — an absent expiry, a header that nominates its own verification key, a lifetime measured in months, a credential sitting in a claim. Same input, different question.
Does it check the signature?
No, and it will not ask you for the key that would let it. Everything reported here is derived from the header and claims alone. A token can draw no findings at all and still be forged; only the issuer key settles that.
Why is a claim called out but its value not shown?
Because the value being readable is the finding. A JWT is signed, not encrypted, so anything in the payload is visible to every holder and every request log along the way. Printing a suspected secret into this page and your clipboard would repeat the exposure rather than report it.
What is wrong with jku or jwk in the header?
Nothing, in a design that expects them. Both let a token supply the key material used to check it — jku as a URL, jwk inline. They become a problem where a verifier follows them without pinning the source against an allowlist, because the question of whether a token is trustworthy collapses into whether it says it is.
Will it tell me how to exploit what it finds?
No. Each finding states what the token shows and why it matters, which is what you need to fix it. This site reports on weaknesses and does not publish the next step.
Related tools
JWT Decoder
Decode a JSON Web Token and read its header, claims and expiry.
LocalJSON Formatter & Validator
Format, validate and measure JSON, with errors located by line and column.
LocalSAML Response Decoder
Decode a SAMLResponse and read its issuer, subject, conditions and attributes.
LocalRegex Tester
Test a pattern against sample text with a hard execution timeout.
LocalHash Generator
Produce SHA-1, SHA-256, SHA-384 and SHA-512 digests of text or a file.
LocalUUID Generator
Generate cryptographically random v4 UUIDs in bulk.
LocalFrom the intelligence desk
- Vulnerability Issabel Framework Authentication Bypass (CVE-2026-89026)