DEV Community

Chad Brunswick
Chad Brunswick

Posted on • Originally published at billion-reactiontime.pages.dev

I Can't Get Below 200ms — Can You?

My personal best is 214ms. I've tried 47 times today. I cannot crack 200ms no matter what I do.

A colleague swore he got 183ms last week. I accused him of cheating. He said I'm just old.

So I built this: Reaction Time Test

How it works

You wait for the screen to flash green, then tap/click as fast as humanly possible. Five rounds. It averages your best attempts and rates you on a scale:

  • 🟣 Superhuman — under 150ms (allegedly possible)
  • 🟢 Fast — 150–200ms (pro gamer territory)
  • 🟡 Average — 200–250ms (most people land here)
  • 🔴 Slow — 250ms+ (welcome to the club)

I keep landing solidly in Average. It's humbling.

What I learned building this

The hard part wasn't the timer — performance.now() is accurate to microseconds. The hard part was preventing click anticipation. If the delay before the green flash is predictable, humans will start clicking before they see it, producing fake sub-100ms "scores."

The fix: randomize the delay between 1.5 and 4.5 seconds. If you click early, it counts as a false start and resets that round. No cheating.

I also added a subtle red background during the "waiting" phase so you're not staring at a blank screen. Seems obvious in retrospect. First version had a 40% false-start rate. After the visual change: dropped to ~8%.

The game

Go try it: billion-reactiontime.pages.dev

Drop your score in the comments. My 214ms is apparently "Average" and I'm not accepting that.

Top comments (0)