JWT Decoder

Decode, verify and create JSON Web Tokens. Tokens and keys never leave your browser.

HS256 · 5 claims · not expired
Headeralgorithm & token type
{
  "alg": "HS256",
  "typ": "JWT"
}
Payloadclaims
{
  "sub": "1234567890",
  "name": "Jane Doe",
  "email": "[email protected]",
  "iat": 1791936000,
  "exp": 1893456000
}
Claimstimes in UTC
subSubject1234567890
nameFull nameJane Doe
emailEmail[email protected]
iatIssued at17919360002026-10-14 00:00:00 UTC · 1 hour ago
expExpiration time18934560002030-01-01 00:00:00 UTC · expires in 1175 days
Signed token

How to decode a JWT

Paste the token, with or without the Bearer prefix. The header and payload are decoded as you type, every claim is listed with its meaning, and timestamps such as exp and iat are shown as dates with how long until the token expires or how long ago it did. Nothing is sent to a server, so it is safe to paste real tokens.

What is inside a JSON Web Token

A JWT is three base64url-encoded parts joined by dots:

PartWhat it holds
HeaderThe signing algorithm (alg, such as HS256 or RS256), the token type (typ) and often a key ID (kid).
PayloadThe claims: who the token is about, who issued it, when it expires and any custom data.
SignatureA signature over the header and payload. It proves the token was issued by someone holding the key and has not been changed.

The header and payload are only encoded, not encrypted. Anyone with the token can read them, so never put passwords or secrets in a JWT payload.

Registered claims

ClaimMeaning
issIssuer: who created and signed the token
subSubject: the user or entity the token is about
audAudience: the service the token is meant for
expExpiration time, in seconds since 1 January 1970 UTC
nbfNot before: the token is not valid until this time
iatIssued at: when the token was created
jtiJWT ID: a unique ID, used to stop a token being replayed

How to verify a JWT signature

  • HS256, HS384, HS512 use one shared secret. Paste it under Secret; tick the box if your secret is stored base64 encoded.
  • RS256, PS256, ES256 and the other asymmetric algorithms are signed with a private key and checked with the public key. Paste the PEM public key (-----BEGIN PUBLIC KEY-----) or a JWK, such as one entry from your identity provider's JWKS endpoint.
  • A green "Signature verified" means the token was signed with that key and has not been changed. Your server should also check exp, nbf, iss and aud.
  • Never accept alg: none. A token with no signature can be written by anyone.

How to create a JWT

Switch to Encode, pick an algorithm, edit the header and payload JSON, and enter a secret or a PKCS#8 private key (-----BEGIN PRIVATE KEY-----). The signed token updates as you type. The buttons add iat for now or an exp one hour, one day or 30 days ahead. Use this for testing; production tokens should be issued by your server.

Common JWT problems

  • 401 with a token that decodes fine: check exp and the server clock, then aud and iss.
  • Invalid signature with the right secret: the secret may be base64 encoded on the server, or the token was copied with a missing character.
  • Five parts instead of three: it is an encrypted JWE, which cannot be read without the decryption key.

Frequently asked questions

Is it safe to paste my JWT here?

Yes. Decoding, verification and signing run in your browser with the Web Crypto API. Tokens and keys are never sent anywhere or stored.

Can you decode a JWT without the secret?

Yes. The header and payload are only base64url encoded, so anyone can read them. The secret or public key is needed only to verify the signature.

How do I check if a JWT is expired?

Look at the exp claim. The decoder converts it to a date and shows how long until it expires, or how long ago it did.

Which algorithms can it verify?

HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, and EdDSA in browsers that support Ed25519.

What is the difference between JWT, JWS and JWE?

JWT is the token format. A signed JWT is a JWS, with three parts. An encrypted JWT is a JWE, with five parts and an unreadable payload.

Where do I find the public key to verify a token?

Identity providers publish their keys at a JWKS URL, usually /.well-known/jwks.json. Paste the key whose kid matches the token header.