Stateless Tools

First Read

Most JWT timing bugs come from interpretation, not the raw numbers

exp

This marks when the token should stop being accepted. The problem is that server time, proxy time, and the operator's local view can all differ.

nbf

This marks when the token should start being accepted. Immediate failures right after issue time often point here first.

iat

It tracks issue time and is not always enforced directly, but it becomes useful when you compare all timing claims together.

Common Failures

What shows up in real incidents

Seconds vs milliseconds

JWTs usually use Unix seconds. When frontend code or logs treat them as milliseconds, the resulting timestamps look completely wrong.

Decoding without verification

Readable tokens are not automatically trustworthy. External issuer setups still need signature validation through JWKS or an equivalent check.

Ignoring environment drift

Even a small time difference between application and auth servers can create repeated boundary failures. Teams should document acceptable skew explicitly.

Workflow

The pages to pair with this guide

  1. Start on the JWT decoder to inspect the header and payload quickly.
  2. Use the timestamp converter to translate exp, nbf, and iat into human time.
  3. When you need the full request flow, open the API Request Tester alongside it.