# JWT Verifier — Check an HMAC Signature and Claims Locally

> Verify a JWT's HS256 signature and its expiry, issuer and audience claims, entirely in your browser.

To verify a JWT, paste the token and its shared secret. The HS256, HS384 or HS512 signature is recomputed with the Web Crypto API in your browser and compared to the one in the token — nothing is transmitted. Expiry, not-before and issued-at claims are checked against the current time, and RS/ES tokens are refused rather than given a meaningless tick.

**URL:** https://convertto.tech/t/jwt-verifier
**Category:** Hash & Crypto Tools (https://convertto.tech/c/crypto-tools)
**Privacy:** Runs entirely in the browser; no upload
**Cost:** Free, no sign-up
**Last updated:** 2026-08-01

## Key facts

- **Privacy:** The token and secret stay in the page — no request is made
- **Supports:** HS256, HS384 and HS512
- **Cost:** Free, unlimited, no sign-up

## How to use

1. Enter or paste your jwt.
2. Enter the shared secret — it stays in your browser and is never sent anywhere.
3. Turn "Check the time-based claims" on or off as needed.
4. The result appears immediately — copy or download it.

## FAQ

### Why can this not verify an RS256 token?

RS256 is asymmetric: verifying needs the issuer's public key, which usually means fetching a JWKS document over the network. Doing that here would mean either sending your token to a server or fetching a third-party URL on your behalf. A tool that showed a green tick without genuinely checking would be worse than one that says plainly it cannot.

### Is it safe to paste a real token here?

The token never leaves your browser. That said, a JWT is a bearer credential — anyone holding it can act as you until it expires — so if you have pasted a production token anywhere at all, including a chat message on the way here, treat it as compromised and rotate it.

### What is the "alg: none" attack?

A JWT declares its own algorithm in its header. If a server trusts that field, an attacker can change it to "none", strip the signature and forge any claims they like. Every current library rejects it by default, but the vulnerability recurs whenever someone verifies with the algorithm the token names rather than the one they expect.

### The signature is valid but the token is expired. Is it usable?

No. A valid signature only proves the contents have not been altered — it says nothing about whether the token is still in date. Both checks have to pass, and forgetting the second is a common and serious authentication bug.

## Related tools

- [JWT Signer](https://convertto.tech/t/jwt-signer): Create a signed HS256, HS384 or HS512 JSON Web Token for testing, entirely in your browser.
- [JWT Decoder](https://convertto.tech/t/jwt-decoder): Decode a JSON Web Token to inspect its header, payload and expiry — locally, never sent anywhere.
- [HMAC Generator](https://convertto.tech/t/hmac-generator): Generate an HMAC signature with SHA-256, SHA-1, SHA-384 or SHA-512 and a secret key.
- [File Hash & Checksum Calculator](https://convertto.tech/t/file-hash-calculator): Compute SHA-256, SHA-384, SHA-512 or SHA-1 for any file and verify it against a checksum.
- [MD5 Hash Generator](https://convertto.tech/t/md5-hash-generator): Generate an MD5 hash from any text — instantly and entirely in your browser.
- [SHA-1 Hash Generator](https://convertto.tech/t/sha1-hash-generator): Generate a SHA-1 hash from text — 160-bit digest, computed locally.
- [SHA-256 Hash Generator](https://convertto.tech/t/sha256-hash-generator): Generate a secure SHA-256 hash from any text, in hex and Base64.
- [SHA-384 Hash Generator](https://convertto.tech/t/sha384-hash-generator): Generate a SHA-384 hash — a truncated SHA-512 used in TLS cipher suites.
