Skip to content

Stop the Clock Game

Stop inside five visible millisecond windows, see exact early or late error, and score a deterministic 200 points per round.

Privacy: your files never leave your device. All processing happens locally in your browser.

How to use

  1. 1.Read the visible target interval, press Start, and use the same focused button position to press Stop when the timer appears inside the window.
  2. 2.Review the exact whole-millisecond stop, center error, and deterministic 200- or 0-point result; window edges are included.
  3. 3.Choose Next Round after a hit, clear five targets for exactly 1,000 points, or Restart after two different normalized misses.

About Stop the Clock Game

Stop the Clock Game is a five-round browser timing challenge with a visible target window in every round. Press Start, watch the timer, and press Stop while the displayed value is inside the announced interval. A stop on either window edge counts. Every successful round awards exactly 200 points, so five successful stops produce the fixed maximum of 1,000. The target changes each round, but nothing is random and every rule is shown before the clock starts.

The five center targets are 1.500, 2.250, 3.000, 3.750, and 4.500 seconds. Each target has an inclusive window extending 100 milliseconds earlier and 100 milliseconds later. For example, the first window runs from 1.400 through 1.600 seconds. A stop at 1.400 or 1.600 is a hit, while 1.399 or 1.601 is a miss. These values are original Lizely game settings rather than an external timing standard.

After every stop, the result shows the normalized whole-millisecond elapsed time, the signed relationship to the center, and the deterministic point award. A stop before the center reports how many milliseconds early it was. A stop after the center reports how many milliseconds late it was. An exact center reports zero error. The scoring rule is binary and transparent: any whole-millisecond result inside the visible interval earns 200, while any result outside earns zero.

The scoring engine keeps elapsed-time evaluation in a pure function. It accepts a round definition and the elapsedMs value produced by the Stop action, rounds that input to the nearest whole millisecond, calculates elapsed minus target, applies the inclusive tolerance, and returns elapsed, error, hit, and points together. State transitions consume that same evaluation result. Unit tests call the pure function directly, while production has no event, listener, query parameter, or global interface that can supply a forged elapsed value.

The live display is intentionally separate from scoring. When a player presses Start, performance.now records the UI start point. requestAnimationFrame updates only the number shown on screen. Pressing Stop subtracts the stored start point and passes that elapsed value into the pure scoring transition. Frame rate does not add points, choose a window, or decide a hit. A slow repaint may make the visible digits update less often, but the stop decision still uses the elapsed measurement supplied to the scoring function.

Leaving an active timer unattended never creates a hidden result. Pressing Escape atomically cancels the current round before the shared boss screen can cover it. Moving the document into a hidden state also cancels. Cancellation clears the animation frame, stored start point, and visible reading, returns the round to Start, and records no attempt, miss bucket, deadlock step, or score. Returning to the page requires an intentional new Start.

Mistakes use normalized signatures. Each miss records whether it was early or late and rounds the absolute error to the nearest 50-millisecond bucket. Repeating the same normalized miss does not add a second failure, even if the raw elapsed value differs slightly. A second distinct early-or-late 50-millisecond timing bucket deadlocks the run and requires Restart. A successful stop clears failed signatures before the next round, so each visible target begins with a clean two-miss allowance.

A successful result remains visible until Next Round is activated. Start cannot run again while a hit is waiting to advance. On the fifth hit, the game freezes as complete and records the 1,000-point best score through the shared local game shell. Completed games, deadlocked games, double Start attempts, Stop before Start, and actions after a successful result are frozen. Negative or non-finite elapsed inputs leave the running state unchanged and do not create a result.

The implementation also guards UI races that are easy to miss in a timer. A synchronous start reference blocks a second Start before React has time to redraw the button, preventing two animation-frame loops. The reference is cleared before a stop result is submitted, so a repeated Stop has no effect. Restart cancels any outstanding frame, clears the stored start, resets the display to zero, and recreates the exact round-one state. Component cleanup removes the test event listener and cancels its final frame.

Keyboard interaction stays with normal focused controls. Tab reaches Start, Stop, Next Round, and Restart in the visible order. Enter or Space activates whichever button actually has focus. The game does not install a global Enter, Space, or arrow-key handler, so form fields and unrelated controls keep native behavior. The principal action buttons have a 44-pixel minimum height, the clock card uses flexible width, and the timer type scales down cleanly for a 390-pixel mobile viewport.

An independent literal oracle covers all five exact centers, both inclusive first-round edges, and the first millisecond outside each edge. A full pure-state simulation proves five rounds advance by 200 to exactly 1,000. Additional adversarial cases prove Stop before Start, double Start, negative and non-finite elapsed values, hit-awaiting-advance freeze, completion freeze, same-bucket miss deduplication, second-distinct-miss deadlock, formatting, and exact Restart. The oracle specifies expected outcomes directly rather than deriving them from the production round array.

This is a recreational estimation game, not a reaction-time test, medical device, accessibility assessment, attention evaluation, cognitive screen, coordination measure, reflex diagnosis, or employment or educational test. Scores should not be interpreted as evidence about a person's ability or health. Browser scheduling, display refresh, input hardware, power management, and operating-system latency can all influence a manual stop. The fixed windows and scores exist only to make the game understandable and repeatable.

Everything runs in the browser. Timer values, attempts, miss signatures, and scores are not uploaded. If browser storage is available, the shared game shell stores only the best completed score on that device; blocked storage simply removes that convenience. No account, network calculation, paid API, sensor, permission, downloaded package, or new dependency is required. Double Escape opens the shared boss screen without changing the running rule, round, failures, target, or score.

Methodology & sources

Define five original rounds with target centers 1500, 2250, 3000, 3750, and 4500 milliseconds and an inclusive 100-millisecond tolerance on each side. The pure evaluator rounds elapsedMs from the Stop action to a whole millisecond, computes error = elapsed - target, awards 200 when absolute error is at most 100, and awards zero otherwise. Production UI timing uses performance.now and requestAnimationFrame only; it exposes no elapsed-time injection event, listener, query parameter, or global test interface. Escape and document-hidden listeners atomically call the pure cancelClock transition, cancel the UI frame, clear the start reference and display, and record no miss or score. Distinct React keys separate Start, Stop, and Next DOM nodes; click detail above one and repeated Enter or Space keydown are rejected. The independent literal oracle pins five centers, two inclusive edges, and two one-millisecond outside misses, then proves full 200-point progression to 1,000. Adversarial tests cover cancel-without-miss, invalid elapsed atomicity, Stop-before-Start, double Start, hit-awaiting-advance freeze, terminal freeze, 50-millisecond early/late bucket deduplication, two-distinct-bucket deadlock, activation guards, formatting, and exact Restart. These are product-authored recreational rules and do not diagnose human ability or health.

Frequently asked questions

How is a successful stop scored?
The elapsed value is rounded to a whole millisecond. Any result inside the visible target interval, including either edge, earns exactly 200 points; a result outside earns zero.
Does this game measure reaction ability?
No. It is a recreational browser timer with product-authored windows. Hardware, display, browser scheduling, and input latency affect manual play, so the score is not a diagnosis or ability assessment.
Why did a similar miss not count twice?
Misses are normalized by early or late direction and a 50-millisecond absolute-error bucket. Repeating the same signature is deduplicated; a second different signature deadlocks the run.

Mini Games guides

View all