Debug a login token
Check whether the claims and expiry passed between front end and back end are what you expect.
Guide
The JWT decoder uses jwt-decode to parse a token's header and payload locally in the browser and shows the iat, nbf and exp numbers as dates and relative times from Unix seconds. It only decodes and never verifies the signature, so “it parses” or “exp has not passed” does not mean the token is valid or trustworthy.
Updated 2026-09-102 min read
The JWT decoder uses jwt-decode to parse a token's header and payload locally in the browser and shows the iat, nbf and exp numbers as dates and relative times from Unix seconds. It only decodes and never verifies the signature, so “it parses” or “exp has not passed” does not mean the token is valid or trustworthy.
Bearer prefix is allowed.iat, nbf or exp is present, read the local date and relative time together with the expired or not-yet-valid note.| Input | Output | Notes |
|---|---|---|
Bearer eyJ... |
Header and payload | The Bearer prefix is stripped automatically |
An exp below the current second |
“Expired” | Only the time claim is compared |
No exp |
“Cannot determine the expiry” | It is not assumed to be permanent |
alg is permitted, and does not validate business claims such as iss, aud or sub.iat, nbf and exp are only read as Unix seconds when they are numbers; a string time is not converted automatically.Check whether the claims and expiry passed between front end and back end are what you expect.
Compare exp directly against the local clock to confirm whether it is expired or not yet valid.
No. “Valid” here describes the time claims only; the signature was never verified.
No, decoding is done by jwt-decode inside the browser.
The token is decoded in browser memory only and is never sent to a server; production credentials should still not be pasted into an untrusted device.
Updated 2026-09-10
Decode JWT header and payload, humanize time claims and flag expiry