JWT Decoder & Inspector
Decode and inspect any JWT — header, payload, signature and expiry. Fully client-side.
JWT decoder online — inspect tokens without leaking them
This JWT decoder splits a JSON Web Token into its three parts, decodes the Base64URL header and payload, and shows you the signature, the claims, the algorithm, and an expiry countdown — live, in your browser, with no network requests. If you've ever pasted a token into a "online JWT decoder" and immediately regretted it, this tool exists for you.
What gets decoded
Every JWT has three Base64URL-encoded parts separated by dots:
header.payload.signature. The decoder shows each one in
its own pane. The header reveals the signing algorithm (e.g.
HS256, RS256) and token type. The payload
contains the claims — sub, iss,
aud, exp, iat, plus any custom
claims your service issues. The signature is opaque without the
secret/key, so we display it raw for inspection.
Live expiry countdown
The decoder reads the exp claim and starts a
1-second-tick countdown. When the token is valid, you see
Expires in 23m 14s. When it expires, the badge flips to
Expired. This is the fastest way to verify whether your
access token is actually fresh during local debugging — no need to
convert epoch timestamps in your head.
Validity badges
- Decoded — token has the correct three-part shape and Base64URL decodes cleanly.
-
Valid — current time is between
nbfandexp. - Expired —
expis in the past. -
Not yet valid —
nbfis in the future (rare but legitimate for scheduled tokens). - Malformed — wrong number of segments, invalid Base64URL, or non-JSON header/payload.
Important: this does not verify the signature
Verifying a JWT signature requires the signing key (HMAC secret or
RSA/EC public key). Pasting your production secret into a website you
don't control would be a serious security mistake — so this tool
deliberately does not offer signature verification. Use your backend,
your CLI (jwt-cli), or a library like
jose for verification. Use this tool to
inspect claims while debugging.
Privacy
Decoding happens with atob in your browser. The token is
never sent over the network. You can paste tokens with sensitive
subject IDs, audiences, or custom claims and they stay in your tab. If
you want to be paranoid, open the page, disable Wi-Fi, and decode away
— it still works.
Common claims explained
-
iss(issuer) — who issued the token (usually your auth server's URL). -
sub(subject) — who the token is about, usually a user ID. -
aud(audience) — who is allowed to consume the token. -
exp/nbf/iat— expiry, not-before, issued-at (Unix seconds). -
jti— unique token ID, useful for revocation lists.