JWT Decoder
Paste a JWT to see its decoded header and payload, with standard claims like expiry explained. Nothing is uploaded, signatures are never verified or checked against a secret.
Header
Payload
How it works
A JWT is three Base64URL segments joined by dots: header, payload, signature. The tool
splits on the dots, then decodes the first two segments by mapping the URL-safe alphabet
back to standard Base64 (- to +, _ to
/), restoring the padding JWTs omit, running atob(), and
decoding the bytes as UTF-8 with TextDecoder. Each segment is then
JSON.parsed and pretty-printed. Standard claims (iss,
sub, aud, exp, nbf, iat,
jti) get human labels, unix timestamps become readable dates, and
exp is compared against your clock to tell you if the token is expired. The
third segment, the signature, is never parsed at all.
That's the distinction this tool is strict about: decoding is not verifying. The payload of any JWT is readable by anyone, it's encoded, not encrypted. Proving the token is genuine means recomputing the signature, which requires the signing secret (for HMAC) or the issuer's key (for RSA/ECDSA). This tool deliberately doesn't offer a "paste your secret" box: getting into the habit of pasting production signing secrets into web pages is a risk no convenience justifies, and verification belongs on your server anyway. Never trust a decoded claim you haven't verified server-side.
Everything runs in this page's JavaScript using atob and the text decoding
APIs. Paste a real token with DevTools' Network tab open and watch: no request is made,
the token never leaves the browser tab.
Common questions
Does this verify the signature?
No, and it never will. Verifying a signature needs the secret or public key the token was signed with, and typing a signing secret into a public browser tool would be a bad security practice. This only decodes the header and payload, which is all that's needed to read what's inside a JWT.
Is my token sent anywhere?
No. Decoding is just Base64URL decoding plus a JSON parse, both done entirely in your browser. Nothing about your token leaves your device.
What does the exp claim mean?
Expiration time, as a Unix timestamp. This tool converts it to a readable date and tells you whether it's already passed, so you can quickly see if a token has expired.