How to use the jwt expiration checker
- Paste your JWT into the text area above.
- The tool automatically splits the token and decodes the payload as base64url JSON.
- Review the extracted
exp,iatandnbftimestamps. - Check the status row to see if the token is not expired, expired or not yet active.
How JWT time claims work
A JSON Web Token carries three standard time claims defined in RFC 7519. Each value is a Unix timestamp representing seconds since 1 January 1970 UTC.
- exp (Expiration Time): the moment after which the token must be rejected. If the current time is equal to or greater than
exp, the token is expired. - iat (Issued At): when the token was created. It does not affect validity on its own but helps detect tokens that are suspiciously old.
- nbf (Not Before): the earliest moment the token may be accepted. If the current time is less than
nbf, the token is not yet valid.
This jwt expiration checker reads those numeric values from the decoded payload and compares them against your local clock to determine the token's status.
Decoding the payload manually
A JWT consists of three base64url-encoded parts separated by dots: header, payload and signature. To inspect the claims yourself, take the middle segment and decode it.
For example, given the payload string eyJleHAiOjE1MTYyNDI2MjJ9:
- Replace
-with+and_with/. - Add
=padding until the length is a multiple of four. - Base64-decode to get the UTF-8 JSON:
{"exp":1516242622}.
The resulting exp value of 1516242622 corresponds to 18 January 2018 at 02:30:22 UTC. Because that date is in the past, the token is expired. The jwt expiration checker performs these steps automatically and also converts the timestamp into a readable date.
Common reference timestamps
When debugging tokens it helps to recognise familiar Unix epoch values. Here is a quick reference table:
| Unix timestamp | Date (UTC) | Notes |
|---|---|---|
| 0 | 1 Jan 1970 00:00:00 | Epoch start |
| 1516242622 | 18 Jan 2018 02:30:22 | Used in the example above |
| 1600000000 | 13 Sep 2020 12:26:40 | Round billion-plus value |
| 1700000000 | 14 Nov 2023 22:13:20 | Recent reference point |
| 2000000000 | 18 May 2033 03:33:20 | Future milestone |
| 4102444800 | 1 Jan 2100 00:00:00 | Far-future test value |
If you see an exp claim near zero, the token likely expired decades ago. Values beyond 2000000000 indicate an expiration well into the 2030s.
Why tokens expire and how to handle it
"Not expired" only means the time claims are in range; this tool does not check the signature, so it cannot tell you the token is genuine. Short-lived tokens limit the window an attacker can misuse a stolen credential. A typical access token might have an exp set 15 minutes after iat. When the jwt expiration checker shows "Expired", the client application should request a fresh token using a refresh token flow or re-authenticate the user.
The nbf claim is less common but useful for scheduled access. For instance, a conference badge token might carry an nbf set to the event start time so it cannot be used early. If the status reads "Not yet valid", simply wait until the nbf time passes.
Tokens without an exp claim never expire according to the standard. While convenient during development, issuing tokens without expiration in production is a security risk because a leaked token remains usable indefinitely.
Worked examples
| Example | Input | Result |
|---|---|---|
| Expired HS256 token | JWT string: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyNDI2MjJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c | Status: Expired; exp: 1516242622; iat: 1516239022; Current time: 1793927564 |
| Token with only iat | JWT string: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MTYyMzkwMjJ9.VoF-8sOMGMqOaLdMZuW_GBLDihO5e7bVjHnqCq0TnuA | Status: Not expired (no exp claim); iat: 1516239022; Current time: 1793927564 |
| Far-future expiration | JWT string: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQxMDI0NDQ4MDB9.dummy | Status: Not expired; exp: 4102444800; Current time: 1793927564 |
FAQ
Does this jwt expiration checker verify the token signature?
No. It only decodes the payload and inspects the time claims. Signature verification requires the signing key and algorithm, which this tool does not handle.
What happens if the token has no exp claim?
The tool reports it as "Not expired (no exp claim)". Tokens without an exp claim do not expire under RFC 7519, though relying parties may enforce their own limits.
Is my token sent to a server when I paste it?
No. Decoding happens entirely in your browser using JavaScript. Nothing leaves your device.
Why does the status say Not yet valid?
The token contains an nbf (Not Before) claim set to a future time. The token cannot be accepted until that timestamp passes.
Can I check a token that uses RS256 or ES256?
Yes. The encoding of the payload is the same regardless of the signing algorithm. This tool decodes the base64url payload without needing the public key.
My token has three parts but the tool shows an error. Why?
The middle part must be valid base64url-encoded JSON. If the payload was tampered with or truncated, decoding will fail.