130 of 149 tools live Roadmap LatestImage to Text

JWT Decoder

See what a JWT says, when it expires and whether its signature holds, without the token leaving your device.

Works in your browser. The token and any key you paste never leave your device.

Decoded in your browser. The token and any secret you paste never leave your device.

JWT Decoder at a glance

Price
Free
Data sent to us
None, it runs in your browser
Sign-up
Not needed
Reads
Signed JWTs (JWS), three parts
Verifies
HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512
Does not
Fetch keys or read encrypted tokens

How to use JWT Decoder

Takes about 1 minute. You need a JWT, and its key if you want the signature checked.

  1. Paste the tokenPut the JWT in the box, with or without the Bearer prefix. The header, payload and claims appear at once.
  2. Read the claimsCheck the expiry line, the issuer and the audience. Expired or not-yet-valid tokens are marked in red.
  3. Check the signaturePaste the secret or the PEM public key under Signature. A green line means the token was signed with that key and not changed.
JWT Decoder: See what a JWT says, when it expires and whether its signature holds, without the token leaving your device.

Paste a JWT and read its header and payload as formatted JSON, with the claims that matter explained: who issued it, who it is for, when it was issued and when it expires, with expired and not-yet-valid tokens flagged and the time left shown. Paste the shared secret or the public key and the signature is checked with the browser's built-in cryptography for HS, RS, PS and ES algorithms. Unsigned tokens and tokens without an expiry are pointed out. Nothing is sent anywhere.

How it works

JWT Decoder is a web page that does its work on your own device. Everything you type or choose is worked out by your browser and never sent to a server, so nothing is stored and there is nothing to delete. There is no account, no sign-up and no limit on how often you use it.

Straight to one job

What is inside a JWT

A JSON Web Token is three pieces of base64url text joined by dots: a header that names the signing algorithm, a payload of claims such as who the token is for and when it expires, and a signature over the first two. The header and payload are only encoded, not encrypted, so anyone holding the token can read them, which is what this page does, on your device. The signature is what a server checks before trusting the claims, and that needs the key, so the decoder shows the claims and says plainly that decoding is not verification.

The claims that matter

exp is the expiry, iat when the token was issued and nbf the time before which it is not valid, all as Unix timestamps; the decoder turns them into dates and says whether the token is expired, not yet valid or good for how much longer. iss is the issuer, aud the audience the token is meant for, sub the subject, usually the user id, and jti a unique id. A token with no exp never expires on its own, and a header with alg set to none is unsigned and should never be accepted by a server; both are flagged.

Checking the signature

If you have the key, paste it and the signature is checked in your browser with the built-in cryptography: the shared secret for HS256, HS384 and HS512 (tick the box if the secret is stored base64 encoded), or the public key in PEM form for RS256 to RS512, PS256 to PS512 and ES256 to ES512. A match proves the token was issued with that key and not altered since. The key, like the token, never leaves your device, but as a habit paste production secrets nowhere, including here; use a test key or a token from a test environment.

What this tool does not do

  • It does not read encrypted tokens (JWE, five parts); those need the recipient's private key and the decoder says so.
  • It does not fetch an issuer's key set (JWKS) from the network; paste the key yourself.
  • It does not make a token valid. An expired or unsigned token stays that way.

What it does

  • Header and payload as formatted, coloured JSON with copy buttons
  • exp, nbf and iat as dates, with expired, not yet valid or time left
  • iss, sub, aud, jti, scope and other common claims named
  • Signature check with a secret (HS256, HS384, HS512) or a PEM public key (RS, PS, ES)
  • Warnings for alg none, missing expiry and encrypted tokens
  • Bearer prefix and surrounding spaces ignored
  • No upload, no account, no sign-up

Questions

Is it safe to paste a token here?

The token is decoded by code running in your browser and is never sent to us or stored. Even so, a token is a credential: prefer tokens from a test environment, and never paste a production secret anywhere you do not have to.

Does decoding verify the token?

No. Anyone can decode a JWT, because the header and payload are only base64url encoded. Verification needs the key: paste the secret or the public key under Signature and the check runs in your browser.

Why does it say the token is expired?

The exp claim is a Unix timestamp; when it is earlier than now, servers reject the token. The line shows how long ago it expired. Tokens are usually short-lived and refreshed by the app.

What does alg none mean?

The header claims the token is unsigned. Such a token can be written by anyone, so no server should accept it, and the decoder flags it.

Which algorithms can be verified?

HMAC with a shared secret (HS256, HS384, HS512), RSA with a public key (RS256, RS384, RS512 and PS256, PS384, PS512) and ECDSA with a public key (ES256, ES384, ES512). Paste the public key in PEM form, beginning BEGIN PUBLIC KEY.

Can it read an encrypted token?

No. An encrypted token (JWE) has five parts and needs the recipient's private key; the decoder tells you when it meets one.

Where do I get the public key?

From the issuer's key set, usually published at a JWKS address, or from your identity provider's settings. This tool does not fetch it, so nothing about your token goes to the network.

Is it free?

Yes, completely free, with no sign-up.

More

Privacy policy · Support · Changelog

Suggest a tool

Tell us what the tool should do. If we build it, we will let you know.

Used only to reply to you. See our Privacy Policy.