How to use JWT Expiration Checker
- Paste the JWT.
- Read the status and the countdown to expiry (or how long ago it expired).
- Set a clock-skew tolerance if your servers accept a few seconds of leeway.
- Use the timestamps table to compare UTC and local times when debugging timezone issues.
JWT Expiration Checker features
- Instant verdict: valid, expired, not yet valid, or no expiry
- Live countdown that updates every second in your browser
- exp, nbf, iat and auth_time shown as Unix time, UTC, local time and relative time
- Lifetime and percentage of lifetime already elapsed
- Optional clock-skew tolerance to mirror server leeway
- Detects millisecond timestamps and expired-before-issued mistakes
JWT Expiration Checker example
Check a token that expires in 2100
Input:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyXzhmM2EyYyIsImlhdCI6MTcwMDAwMDAwMCwibmJmIjoxNzAwMDAwMDAwLCJleHAiOjQxMDI0NDQ4MDB9.…Output:
Status: Valid — expires in 73y 4mo (2100-01-01 00:00:00 UTC)
Issued: 2023-11-14 22:13:20 UTC
Lifetime: 76yFrequently asked questions about JWT Expiration Checker
How is "expired" determined?
The exp claim (seconds since the Unix epoch) is compared with your computer's clock. A token is expired when exp is in the past, and "not yet valid" when nbf is in the future. Add a clock-skew tolerance to mimic servers that allow a few seconds of leeway.
My server still rejects a token this tool says is valid — why?
Servers also check the signature, issuer and audience, and may enforce a shorter maximum age than exp. Clock differences between your machine and the server can matter too — compare the "Checked at" time with the server's clock.
What if the token has no exp claim?
The tool reports "No expiry". Such tokens never expire on their own, which is a security risk; the issuer should always set exp.
Does the countdown update automatically?
Yes. Once a token is checked, the remaining time is recalculated every second in your browser.
Technical notes
JWT timestamps are NumericDate values — seconds since 1970-01-01T00:00:00Z ignoring leap seconds. The checker compares them with your device clock, so a wrong local clock produces wrong verdicts; the "Checked at" row shows the reference time used.