Example: the tool is already working on a sample input. Replace it with your own and press the button.

Header

{
  "alg": "HS256",
  "typ": "JWT"
}

Payload (claims)

{
  "sub": "user-42",
  "name": "Jane Doe",
  "iat": 1767225600,
  "exp": 1767229200
}
ClaimValueDate (UTC)
Expiresexp17672292002026-01-01 01:00:00expired
Issued atiat17672256002026-01-01 00:00:00
Decode a JSON Web Token

Paste a JWT, with or without the Bearer prefix, and press decode. You see the header and the payload as formatted JSON, and the time claims exp, nbf and iat as dates in UTC.

The signature is not verified. This tool only decodes: it does not check whether a token is genuine, and it never asks for a key. Do not paste tokens that are still valid for a production system into any online tool – decode them locally, or let them expire first.

How a JWT is built

A JSON Web Token (RFC 7519) in its usual signed form (JWS, RFC 7515) consists of three base64url segments separated by dots: header.payload.signature. The header names the signing algorithm (alg, for example HS256 or RS256) and the token type. The payload holds the claims: whom the token is about (sub), who issued it (iss), for whom it is meant (aud) and when it expires (exp).

Example

The token shown when this page loads has the header {"alg":"HS256","typ":"JWT"} and the payload {"sub":"user-42","name":"Jane Doe","iat":1767225600,"exp":1767229200}. iat and exp are NumericDates, seconds since 1970-01-01 00:00 UTC: the token was issued on 2026-01-01 at 00:00 UTC and expired one hour later. Its signature is a placeholder. The decoder reads the token all the same, because decoding does not involve the signature.

Decoding is not verifying

Header and payload are only base64url-encoded, not encrypted. Anyone who holds a token can read them, so a JWT payload must never contain secrets. Whether a token is genuine is decided by its signature, which only the holder of the key can check – or, for RS256 and ES256, anyone with the public key. An application has to verify the signature, the expected algorithm and the exp claim with a JWT library before it trusts any claim.

Five segments?

A token with five segments is an encrypted JWE. Its payload cannot be read without the decryption key, so this tool does not decode it.

To decode a single segment by hand, use the base64 decoder, which accepts the URL-safe alphabet without padding.

Base64, URL and JWT tools

Frequently asked questions

Does this tool verify the JWT signature?
No. It only decodes the header and the payload. Whether a token is genuine can only be checked with the key, by the application that accepts the token.
Is it safe to paste a JWT here?
Header and payload are readable by anyone who holds the token, but a token that is still valid can be used to log in. Do not paste live production tokens into any online tool; decode them locally or let them expire first.
What do exp, iat and nbf mean?
They are times in seconds since 1970-01-01 UTC. exp is when the token expires, iat when it was issued, nbf the time before which it must not be accepted. The decoder shows them as dates.