Valid keys per second
After a run, show the number of valid keys in each second to reveal whether speed was even.
Choose a duration and key mode, tap quickly, and review average CPS, the one-second rolling peak, and valid key count.
Test settings
Example: KeyA, Space, or ShiftLeft. It must exactly match the browser event code.
Enter a code beginning with a letter and containing only letters and numbers, such as KeyA, Space, or ShiftLeft.
Only valid non-repeat keys count. Tab leaves the area and is not included.
The result describes keyboard events received by this browser. It does not replace hardware polling, latency, or electrical tests.
After a run, show the number of valid keys in each second to reveal whether speed was even.
After a run, compare valid counts for different KeyboardEvent.code values.
Valid events have event.repeat=false, are not composed input, and fall in [0, duration). Average CPS = valid count ÷ duration in seconds. Peak CPS is the largest count in any continuous half-open 1,000 ms window.
Unrounded performance.now() differences are used internally. Time uses [0, duration); average and peak use raw values, while the display shows two decimals and duration shows one.
Automated checks cover normal values, half-open boundaries, rolling-window edges, invalid durations and timestamps, non-finite filtering, bins, key distribution, and input immutability. Browser checks cover first-key and button start, specific keys, repeat, Tab, focus loss, copy, and reset.
One-second runs vary widely. Focus loss, background tabs, system shortcuts, input methods, remote desktops, virtual machines, and extensions can change events. This is browser event rate, not USB polling, scan rate, input latency, or electrical performance.
Average CPS is valid non-repeat keydowns divided by test seconds. Peak CPS is the largest valid count in any continuous 1,000 ms window.
No. System auto-repeat events marked event.repeat=true and composed-input events are excluded.
Twenty presses divided by five seconds is 4.00 CPS. Keep duration, key mode, and device conditions the same when comparing results.
Key events and statistics are processed only in this browser. Nothing is uploaded, no remote API is called, and nothing is written to the URL or local storage. Clipboard access occurs only after you click copy.
No third-party runtime code or assets are reused. The algorithm and interface are independently implemented; external links explain browser-event and high-resolution timing standards only.