Skip to content

JWT decoder

Inspect JWT header and payload JSON, timestamps, and signature size with a clear unverified-token status.

Signature not verified

Decoded claims can be forged. This viewer does not authenticate the token, check its issuer, or validate its signature.

Header

The decoded header appears here.

Payload

The decoded payload appears here.
Processed on your device

How it works & useful details

How to use this tool

Paste a three-part JWT to inspect its header, payload, and UTC dates. Use the example to explore the panels.

Details and limits

This decoder does not verify signatures, authenticate users, validate issuers or audiences, or decide whether a token is valid. Claims and declared algorithms can be forged. Do not use this result to make authorization decisions.

Up to 32,000 characters. Header and payload must be JSON objects encoded as UTF-8 Base64url. JWE encrypted five-part tokens are not supported. The token remains only in page memory.

About this tool

JWT decoder inspects a JSON Web Token’s header and payload, formats the claims, highlights time-based claims, and reports the signature size. It is a quick way to answer "what is in this token" during debugging.

The token is decoded, not verified: the tool clearly marks the result as unverified because verification requires the issuer’s key and algorithm checks. Decoding is local, and the token is never sent anywhere.

How to use it

  1. Paste the JSON Web Token.
  2. Review the decoded header and payload JSON.
  3. Check the formatting of time claims such as exp and iat.
  4. Note the unverified status before trusting any claim.

Worked example

A JWT has three Base64url parts separated by dots: header.payload.signature. Decoding

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImlhdCI6MTc5MDAwMTc3NCwiZXhwIjoxNzkwMDA1Mzc0fQ.c2ln

shows the header {"alg":"HS256","typ":"JWT"} and the payload with sub, name, iat, and exp. The timestamps are converted to UTC: iat is 2026-09-21T14:42:54Z and exp is one hour later. The signature is shown only as a byte count, and the status says clearly that it was not verified.

Reading the common claims

  • iss (issuer): who created the token, usually an identity provider URL.
  • sub (subject): the user or client the token is about.
  • aud (audience): the API or application meant to accept it.
  • exp, nbf, iat: expiry, not-before, and issued-at times, in Unix seconds.
  • scope, roles, or groups: permissions, whose names vary by provider.

Decoding is useful for debugging login flows: checking whether a token has expired, whether the audience matches your API, or whether an expected claim is missing. It is never a basis for trust. Anyone can create a token with any claims. Only verifying the signature with the issuer's key, as your server-side library does, proves where it came from.

Frequently asked questions

Does this prove the token is valid?

No. It only decodes the contents. A token can be well-formed and still be expired, forged, or signed for a different audience.

Can I verify the signature here?

No. Signature verification needs the issuer’s key and is not part of this decoder.

What is the input limit?

Up to 32,000 characters, covering ordinary tokens.

Is it safe to paste a real token here?

The token is decoded in your browser and not sent anywhere. Still, a valid access token is a credential. Prefer expired or test tokens, and never paste production tokens into tools that do upload data.