Start a project

Tool 180 of 194 · Security

JWT & JWKS Signature Verifier

Find out whether a token is genuine, not just what it says: verify the signature and the claims without sending the token anywhere.

JWT & JWKS Signature Verifier

Token and key

The sample token was issued at 09:00 UTC on 31 October 2026 and lasts an hour, so it shows as expired today: put 2026-10-31T09:30:00 in Check at to see it pass.

Claim checks

ClaimResultDetail

    Header

    Header

    Claims

    Claims

    01

    What it does

    Checks a JWT's signature with your browser's own cryptography against a JWKS, public key, certificate or secret, then checks expiry, audience and issuer.

    • RS256 to RS512, PS256 to PS512, ES256 to ES512, EdDSA (where the browser supports it) and HS256 to HS512
    • JWKS key chosen by kid, with a clear message when the key has been rotated
    • PEM public keys and X.509 certificates as well as JWKs
    • exp, nbf, iat, iss and aud checked, with clock skew

    02

    Private by design

    Everything happens in your browser. Nothing you type, paste or upload is sent anywhere, and it keeps working offline once the page has loaded.

    03

    What you get

    A verdict with the reason, claim checks, warnings and the decoded header and claims, with a Copy and a Download button on every result.

    • JWT
    • JWKS
    • Signature
    • OAuth

    Why it matters

    A JWT decoder shows what a token claims, but anyone can write a token that claims anything. What makes a token trustworthy is its signature, checked against the issuer's key, and then its claims: has it expired, is it for your API, did the right issuer make it. Doing that by hand means writing code, and pasting production tokens into an unknown website to check them is a risk in itself.

    This verifier does the whole check in your browser with WebCrypto, the same cryptography the browser uses for HTTPS, and sends nothing anywhere. Paste the issuer's JWKS (from its jwks_uri), a PEM key or certificate, or a shared secret. It picks the key by kid, verifies the signature, and checks exp, nbf, iat, iss and aud with the clock skew you allow. It also flags the classic mistakes: alg none, an HS256 token checked against a public key (algorithm confusion), ECDSA signatures in the wrong encoding, and tokens that live for days.

    How to use it

    1. Paste the token.
    2. Paste the issuer's JWKS, a public key, a certificate or the shared secret.
    3. Add the issuer and audience you expect.
    4. Read the verdict, the claim checks and the warnings.

    FAQ

    Is it safe to paste a real token?

    The token never leaves your browser: verification uses WebCrypto on your device. Even so, treat live tokens as secrets and prefer expired or test ones.

    Where do I get the JWKS?

    From the issuer's discovery document, at /.well-known/openid-configuration, under jwks_uri. Paste the JSON it returns.

    What is algorithm confusion?

    A bug where a server reads the algorithm from the token. An attacker sets alg to HS256 and signs with your public key as the secret. Verifiers must decide the algorithm from the key, never from the token.

    Can it decrypt JWE tokens?

    No. Encrypted tokens (five parts) need the recipient's private key. The page recognises them and says so.

    Work with me

    Want a site that gets these right?

    I build fast, accessible websites and web apps that pass these checks from day one. Tell me about your project and I'll reply personally with honest next steps.

    All developer tools · Back to leej.uk