Quick access

JWT Decoder

Paste a JSON Web Token to read its header and claims, see exactly when it expires, spot risky settings and verify its signature.

Decoded in your browser, never sent or saved

..

A JWT looks like xxxxx.yyyyy.zzzzz: a header, a payload and a signature, each Base64URL-encoded. Find one in your browser’s dev tools (Network → Authorization header) or your app’s logs.
This is an encrypted token (JWE) with five parts. Only its header can be read; the claims need the recipient’s private key. Header below.

Need a token to test with?

Build and sign one with the JWT Encoder, or check an HMAC signature by hand with the HMAC Generator.

Treat tokens like passwords

Anyone holding a live token can act as its user until it expires. This page keeps it in memory only, but don’t paste production tokens into tools you don’t trust, and never put secrets in a JWT payload.

About the JWT Decoder

A JSON Web Token (JWT) has three Base64URL parts separated by dots: a header, a payload of claims such as the user ID and expiry, and a signature. This decoder explains every claim, turns timestamps into dates, warns about problems such as alg "none", and can check the signature with your secret or public key.

How to use it

  1. 1 Paste a JWT, or a whole “Authorization: Bearer …” header.
  2. 2 Read the claims, the expiry status and any warnings.
  3. 3 To prove it is genuine, paste the secret or public key and click Verify signature.

Frequently asked questions

Is it safe to decode a JWT here?

Decoding and verification run in your browser; the token and key are not sent anywhere or saved. Still, treat live tokens like passwords: anyone holding one can use it until it expires.

Does decoding verify the token?

No. Anyone can decode a JWT, because the payload is only encoded, not encrypted. Only a valid signature proves the token came from the issuer and was not changed. Paste the secret or public key to check it.

Which algorithms can it verify?

HS256, HS384 and HS512 with a secret; RS256–RS512 and PS256–PS512 with an RSA key; ES256, ES384 and ES512 with an EC key; and EdDSA (Ed25519) in current browsers. Keys can be a PEM public key, an X.509 certificate, a JWK, or a JWKS where the key is picked by kid.

What do exp, iat, nbf and sub mean?

exp is when the token expires, iat is when it was issued, nbf is the time before which it must not be accepted, and sub is the subject, usually the user ID. Times are Unix timestamps in seconds; the decoder shows them as dates in your time zone.

Why does it say “signature invalid”?

Either the token was changed after signing, or the key is wrong. Check that you used the right environment’s secret, whether the secret is Base64-encoded, and for RS/ES tokens that the key’s kid matches the header.

Why is alg "none" dangerous?

A token with alg "none" has no signature, so anyone can write one with any claims. Servers must reject it; some old libraries once accepted it, which let attackers log in as any user.

Can I decode an encrypted JWT (JWE)?

Only its header. A JWE has five parts and its claims are encrypted, so reading them needs the recipient’s private key.