JWT Decoder & Verifier

Decode the header and payload of a JSON Web Token and optionally verify its signature. Runs 100% in your browser — your token is never transmitted.

What is a JWT?

A JSON Web Token (JWT) is a compact, URL-safe token format defined by RFC 7519. It is the most common way to represent authentication and authorization claims between services — particularly in OAuth 2.0, OpenID Connect, and API gateways.

A JWT consists of three base64url-encoded parts separated by dots: header.payload.signature. The header declares the signing algorithm (e.g. HS256, RS256), the payload carries claims (subject, issuer, expiry, custom data), and the signature proves the token was issued by a holder of the secret or private key.

This decoder runs entirely in your browser using the Web Crypto API. Your JWT and any secret you paste never leave your machine — there are no network requests for decoding or verification.

Standard Claims

Common Algorithms

Security Notes

Frequently Asked Questions

Yes. This tool runs entirely in your browser using JavaScript. The token is never sent to any server, logged, or stored. That said, treat JWTs as credentials — never paste a production token into any web tool you don't trust. For full safety, view the page source or run this tool offline.
Decoding just base64url-decodes the header and payload — anyone with the token can do this, the contents are not encrypted. Verifying checks the cryptographic signature against a secret (HS256) or public key (RS256/ES256) to confirm the token was issued by who it claims and hasn't been tampered with.
The exp claim is a Unix timestamp (seconds since 1970). If exp is less than the current time, the token is expired and should be rejected by any compliant validator. This tool also flags nbf (not before) and iat (issued at) claims that look wrong relative to current time.
Yes. Paste the issuer's RSA public key in PEM format (the -----BEGIN PUBLIC KEY----- block). The tool uses the Web Crypto API to verify the signature locally. You typically get this key from the issuer's JWKS endpoint (e.g. /.well-known/jwks.json).
No. A standard JWT (JWS) is signed but not encrypted — the payload is base64-encoded plaintext that anyone with the token can read. If you need encryption, use JWE (JSON Web Encryption), or simply don't put secrets in the payload.
Copied to clipboard!