JWT Decoder
Paste a compact JWT to inspect its header, payload and registered claims. Decoding runs locally and does not verify a signature.
Everything runs locally in your browser. Enable JavaScript to use the tool.
How it works
Split the compact token at its dots, decode unpadded base64url as UTF-8 and parse the header and payload as JSON. RFC 7519 defines NumericDate claims in seconds since the Unix epoch. Expiration is exclusive: a token is expired when the current time reaches exp. Relative seconds round up before expiration and down after expiration. Date displays truncate milliseconds toward zero; submillisecond claims are labeled approximate with the parsed NumericDate retained alongside them. Finite NumericDates outside the date-display range still receive expiration comparisons.
This is a decoder only. It does not verify signatures, trust an issuer, enforce an audience or authorize access. Encrypted tokens are outside its scope. Tokens are never uploaded or saved in a share link. The input limit is 256 KiB.
Worked examples
Expiration at the epoch
An exp claim of 0 is 1970-01-01T00:00:00.000Z. At epoch second 60 the display says “Expired 60 seconds ago”.
Not before one minute
An nbf claim of 60 is 1970-01-01T00:01:00.000Z. At epoch second 0 it is not active yet.
Frequently asked questions
Is decoding verification?
What do iss, sub and aud mean?
What are iat and jti?
What does alg none mean?
Sources
- ECMA-262 — Date display range (checked 2026-11-14)
- RFC 7519 — sections 2 and 4.1 (checked 2026-11-14)
- RFC 7515 — compact serialization and base64url (checked 2026-11-14)
- RFC 7518 — algorithm identifiers (checked 2026-11-14)
Last reviewed 2026-11-14. The method is written out above so you can check our math.