JWT Verifier
Check whether a JWT's signature is genuine using its secret (HS256/384/512) or a public key (RS256/384/512, ES256/384). Verification runs entirely via the browser's Web Crypto API — the key never leaves the page.
Paste a token, choose the algorithm (or let it auto-detect from the header), enter the matching secret or PEM public key, then click Verify. The check runs locally using SubtleCrypto — nothing is sent to a server.
Token
Learn more
What "verifying" actually checks
Verification recomputes the signature over the token's header and payload using the key you provide, then checks whether that result matches the signature segment already in the token. A match proves two things simultaneously: the token was signed by whoever holds that key (or the matching private key, for asymmetric algorithms), and the header and payload haven't been altered since — changing even one character of either would produce a completely different expected signature.
This is the fundamental difference between decoding and verifying: decoding reads what a token claims; verifying proves those claims came from a party who actually holds the signing credential. A token can decode perfectly and still fail verification, which is exactly what happens if someone edits a payload claim (changing a role from "user" to "admin", for instance) without also being able to re-sign it — the signature simply won't match anymore.
Frequently asked questions
Is my secret or private key sent anywhere?
No — verification uses the browser's built-in Web Crypto API (SubtleCrypto), running entirely on your device. Only ever paste a public key here, never a private signing key.
Which algorithms are supported?
HS256/384/512 (HMAC, needs the shared secret), RS256/384/512 (RSA, needs the public key in PEM/SPKI format) and ES256/384 (ECDSA, also PEM/SPKI). Other algorithms are explicitly rejected rather than silently mismatched.
What format should the public key be in?
Standard PEM SPKI format, starting with -----BEGIN PUBLIC KEY-----. If you only have a private key or a certificate, you'll need to extract the public key in that format first.