KeyBench

A macOS typing benchmark that knows which keyboard you are typing on.

KeyBench showing a typing test with the detected keyboard named in the corner

The problem

Every browser typing test measures your typing. None of them can tell a Magic Keyboard from a custom 65% build, so results from every board you own land in one undifferentiated pile. If you own more than one keyboard, the question you actually want answered is which of them you are genuinely faster on, and whether that gap is real or just noise.

Why it has to be a native app

Browsers have no device identity

There is nothing in a KeyboardEvent that says which keyboard sent it. IOKit's HID layer is the only source of vendor ID, product ID, serial and transport.

Browsers blur their clocks

Event timestamps are coarsened as a Spectre mitigation, which destroys the sub-millisecond intervals that keyboard comparison and chatter detection depend on.

HID sees only real presses

macOS key auto-repeat is synthesised by the window server and never reaches HID. Every event is a genuine physical transition, which is what makes bounce detection trustworthy.

What it measures

●Typing

Net and raw WPM, accuracy, consistency, CPM, character breakdown and correction rate. Time, words, quote, code, custom and zen modes.

●Per key and per pair

Key heatmap by speed or error rate, key-pair latency with same-finger pairs flagged, dwell time, finger load, and an error taxonomy separating substitutions, insertions, omissions and transpositions.

●Hardware

Switch chatter detection, rollover and NKRO testing, polling rate estimation, and a dead or sticky key sweep.

●Comparison

An interleaved A/B protocol with matched text, alternating order, discarded warm-ups, and a verdict reported as a difference with a confidence interval.

●Practice

Drills weighted toward the key pairs you are measurably slow on, built from that keyboard's own history.

●Yours to keep

One local SQLite file, CSV export, six themes, and no network code anywhere in the app.

It tells you when it does not know

Averaging two keyboards will always name a winner, even when there is nothing to find. KeyBench pairs both boards on identical seeded text, alternates the order, discards the first test after every swap, removes the long-run practice trend, and then reports an interval rather than a number:

Board A is faster by 4.2 wpm (95% CI +1.1 to +7.3) over 14 paired blocks.
No clear difference after 9 paired blocks. The gap is 1.3 wpm in favour of Board B, but the 95% interval (-2.4 to +5.0) includes zero, so it cannot be separated from chance. Around 31 paired blocks would be needed to resolve a difference this size.

Honest limits

Install

macOS 14 or later, Apple silicon. No dependencies to fetch.

git clone https://github.com/knightynite/keybench.git
cd keybench
./Scripts/build.sh
open build/KeyBench.app

Grant Input Monitoring when asked. Nothing typed leaves your Mac. Background typing measurement exists but is off by default, records counters rather than characters, and stops entirely whenever macOS signals a password field.