JWT Decoder & Local Signature Verifier

Paste a JSON Web Token to decode its header and payload, read the expiry and issued-at times, and verify the signature locally. The token and any key you enter stay in your browser.

Encoded token

Paste a token, or load the sample. ✕ {{decoded.error}} {{parts[0]}}.{{parts[1]}}.{{parts[2]||'(no signature)'}}

About this tool

A JWT is three Base64URL segments — header, payload, signature — joined by dots. Decoding just reverses the Base64URL encoding to read the JSON; it doesn't require a key, which is why anyone can read a token's claims without being able to forge one.

Verifying the signature does require the right secret (HMAC) or public key (RSA/ECDSA/Ed25519), and runs through the browser's native Web Crypto API — the same primitives a server would use.

Privacy: decoding, signature verification and key matching happen entirely in your browser with the Web Crypto API — the token, secret and any key you paste never leave this page. The one exception is "Fetch JWKS" on the JWKS (URL) tab: clicking it fetches whatever URL you enter directly from your browser to retrieve public keys, exactly like a real verifier would. The token and any secret are never sent to that URL, and nothing routes through this site — but the fetch itself is a real network request, made only when you press that button, never automatically from the token's own jku/x5u header.