Skip to content

JWT Decoder

Decode a JSON Web Token's header and payload. The token is never sent anywhere

Loading the tool…

Decodes a JSON Web Token: paste it to see the header and payload as JSON, with time claims such as the expiry turned into readable dates. Use it to check a token's contents and whether it has expired when a login or API call fails.

How to use

  1. Paste a JWT starting with eyJ into "Token". A leading "Bearer " is ignored.
  2. Look at the JSON in "Header" and "Payload" and at the "Signature" part.
  3. In the "Claims" table, read the issue and expiry times and a status such as "Expired" or "In effect".
  4. To check whether the token can be trusted, enter the secret or public key under "Verify the signature (optional)".

How it works

Questions and answers

How do I check when a JWT expires?
Paste the token. "Expires at" (exp) in the "Claims" table shows the date and time, and the status column shows the time left or "Expired".
Is a JWT encrypted?
A normal JWT (JWS) is signed, not encrypted, so anyone can read its contents. Do not put passwords or other secrets in it. A token with 5 parts is an encrypted JWE and cannot be read without the key.
Does decoding prove that a token is genuine?
No. Anyone can change the contents, so only a signature checked with the right key can be trusted. Enter the key under "Verify the signature (optional)" to see "Signature valid" or "Signature invalid".