JWT Decoder

Inspect the header, claims and expiry of a JSON Web Token without sending it anywhere.

This decodes the token so you can read its contents. It does not verify the signature — that requires the secret or public key the token was signed with, which never leaves your own server.

What's inside a JWT

A JSON Web Token is three pieces of Base64URL-encoded JSON-ish data joined by dots: a header describing how the token is signed, a payload holding the actual claims (user ID, roles, expiry, and whatever else the issuer put in), and a signature. The header and payload are encoded, not encrypted — anyone who has the token can read them, which is exactly why JWTs typically travel over HTTPS and why sensitive data shouldn't be put in the payload.

This is why a JWT debugger is genuinely useful during development: when an API call fails with a 401, decoding the token you sent instantly answers the two most common questions — did it expire, and does the payload actually contain the claim the server is checking for?

Reading the result

Verifying a token instead of just reading it

If you need to confirm a token is authentic — not just well-formed — that check has to happen wherever the signing key lives, typically your backend. In Node.js, for example:

const jwt = require("jsonwebtoken");
const payload = jwt.verify(token, secretOrPublicKey);

If the signature doesn't match, verify throws — decoding alone, as this tool does, can't tell you that.

JWT Decoder FAQ

Does this verify the token is genuine?

No — decoding and verifying are different operations. Decoding just reads the header and payload, which are Base64URL-encoded but not encrypted, so anyone can read them. Verifying checks the signature against the secret or public key the token was signed with, which this page never has and never asks for.

Is it safe to paste a real production token here?

The token is decoded entirely in your browser and never transmitted anywhere, so pasting one is no different from opening it in a debugger on your own machine. That said, treat access tokens as credentials: avoid pasting them into shared screens or saving them in files you don’t control.

What do exp, iat and nbf mean?

iat is when the token was issued, exp is when it expires, and nbf ("not before") is when it becomes valid — all three are Unix timestamps (seconds since 1970), which this tool converts to a readable date and a relative time like "in 2 hours".

Why do I see three sections separated by dots?

A JWT is always header.payload.signature — three Base64URL segments joined by periods. The header names the signing algorithm, the payload carries the claims (the actual data), and the signature is what a server checks to confirm neither part was tampered with.