Skip to main content
ToolsBay

JWT Decoder

Decode a JSON Web Token to inspect its header, payload and expiry.

Runs entirely in your browser — nothing is uploaded

Frequently asked questions

Does this verify the signature?

No, and no browser tool can without your signing secret. Decoding only reads the header and payload, which are Base64url-encoded rather than encrypted. Verification must happen on your server, where the key lives.

Is it safe to paste a real token here?

The decoding happens entirely in your browser and the token is never sent anywhere. That said, a valid token is a live credential — if you paste a production token into any web page, treat it as worth rotating afterwards.

What do exp, iat and nbf mean?

They are the standard time claims: exp is when the token expires, iat is when it was issued, and nbf is the earliest time it may be used. All three are Unix timestamps in seconds, shown here as readable dates.

Why does the payload look readable — is that a bug?

No. A signed JWT is not encrypted. Anyone holding the token can read its payload, so it must never contain secrets. The signature proves the contents have not been altered; it does not hide them.

What a JWT actually contains

A JSON Web Token is three Base64url segments joined by dots: a header naming the signing algorithm, a payload of claims, and a signature over the first two. Only the signature involves a key. The header and payload are plain encoded JSON that anyone can read.

This is the single most misunderstood thing about JWTs. Putting a user's email, role or internal ID in a token is fine — putting anything you would not print on a postcard is not. The signature guarantees integrity, not confidentiality.

Debugging with a decoder

Most JWT problems are one of three things: the token has expired, the claims are not what the issuer thinks they are, or the algorithm in the header does not match what the verifier expects. All three are visible without a key, which is what makes decoding a useful first step. The expiry check here compares exp against your device clock — if that clock is wrong, so is the verdict.

The segments are Base64url-encoded, so the Base64 decoder will read them individually. To convert the epoch timestamps by hand, use the Unix timestamp converter. To inspect the Authorization header a token arrived in, use the HTTP header parser.