Keyboard Tester
Light up keys as you press them to spot dead or stuck keys
Shows a full-size keyboard layout on screen. Press a key and it lights up instantly; release it and it turns green. Spot dead keys, stuck keys, and your simultaneous-key limit. Runs 100% in your browser.
Last event:nothing yet
How to check
- Click anywhere on this page to give it focus, then press your keys one by one. A key is blue while held and turns green once released.
- If every key turns green, the keyboard is fine. A key that never changes color = a dead key.
- If a key stays blue after you let go, it may be a stuck or chattering key.
- Hold several keys at once and keep adding more, watching “Max keys at once” — that is your N-key rollover (simultaneous-key limit). Gaming keyboards usually have no limit.
- Click a key on screen to toggle its tested mark on or off. “Reset” clears everything.
Notes
- The Fn key, some laptop media/brightness keys, and combos the browser or OS reserves (e.g. Ctrl/⌘ shortcuts, F11, PrtSc) may not be detectable from a web page.
- Laptop keyboards vary slightly, so the on-screen layout may not match yours exactly. What matters is whether the key you press lights up.
- Everything runs inside this browser; nothing is uploaded to any server.
Working…
0.0
It hasn't frozen — the result will appear when the calculation finishes.
About Keyboard Tester
The on-screen 104-key ANSI layout lights up from the KeyboardEvent.code value the browser reports, not from the character printed on the keycap. code names the physical position of the key, so the key in the Q position always reports KeyQ whatever language or layout is active. You can leave an input method on and the test still works.
"Max keys at once" is the largest number of keys that reached the browser while held down together. It is meant to measure your keyboard's rollover, but reading that number correctly takes a little background about how keyboards and USB work.
Ghosting and rollover: how a keyboard reads keys
Most keyboards do not give each key its own wire. They scan a matrix of rows and columns. Without a diode on every switch, pressing three keys at three corners of a rectangle lets current flow as if the fourth corner were pressed too. That phantom press is ghosting. To avoid it, controllers simply refuse some combinations, which is called jamming or blocking. If the fourth key of a combination never lights up in this test, that is usually why.
Rollover (KRO) is how many keys can be held and all be recognized. Even a basic 2KRO keyboard often reads modifiers (Shift, Ctrl, Alt, Win) on separate lines, so the result depends heavily on which keys you try. Test with the combinations you actually use, such as W, A, S, D plus Shift and Space.
6KRO and NKRO: a number that comes from the USB spec
The USB HID boot-protocol keyboard report is eight bytes: one byte of bit flags for the eight modifier keys, one reserved byte, and six slots for key codes. A keyboard running in boot mode can therefore report at most six ordinary keys at once, plus modifiers. That is where "6KRO" comes from. To send more, a manufacturer uses its own report layout, marketed as USB NKRO.
So if this test tops out at six plus whatever modifiers you held (for example 8), the keyboard is probably in 6KRO mode. Many gaming keyboards have a key combination to toggle NKRO, and some ship in 6KRO for BIOS compatibility. Laptop keyboards, by contrast, commonly block at three or four keys for some combinations.
Bluetooth, KVM switches, USB hubs and remote desktop sessions can impose their own limit first. If the number is lower than the box promised, plug the keyboard straight into the computer and test again.
key vs. code, and what input methods do
The "Last event" line shows both. key is what the press produces right now (a, A, Enter, or a character in another script); code is the physical position (KeyA). The W3C UI Events spec says code values do not change with the user's locale: on a French AZERTY keyboard, the key that types A reports KeyQ. That is why games bind WASD by code, so French players get ZQSD in the same place.
When a Chinese, Japanese or Korean input method is composing, keydown events carry isComposing = true, key is usually "Process", and the legacy keyCode is 229. MDN warns that on the first or last keystroke of a composition, isComposing can be false while keyCode is still 229. This is behind the classic bug where pressing Enter to confirm a Japanese conversion also submits a chat message. This tool only looks at code, so composition does not affect it.
The spec defines Lang1 (Korean Han/Yeong, Japanese Kana) and Lang2 (Hanja, Japanese Eisu) but marks them optional, so depending on the OS and driver they may arrive as AltRight or ControlRight, or not at all. Keys that exist on ISO and JIS boards but not on ANSI, such as IntlBackslash (next to left Shift on UK and German keyboards), IntlYen, IntlRo, Convert, NonConvert and KanaMode, are not drawn on this layout; they show up as an extra key and are counted separately as "+ N extra", so they never hold back the percentage. If you see that message, the key works. When Lang1 or Lang2 arrives, the tool lights the right Alt or Ctrl slot, so a Korean keyboard without those keys can still reach 100%.
Keys a web page cannot see
Fn is usually handled inside the keyboard and never sent to the computer. Laptop brightness and volume keys, PrintScreen on Windows (which may send only keyup, so the tool also marks keys on keyup), and browser shortcuts such as Ctrl+W or ⌘+Q can be captured before the page sees them. The tool deliberately does not block Ctrl or ⌘ combinations so you can always leave the page. When the window loses focus it releases every held key, so an Alt+Tab does not leave keys looking stuck.
Worked examples
Gaming keyboard stops at 8
- Input
Hold Shift + Ctrl, then Q W E R T Y U- Output
Max keys at once: 8
Two modifiers plus six ordinary keys, which matches the six-slot boot report. The keyboard is probably in 6KRO mode; look up its NKRO toggle and test again.
Laptop ignores the fourth key
- Input
Hold Q, W, A, then add S- Output
S never lights up; maximum 3
A textbook matrix block to prevent ghosting. A spread-out combination such as Q, P, Z, M may reach four or more.
Typing with a Japanese IME on
- Input
Romaji input, press A to start composing あ- Output
key: Process · code: KeyA
The composing keydown reports Process instead of a character. code still names the physical key, so the A key lights up.
How to use it
- Click the page once to focus it, then press each key.
- Check that every key turns green; note any key that never changes or stays blue after release.
- Hold your usual game combinations and keep adding keys while watching "Max keys at once".
Frequently asked questions
A key types twice (chatter). Can this show it?
A quick double flash, or a key that goes blue again after release, is a hint. Browser events cannot reliably resolve bounces a few milliseconds apart, so also type the key repeatedly in a text editor and look for doubled letters.
Fn does nothing.
That is normal. Fn is almost always handled inside the keyboard and never reaches the computer.
My NKRO keyboard shows a low maximum.
Make sure it is plugged in directly, not through Bluetooth, a hub, a KVM or remote desktop, and that NKRO mode is enabled. Beyond ten keys, you also run out of fingers.
The key between left Shift and Z shows up as an extra key.
That is IntlBackslash, found on ISO keyboards. The on-screen layout is ANSI, which lacks it, so it is counted separately and does not affect the percentage. The message means the key works.
Sources
- W3C — UI Events KeyboardEvent code Values
- W3C — UI Events (isComposing)
- MDN — Element: keydown event (IME composition and keyCode 229)
- USB-IF — Device Class Definition for HID 1.11 (Appendix B, Boot Keyboard)
Last reviewed: