Keyboard Check · QHuman keyboard fidelity test rig
When a keyboard macro on repeat starts going wrong, is it the keys or the page? This page tells you. Nothing you type leaves it.
pass 0 question 0 elapsed 0.0 s keys 0
Run spoiled. This window was hidden or switched away from during the run. Browsers slow down background tabs, so every time below is unreliable. Keep this window in front for the whole run, then press Reset and go again.

The quiz

pass 0 · question 0
Press Reset run, then record your macro against this page.
Keyboard only. Type the letter of the correct option and press Enter. A keyboard-only macro can drive the whole thing.

How to use it

  1. Pick how many questions in the box below, 8 is fine, and press Reset run.
  2. Record one pass. In QHuman press Record, click into the answer box here, then for each question type the letter of the option marked the correct entry and press Enter. The page moves to the next question as you go. Stop recording when it wraps back to question 1. If your recording has no key presses, turn on Record keyboard in QHuman's Settings.
  3. Press Reset run again. Your hand-typed pass must not be the one the macro is measured against.
  4. Play it on repeat. On QHuman's Playback tab set Start delay to 3 seconds and Play to 20 times, then press Play. You now have 3 seconds to click into the answer box here, so the keys land on this page and not in QHuman.
  5. Hands off until it stops. Then read the verdict line and the table below.
What the result means. Every pass correct: the keys are landing fine, and if something still goes wrong in your real app, it is the app, not the macro. Wrong answers only after the first few passes: try the page lag knob below, then Between loops in QHuman. Wrong from the very first pass: the recording itself is off, re-record it.
No run yet.
correct 0 wrong 0 arrived while busy 0 autorepeat 0
Page lag makes this page behave like one that needs a moment after each answer. For that window the box refuses input and anything the macro sends is counted under arrived while busy and thrown away. Leave it at 0 to test the keys alone. Set it to 300 to see whether your macro needs a pause between repeats, which in QHuman is Between loops on the Playback tab.

Before you press play

Per pass — where it went wrong, if it did

passdurationdrift vs pass 1correctwrong arrived busyautorepeatfirst wrong Q
Drift is this pass's duration minus pass 1's. A macro whose passes get steadily longer is falling behind the page. One that stays flat and still goes wrong is not a timing problem. Autorepeat counts a key held long enough for Windows to repeat it, which types a doubled letter.

Key log

t mspassQkeystateverdict
Last 400 entries shown. Copy key log gets the whole run. If you are sending results in, paste Copy results and Copy key log both, into Report a bug... in QHuman or into your reply. Together they show exactly where a run went wrong; either one alone does not.