Keyboard Tester
Type to see every key light up on a visual layout (QWERTY/AZERTY, Windows/Mac). Detect stuck keys, ghosting, plus an NKRO / key rollover test. Free.
About Keyboard Tester
Keyboard Tester helps diagnose stuck or unresponsive keys without installing extra software. Switch between common layouts, highlight every key press, and watch the log update with the exact event code so you can remap or replace keys confidently. Try also our Screen Tester and Typing Speed Test.
- Choose the layout that matches your keyboard (QWERTY, AZERTY, Mac, or Windows).
- Click the page or press any key to begin. Keys highlight and appear in the log instantly.
- Use the “Show key codes” toggle when you need the event.code name for shortcuts or remapping.
- Press reset to clear the event history and start a new test.
How do I know if a key on my keyboard is broken?
Press the suspect key while the tester is focused on this page. A working key lights up immediately and appears in the event log with a 'Down' then 'Up' event. A dead key produces nothing — no highlight, no log entry. A flaky key may register intermittently or only when you press extra-hard. If the same key fails in multiple browsers it is a hardware fault; if it only fails in one OS it is most likely a driver or remapping issue.
What's a 'stuck' key and how does the tester detect it?
A stuck key is one that the keyboard reports as held down even when you have released it. Press the key once and look at the 'Currently pressed' panel: if the key remains highlighted after you let go, or if 'Held' events keep firing on their own, the switch is mechanically or electrically stuck. Cleaning under the keycap with compressed air resolves most cases; if not, the switch itself needs replacing.
Why do some keys not register or fire the wrong character?
Three usual causes: wrong layout (a French AZERTY keyboard typing on a QWERTY OS — switch the 'Keyboard layout' selector to confirm), the OS has a custom remap (Windows PowerToys, macOS Karabiner, Linux setxkbmap), or the modifier state confuses the browser (some Fn-layer keys never reach the OS at all). The 'Show key codes' toggle reveals event.code, which is layout-independent — useful for spotting remaps.
Can the tester detect rollover and ghosting issues?
Yes — hold three or more keys at the same time. A keyboard with full N-key rollover (NKRO) registers every key as 'Currently pressed'. Most cheap rubber-dome keyboards stop at 2KRO or 3KRO and the fourth key silently drops; some show 'ghost' events where unpressed keys appear (common with shared-matrix membrane boards). Mechanical and gaming keyboards usually advertise NKRO over USB so you can press a whole chord without losing keys.
How accurate is the NKRO / key rollover test in a browser?
Treat it as a hint, not a hardware verdict. The tester only counts how many keydown events the browser actually receives, and that path is capped and distorted before it ever reaches the page: the OS intercepts shortcut chords, the keyboard firmware and Fn layer silently swallow combinations, and modifier ghosting can drop keys. A true full-NKRO board can therefore under-report (looking like 2-3KRO), and a held-then-tapped sequence can over-count. For a definitive rating, check the manufacturer spec or a dedicated USB-HID analyzer — use this test to compare keys and spot obvious dropouts.
What is the pass/fail coverage report and what do the CSV/JSON columns mean?
The coverage tracker turns the tool into a repeatable acceptance test: every key you press at least once turns green and stays green, a badge shows 'X / N tested', and an 'Untested keys' list tells you exactly what is left on a 100+ key board so you never lose your place. Export a full session report as CSV or JSON — each row is one key with: code (event.code, e.g. KeyA), label, tested (yes/no), presses (total keydowns this session), and stuck (yes when a key was held past the watchdog threshold with no keyup received). A summary line records the layout, NKRO max, and tested/total. Attach the file to a repair ticket as an auditable artifact.

Does the keyboard tester work offline, and is it safe to type passwords into it?
It is safe and private. The whole test runs locally in your browser using standard keydown/keyup DOM events — nothing you type is logged to a server, uploaded, or persisted between sessions, so there is no keylogging. That said, a keyboard tester does not need your real password: type random keys to verify switches. The page works fully offline once it has loaded, and closing the tab clears the event log immediately.
How do I find the scan code / event.code of a key online?
Turn on 'Show key codes' and press the key — each event logs both event.code and event.key. event.code is the physical scan position and is layout-independent ('KeyA' is the A position on QWERTY, AZERTY or Dvorak), so it is what you bind shortcuts to. event.key is the produced character ('a', 'A', '@') and changes with layout and modifiers. The old numeric keyCode (e.g. 65) is deprecated; modern bindings use event.code. The exported report lists event.code for every key on your layout.
Does the tester work on Mac, Windows, and Linux laptops?
Yes. The page reads standard browser keyboard events, which all three desktop OSes implement. The 'MacBook QWERTY' layout adds Command (⌘) and Option (⌥), while 'Windows QWERTY' includes the Win and Menu keys. Function row behavior depends on the laptop's BIOS/OS — on many MacBooks you must hold Fn to send F1–F12 unless you toggle 'Use F1, F2, etc. keys as standard function keys'.
Why don't the Fn / brightness / volume keys appear in the log?
Most Fn-layer hotkeys (brightness, volume, screen lock, media keys) are intercepted by the keyboard's firmware or the OS before the browser sees them. The tester only logs what reaches the browser, so missing media keys are usually a feature, not a fault. To verify those keys, use your OS's built-in input viewer (e.g. macOS 'Show Keyboard Viewer'). Letter, number, modifier, arrow and dedicated F1–F12 keys all reach the browser and will appear in the log.
Is the tester safe — does any of my typing get sent anywhere?
Yes. The entire test runs in your browser using the standard 'keydown' / 'keyup' DOM events. Nothing is uploaded, stored on a server, or persisted between sessions. Closing the tab clears the event log immediately. You can run the tester offline (after the page has loaded once) without any difference in behavior.
When should I use the key codes view?
Turn on 'Show key codes' whenever you need event.code or event.key (e.g. when configuring keybindings in VS Code, Vim, OBS, or game launchers). The codes are stable across keyboard layouts — 'KeyA' is the physical A position whether you are on QWERTY or Dvorak — so they're the right thing to bind shortcuts to. If you only see numbers (like 65) your browser is reporting the deprecated keyCode; modern bindings use event.code instead.
