Time: 0:00
Test a custom input to verify an edge case (e.g. empty lists, negative numbers, duplicates).
This bug belongs to the type errors pattern
Totals that concatenate, sorts that put 10 before 9, comparisons that refuse to run.
What went wrong: JWT exp timestamps are stored in seconds, while JavaScript timestamps are in milliseconds. Comparing seconds directly to milliseconds makes the expiration appear decades in the past.
The fix: Multiply payload.exp by 1000 before comparing: payload.exp * 1000 <= currentTimestampMs
Remember: Standard JWT exp is in seconds, but Date.now() returns milliseconds.
The pattern behind it: type errors.
Paste this into any web page or blog post. Visitors fix the bug right there, in their browser.
<iframe src="https://trybughunt.com/embed/967bd29a-b256-4c10-83e2-7a111278e519" title="Debugging challenge: Token expiry check marks future tokens as expired" width="100%" height="580" loading="lazy" style="border:1px solid #d4d4d8;border-radius:12px;max-width:760px"></iframe>
<p style="font-size:14px">Debugging challenge from <a href="https://trybughunt.com/challenges/967bd29a-b256-4c10-83e2-7a111278e519">TryBugHunt</a></p>