JWT decoder. Read the token, keep the secret.
Decoded entirely in this browser, the token, and especially the signature, is never uploaded.
Decoded
Registered claims
Standard time claims interpreted as human dates (your local timezone and UTC).
Signature
How to use the JWT Decoder
This decoder reads a JSON Web Token and shows its header and payload as formatted JSON. A JWT is three base64url strings joined by dots; the tool decodes the first two, turns the iat, nbf and exp time claims into dates, and tells you whether the token has expired. It is for developers debugging logins, APIs and access tokens, and it does not verify signatures.
Step by step
-
Paste a token
Paste the token into the box labeled paste a jwt, or press Load sample to try a demo token. A leading Bearer and space is removed for you, so you can paste an Authorization header value as it is.
-
Let it decode
Decoding starts a quarter of a second after you stop typing. The token is shown again under the box in three colors: the header in red, the payload in green and the signature in amber.
-
Check the status chip
Next to Decoded, a chip reads Valid with the time left, Expired with how long ago, Not active yet when nbf is still in the future, or No expiry claim when the payload has no exp.
-
Read the claims table
Registered claims lists iss, sub, aud, iat, nbf, exp and jti with their meaning. Time claims show the raw number, your local time, UTC and a relative time. Any other key appears as Custom claim.
-
Copy or clear
Press Copy above the header or the payload to copy that part as JSON indented with two spaces. Press Clear to empty the box and hide the results.
Reading the result
- The sample token was issued in May 2024 and expires in September 2030, so its chip reads Valid with the time remaining.
- iat, nbf and exp are Unix times in seconds. The sample's iat of 1716239022 shows in UTC as Mon, 20 May 2024 21:03:42 GMT, and in your own time zone on the Local line.
- The Signature card always says NOT verified. It shows the third segment for reference, or notes that there is none when the token is unsecured.
- Relative times such as in 3 years or 2 days ago are worked out when the token is decoded and do not count down live. Paste the token again to refresh them.
Tips and common mistakes
- Never trust a payload because it decodes. Anyone can write a token with any claims; only a server that holds the secret or public key can check the signature.
- If you see Not a valid JWT, the text does not have 2 or 3 parts separated by dots. Check that the copy did not cut off the end or pick up quotes.
- Header is not valid JSON or Payload is not valid JSON usually means a segment was cut short or changed while copying.
- The chip checks exp before nbf, so a token that is both expired and not yet active shows Expired.
- Treat a live token like a password while it is valid. Use expired or test tokens when you share screenshots.
Privacy and limits
Decoding happens in your browser with plain JavaScript. The token is not sent to any server and is not saved, so it is gone when you clear the box or close the tab. Copy writes only to your own clipboard.
Everything a decoder should do.
Frequently asked questions.
Is the JWT Decoder free?
Is it private? Is my token uploaded anywhere?
Does it verify the signature?
Does it work offline?
What does the JWT Decoder actually show?
Published · Last updated .