JWT decoder and verifier

Paste a JSON Web Token to see its header and payload, what each claim means and when it expires. Add the secret or public key to verify the signature. Everything runs in your browser, so tokens never leave your device.

Free · No sign-up

Paste a JWT to decode it. Nothing is uploaded.

How to use it

  1. Paste your JWT into the Encoded token box. A leading 'Bearer ' is removed automatically.
  2. Read the decoded header and payload. Each claim is explained, and dates such as exp and iat are shown in your time zone.
  3. Check the expiry line to see whether the token is still valid, expired or not valid yet.
  4. To verify the signature, enter the shared secret for HS256, HS384 or HS512, or paste the public key or JWKS for RS, PS, ES or EdDSA tokens.

Why use this tool

Instant decoding

Header and payload are decoded as you paste, with colour-coded JSON and the three parts of the token highlighted.

Claims in plain words

Standard and common OpenID Connect claims are explained, and timestamps are turned into readable dates.

Expiry check

See at a glance whether the token is valid, expired or not active yet, and how long until it expires.

Signature verification

Verify HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512 and EdDSA with a secret, PEM key, JWK or JWKS.

Private by design

Decoding and verification use your browser's built-in crypto. Tokens and keys are never sent to a server or stored.

Helpful errors

Clear messages for truncated tokens, bad base64, encrypted JWE tokens, alg none and keys of the wrong type.

What is a JWT?

A JSON Web Token (JWT, RFC 7519) is a compact way to pass signed information, such as who a user is, between systems. It has three base64url parts separated by dots: a header that names the algorithm, a payload with the claims, and a signature.

The header and payload are only encoded, not encrypted. Anyone who has the token can read them, which is exactly what this decoder does. The signature is what makes a JWT trustworthy: it proves the token was created by someone with the key and has not been changed.

Common signing algorithms

AlgorithmKey typeVerify with
HS256 / HS384 / HS512Shared secret (HMAC)The same secret that signed the token
RS256 / RS384 / RS512RSA key pairThe issuer's RSA public key
PS256 / PS384 / PS512RSA key pair (PSS padding)The issuer's RSA public key
ES256 / ES384 / ES512Elliptic curve key pairThe issuer's EC public key
EdDSAEd25519 key pairThe issuer's Ed25519 public key

Where to find the public key

Identity providers such as Auth0, Okta, Microsoft Entra ID, Google and Keycloak publish their keys as a JWKS. Open the provider's /.well-known/openid-configuration address, follow the jwks_uri link and paste the whole JSON here. The key whose kid matches the token header is picked automatically.

Security tips

  • Never paste production tokens or secrets into tools that send data to a server. This page works offline once loaded.
  • Do not put passwords or other secrets in the payload, because anyone with the token can read it.
  • Always verify the signature, issuer, audience and expiry on the server before trusting a token.
  • Reject tokens with alg none, and fix the expected algorithm in your code instead of reading it from the token.

Frequently asked questions

Is it safe to paste my JWT here?

Yes. The token is decoded and verified with JavaScript in your browser. It is not uploaded, logged or stored. Still treat live tokens like passwords and avoid sharing them.

Can a JWT be decoded without the secret?

Yes. The header and payload are just base64url encoded JSON, so anyone can read them. The secret or key is only needed to verify the signature or to create a new token.

Why does it say invalid signature?

The key does not match the one used to sign the token, the token was changed, or the secret is base64 encoded and the matching option is not ticked. For RS and ES tokens make sure you use the issuer's public key for the right kid.

What does exp mean in a JWT?

exp is the expiry time as a Unix timestamp in seconds. After that moment the token should be rejected. iat is when it was issued and nbf is the time before which it must not be accepted.

Can this tool decode encrypted tokens (JWE)?

It recognises JWE tokens, which have five parts, and shows their header. The payload is encrypted and can only be read with the recipient's private key.

What is the difference between HS256 and RS256?

HS256 uses one shared secret for signing and verifying, so every service that checks tokens must know the secret. RS256 signs with a private key and verifies with a public key, so the public key can be shared safely.

Related tools

Need something built?

Tell us what you want to create.

Tell us what you need built, from a simple website to a complete app, AI solution, automation, or custom system.

Tell us what you want to build. We review every enquiry and reply by email.

Contact

Thanks, your enquiry is on its way.

We will review the details and reply by email.