JWT Decoder & Verifier
Paste a JWT to read its header and payload and check whether it is still valid. Everything runs in your browser — the token is never sent anywhere.
Header
Payload
Time claims
Signature (base64url)
How a JSON Web Token is put together
A JWT is three base64url strings joined by dots:header.payload.signature. The header is a tiny JSON object naming the signing algorithm (alg) and type (typ). The payload is another JSON object ofclaims — sub (subject), iss (issuer),aud (audience), plus the three time claims below. Thesignature is a MAC or digital signature computed overheader.payload using a key only the issuer holds.
Decoding is trivial and unauthenticated: this tool splits on the dots, base64url-decodes the first two parts and runs JSON.parse. That is why a JWT is not a secret container — never put anything in the payload you would not put on a postcard. If you need to move data secretly, encrypt it (see theBase64 tool for the encoding step, and note Base64 is not encryption).
The three time claims
iat— issued at. When the token was minted.nbf— not before. The token is invalid until this moment; useful for tokens scheduled to activate later.exp— expiry. After this moment the token must be rejected. All three are Unix timestamps in seconds, not milliseconds — a common off-by-1000 bug.
The validity badge compares exp and nbf against your computer's clock. If your machine's time is wrong, the badge will be wrong too — the server that issued the token is the real authority.
Verifying the signature
HS256/384/512 use HMAC with a shared secret: the same string signs and verifies. Paste that secret and the tool recomputes the MAC with crypto.subtle.verify.RS/PS/ES use public-key signatures: the issuer signs with a private key, and you verify with the matching public key as PEM (SPKI, the BEGIN PUBLIC KEY form) or JWK. A green check means the bytes are authentic and unmodified; a red cross means the key is wrong or the token was altered. alg: none andEdDSA cannot be verified here.
Common pitfalls
- Copying
Beareralong with the token — trim it. - A trailing newline on the HMAC secret — it changes the MAC.
- Treating
expas milliseconds — it is seconds. - Assuming a decoded token is a verified token — it is not.
Working with tokens often means working withJSON andURL-encoded values too; those tools are equally client-side.
Related tools
Frequently asked questions
Is my token sent to a server?
What are the three parts of a JWT?
Does decoding verify the token?
Which algorithms can this verify?
What does the Expired / Not yet valid badge mean?
Why is exp shown as both a date and 'in 3 days'?
My HS256 token won't verify — why?
Can I paste a token with 'Bearer ' in front?
Last reviewed: September 2026. Figures and formulas are checked against their published sources; see the site's data notes.