WebCrypto · HS / RS / PS / ES

JWT signature verifier

Check the signature with the browser’s own crypto, then read the claims — in that order, so a payload is never trusted just because it parsed.

Paste the issuer’s public JWKS, or a single public JWK. Never paste a private key.

The token and key stay in this tab. A key set is often the whole trust boundary for a service, so nothing is sent anywhere or stored.

Short answer: paste the token, paste the issuer’s JWKS (or the shared secret), press verify. A green result means the signature checks out against that key — nothing more.

The three things people confuse

Reading a key set

A JWKS is a list of public keys with a kid each. The verifier picks the key whosekid matches the token header, and refuses when there is no match instead of trying every key until one works. Trying them all is how a token signed by the wrong tenant gets accepted.

Need to build a token to test this with? The JWT encoder signs one with HS256, and the HMAC generator shows the raw signature.

JWT questions

Is decoding the same as verifying?

No, and the difference matters. Anyone can write a token with "role":"admin" and a signature of random bytes; decoding shows you what the token claims, while verifying proves a key you trust produced it. This page only reports claims after it has checked the signature.

Why is alg: none refused?

Because a token that declares no algorithm has no signature to check. Accepting it is the classic JWT bypass — an attacker rewrites the payload and sets alg to none. There is no legitimate reason for a verifier to accept one, so it is rejected outright rather than shown as "valid".

Which algorithms are supported?

HS256/384/512 with a shared secret, RS256/384/512 and PS256/384/512 with an RSA key from a JWKS, and ES256/384/512 with an EC key. Everything runs through WebCrypto, so the verification is the browser’s own, not a re-implementation.

Why does a valid signature still not mean the token works?

Expiry, not-before, audience and issuer are separate rules. A token can be signed correctly and still be expired. The page lists exp, nbf and iat with their status so the two questions stay separate.

Related tools