This online keyboard test lights up each key on a virtual keyboard the moment you press it, so you can quickly confirm that every switch on your keyboard registers. It works with membrane keyboards, mechanical keyboards and laptop chiclet layouts, and it needs nothing more than a modern browser. Start typing and every keypress is captured live, complete with the human-readable key name and the raw JavaScript code your browser reports.
A dead key is easy to miss until it costs you a password or a game. By pressing every key and checking that it flashes on screen, you can find keys that no longer register, keys that stick down after release, and keys that fire the wrong character. The test also tracks how many keys are held at once, which is how you check n-key rollover and anti-ghosting: mash a handful of keys together and count how many stay lit. Cheap keyboards often cap out at two or three simultaneous keys, while gaming boards should hold many more.
Because everything happens on your own device, nothing you type is recorded, uploaded or stored. The keyboard tester simply listens for the browser keydown and keyup events and mirrors them onto the layout. That makes it safe to run before an exam, a tournament or an important deadline, and it is a fast first step when you are deciding whether a keyboard fault is hardware or software. If a key fails here in more than one browser, the problem is almost certainly the keyboard itself.
Testers, refurbishers and second-hand buyers use a keyboard checker like this to verify a board before they trust it. If you just bought a used mechanical keyboard, run through the full layout, hold key combinations to confirm rollover, and watch for chatter where a single press registers twice. It is the quickest way to catch a problem while you can still return the hardware.
How this test works
This test listens for the standard keydown and keyup events on the document and marks the matching key on the on-screen layout. The key is identified by event.code, which describes the physical key position and does not change with your keyboard layout, so the highlight is correct on QWERTY, QWERTZ, AZERTY and Dvorak alike. Nothing is intercepted or forwarded: the events are read, drawn and discarded, and nothing you type is sent anywhere. What it cannot see are keys the operating system claims first, which on most systems includes PrintScreen and nearly every Fn combination.
How to use the keyboard test
- Click anywhere on the page so the keyboard capture area has focus.
- Press each key in turn and confirm the matching key lights up on screen.
- Hold several keys at once to test n-key rollover and anti-ghosting.
- Watch the last-key panel for the exact key name and JavaScript code.
- Note any key that fails to light, stays lit, or reports the wrong value.
Reference tables
These are server-rendered, so they are readable without running the test and quotable without running any JavaScript. Where a figure comes from a specification it is cited under the table; where it is our own judgement, the table says so.
| What it measures | What it cannot see |
|---|---|
| Whether the browser receives a keydown and keyup for a physical key | Whether a key that never arrives is a dead switch, a dead cable or an OS-level block |
| Which physical key was pressed, through event.code | Which key is printed on your keycap: that is a layout setting, not a hardware fact |
| How many keys the browser reports as held at the same time | Your keyboard's true rollover ceiling, because the browser and OS can drop keys before we see them |
| Repeated keydown events while a key is held | Actuation force, travel distance, switch type or debounce timing |
| Nothing when the OS intercepts the key first | PrintScreen, some Fn combinations and OS shortcuts, which never reach the page |
Compiled by MyGearCheck from the browser APIs each test uses. Every limit listed here is a limit of the browser, not of your hardware.
| Level | Simultaneous keys reported | What you notice |
|---|---|---|
| 2KRO | Two, plus modifiers | A third key is dropped. Common on cheap membrane boards and enough for typing, not for games. |
| 6KRO | Six, plus modifiers | The ceiling of the USB HID keyboard boot protocol report, which carries six key slots and a modifier byte. Plenty for almost everything. |
| NKRO | Every key, in principle | The keyboard sends a different kind of report so it is not bound to six slots. Often needs to be switched on in firmware. |
| Ghosting | Not a level: a wrong key appears | A key you never pressed registers, because the switch matrix cannot tell certain combinations apart. Anti-ghosting hardware prevents this. |
The six-key figure comes from the USB HID keyboard boot protocol report format. The rest describes what the keyboard test above can show you. Remember the limit in the table further up this page: a browser cannot prove your board is NKRO, because the operating system and the browser can both drop keys before the page sees them. What it can prove is the opposite, that keys are being dropped somewhere in that chain. See n-key rollover and ghosting explained.
Frequently asked questions
How do I know if a key is dead?
Press the suspect key and watch the on-screen keyboard. If the matching key does not light up while every other key does, that key is not registering and is likely dead. Try it in a second browser to rule out software before you blame the hardware.
What is n-key rollover and how do I test it?
N-key rollover is the number of keys a keyboard can register at the same time. To test it, hold down several keys together and count how many stay highlighted. Basic keyboards often stop at two or three, while gaming keyboards with full rollover keep every held key lit.
Is anything I type sent to a server?
No. The keyboard test runs entirely in your browser using the native keydown and keyup events. Nothing you press is uploaded, logged or stored, so it is safe to run at any time.
Why does a key show the wrong character?
That usually means your active keyboard layout in the operating system does not match the physical keyboard. The test shows the raw event code, which is tied to the physical key, so you can compare it against the printed legend to confirm a layout mismatch rather than a fault.
Does the test work with any keyboard layout?
Yes. The key that lights up is matched on event.code, which describes the physical key position and does not change with your layout, so a QWERTZ, AZERTY or Dvorak keyboard highlights the correct key. The letter shown next to it is what your layout produces, which is why the two can differ.
Why does nothing happen when I press the Fn key?
Fn is handled inside the keyboard itself and never becomes a browser event. Its absence here says nothing about whether it works, and the same is true of most Fn combinations.
Can I use this test on a Bluetooth keyboard?
Yes, and it is worth doing: the browser cannot tell a Bluetooth keyboard from a wired one, so any difference you see between the two is real. Keys dropping only over Bluetooth points at the link or the battery rather than the switches.
Does the test remember which keys I have already pressed?
Yes, within the session: a key you have pressed stays marked so you can work through a full board without watching every key at the moment you hit it. Use the reset button to clear it and start again.
Guides for this test
The test shows you what is happening. These explain what to do about it.
More hardware tests
The closest tests to this one are the rest of the input devices group. Working through a whole machine instead? The full check runs everything in order and ends in one report.
Everything else in the suite: