This page renders the site's own blog posts with a LiveSplit-style timer beside them: it starts on your first scroll and stops once the end-of-post marker has been on screen for one second. Splits are the post's headings, each shown against your personal best and a fake world record. Everything is stored in this browser only and none of it matters, which is the point.
Any%: anything goes. 100%: every post back to back, one segment per post. Glitchless: never scroll faster than 2500 px/s or the run is rejected. Blindfolded: the text is blurred and you scroll by feel.
Splits fire when a heading passes the top of the window. Posts with fewer than three headings use the 25%, 50% and 75% marks instead.
Anti-cheat theatre: Ctrl+End, or one jump of more than 60% of the page, marks the run as TAS (tool-assisted). It goes on the board with a label but never counts as a personal best.
World records are computed, not run: words ÷ 900 wpm + 1.5 s with seeded jitter, credited to a generated runner. They are labelled unverified because they are fictional. "Human" is the same post at 250 wpm.
Leaderboards keep the top ten per post and category in localStorage. Reset clears one board. Nothing is sent anywhere.
Rendering uses marked from jsDelivr, with a small built-in renderer as fallback. Links in posts open in a new tab so the run survives.