toolo.dev

JWT Decoder

JWT decoder: paste a token to read its header, payload and claims, see exp and iat as dates, and check if it has expired. Decoded in your browser, not uploaded.

About the JWT Decoder

Paste a token into this JWT decoder to read its header and payload, see exp, iat and nbf as dates in your own time zone, and find out right away whether it has expired. The token is decoded by JavaScript in your browser and isn't sent anywhere.

A JSON Web Token (RFC 7519) is three Base64URL strings joined by dots: header.payload.signature. You'll meet them as OAuth 2.0 access tokens, OpenID Connect ID tokens and API session tokens. Each claim gets a one-line explanation, so an unfamiliar azp or at_hash doesn't send you to the spec. Decoding only reads a token, though. It doesn't prove the token is genuine, and the signature isn't checked here.

  1. Paste the token into JWT. If you copied the whole Authorization header value, the Bearer prefix is removed for you. Load sample fills in a test token.
  2. Read the badges first: Expired, Not yet valid, Not expired or No expiry (exp) claim, then the algorithm, such as alg: HS256. Signature not verified is always there, since checking needs a key the page doesn't have.
  3. On the Payload tab, Timestamps shows each time claim in your local time, as a relative time such as "in 3 hours", and as a UTC ISO date. The status refreshes every 30 seconds.
  4. Next, Claims lists every claim with a short description for the registered and common OpenID Connect ones. The JSON block below has Copy and Download buttons.
  5. Switch to the Header tab for alg, typ and kid, each explained, or to Signature for the raw Base64URL signature.
  6. If decoding fails, the message says why, such as the wrong number of parts or a part that isn't Base64URL JSON. A five-part token is an encrypted JWE: you'll see its header and a notice that the payload needs the decryption key.