Keyboard Tester
Press every key and watch it light up on a full-size, ISO, TKL, 75 %, 60 % or Mac keyboard. Finds dead, stuck and chattering keys, counts how many keys register at once, and times every press.
How to Use
- Pick the layout that matches your keyboard: Full-size ANSI (US, 104 keys), ISO (UK/EU, 105 keys with the extra key by left Shift), TKL, 75 %, 60 % or Mac.
- Press Start test (or click the keyboard drawing), then press every key once. Each key lights up when it is down and stays tinted once it has been tested; a small number counts repeat presses.
- Watch the readouts: a key that sends a second press within the chatter limit (40 ms by default) is outlined in red, and a key that stays down with no key-up for 3 s turns solid red.
- For rollover, hold several keys together, such as A S D F J K L, and read Most at once. Use the Rollover / ghosting preset to highlight a set to try.
- Press Esc twice or Stop test to give the keys back to the page. For developer details of a single key (key, code, keyCode, location), use the Keyboard Event Inspector.
Nothing you type is stored or sent: the keys stay in this tab. Need key, code and keyCode for one key? Use the Keyboard Event Inspector.
Rollover
| ms | Event | Code | Timing | Note |
|---|
Worked Example
The example on a plain visit. Someone types “the quick brown fox jumps over the lazy dog”, presses the number row, the punctuation keys, the modifiers and the arrows, then holds six home-row keys together. That is 63 of the 104 keys on a full-size ANSI board; the 41 left unlit are Esc, the F-keys, the navigation block, the numpad, the right Windows key and Menu.
A chattering E. E went down at 274.0 ms and came up at 375.0 ms, a hold of 101.0 ms. A second key-down for E, with repeat false, arrived at 382.9 ms. The release gap is 382.9 − 375.0 = 7.9 ms, under the 40 ms limit, so it is chatter: the switch bounced, the finger did not press twice.
The common mistake: timing from press to press. E’s two key-downs are 382.9 − 274.0 = 108.9 ms apart, which looks like an ordinary fast double letter and would pass a 40 ms or even an 80 ms test. Only the gap after the release, 7.9 ms, shows the key never really came back up.
Rollover. A, S, D, F, J and K went down 60 ms apart and were all held at 13,193.0 ms: 6 keys at once, with no modifiers. Six ordinary keys is exactly what the USB boot keyboard report can carry, so a seventh key that does not light points at a 6-key-rollover keyboard, not a dead key. They were then let go one by one after holds of 1,425.0 to 1,500.0 ms, well under the 3 s stuck limit.
Show Work
How Each Measurement Works
event.timeStamp, in milliseconds, for the same code.repeat false, so held-key auto-repeat never counts.How a Keyboard Reports Keys
The key matrix. Keys sit at the crossings of a grid of rows and columns, and the keyboard’s controller scans the grid many times a second. With three keys held at three corners of a rectangle, current can flow backwards through them and make the fourth corner look pressed. That phantom is ghosting. Cheaper boards prevent it by refusing to report the extra key (blocking), which is why some combinations stop at 2 or 3 keys; boards with a diode at every switch avoid the problem and can report every key.
Bounce and debounce. Metal contacts do not close cleanly: they bounce for a few milliseconds. Firmware waits for the signal to settle before it reports a press. When a switch wears, gets dirty or the debounce time is set too short, a bounce slips through as a second press, the “chatter” this tester measures.
The 6-key limit. The USB HID specification (version 1.11, 2001) defines a boot keyboard report that every PC BIOS can read: 8 bytes, made of one byte of modifier bits for the 8 modifier keys, one reserved byte and six key codes. A keyboard using that report can never show more than 6 ordinary keys at once. NKRO keyboards send a larger report once the operating system has loaded.
Codes, not characters. Browsers name each physical key with a code from the W3C UI Events KeyboardEvent code Values specification, named after the US layout: the key right of Tab is KeyQ even on a French AZERTY board, where it types A. That is why this tester lights the right key on any language layout. The spec describes the US “101” layout, which with the Windows and Menu keys has 104 keys, and the European “102” layout with 105: the extra IntlBackslash key beside left Shift, plus the key under Enter that reuses the code Backslash. IBM set the 101-key arrangement with its Enhanced Keyboard in the mid-1980s; Microsoft added the Windows keys with its Natural Keyboard in 1994.
About This Tool
Reference: Dead Pixel Warranty Policies by Brand.
This keyboard tester draws six common layouts, lights each key by its KeyboardEvent.code, and keeps per-key counts, hold times and release gaps. It flags chatter, key-downs with no key-up, keys stuck down, and the most keys held at once. Keys it does not draw (F13, media keys, IntlRo on Japanese boards) are still listed, so nothing pressed goes unseen. The Mac quirks are handled: Caps Lock sends one event per press, and keys released while Command is held send no key-up.
Privacy: the test listens only while its area has focus and you have started it. Key events stay in this browser tab; nothing is recorded, stored or sent. Esc twice, Stop test, clicking elsewhere or switching tabs ends the listening. Browsers and operating systems keep a few keys for themselves (Ctrl+W, Alt+Tab, the Windows key), so those can still act while testing.
Sources: W3C UI Events and UI Events KeyboardEvent code Values (key names, the 101/102 layouts, Fn), MDN Web Docs on KeyboardEvent, and the USB-IF Device Class Definition for HID 1.11 (boot keyboard report). This page is a hardware check; for the developer view of one key (key, code, keyCode, location, IME composition), use the Keyboard Event Inspector.
Related tools: Keyboard Event Inspector, Mouse Tester, and Touchscreen Test.
Frequently Asked Questions
What is key chatter and how does this tester find it?
Chatter is one press arriving as two (or more): you type "e" once and get "ee". A switch’s contacts bounce for a few milliseconds every time they close, and the keyboard’s debounce filter normally hides that; a worn or dirty switch can bounce for longer than the filter and slip a second press through. The tester measures the gap between a key-up and the next key-down of the same key (auto-repeat excluded). In the example above, E was released at 375.0 ms and pressed again at 382.9 ms, a 7.9 ms gap, far quicker than a finger can lift and press, so it is flagged. Raise the limit to 80 ms with the strict preset if you see doubled letters but no flag.
What does NKRO mean, and why does my keyboard stop at 6 keys?
N-key rollover (NKRO) means every key is reported however many are held. Many keyboards stop at 6 ordinary keys plus the modifiers because the USB HID boot keyboard report, defined in the USB HID 1.11 specification, is 8 bytes: one byte of modifier bits (8 modifiers), one reserved byte and 6 key slots. Boards that offer NKRO usually have a switch or key combination for it. Cheaper membrane keyboards often manage only 2 or 3 keys in some combinations because of how their key matrix is wired. The browser and operating system can also cap the count, so treat the number here as what reached the page.
Why do some keys never light up?
Some keys never reach a web page. Fn is handled inside the keyboard itself (the UI Events code list says it usually generates no code), so it is drawn dashed and left out of the count. On a Mac, F1 to F12 change brightness and volume unless you hold fn or change the setting in System Settings. Windows sends Print Screen to the browser only as a key-up, which this tester counts. The Windows key opens the Start menu, and some shortcuts such as Ctrl+W cannot be blocked by a page, so test those keys on their own.
Is it a stuck key or am I just holding it?
The tester cannot feel the key, it only sees that a key-down arrived and no key-up followed. After the stuck limit (3 s by default) the key turns red and is listed as stuck or held. If your finger is off the key, the switch or its stem is stuck, or the key-up was lost. On a Mac, keys released while Command is held send no key-up at all, so the tester releases them when Command comes up and does not count them as faults.
Does this keyboard test record what I type?
No. Keys are only listened to while the test area has focus and a test is running, they stay in this browser tab, and nothing is stored or sent anywhere. The log keeps the last 300 events in memory and is cleared by Reset or by leaving the page. Press Esc twice or Stop test and the keys work normally again.
Common Use Cases
Checking a second-hand keyboard
Press all 104 keys of a full-size board; the “not pressed yet” list shows the ones still to try, so a dead key cannot hide among the 41 you might skip.
Mechanical keyboard double typing
A switch that types “ee” shows up as a red outline with its gap, such as 7.9 ms after release; send the timing to the seller or swap the switch.
Gaming rollover
Hold W, A, Shift, Space and two more keys: 6 at once is the USB boot limit; if only 3 register, that combination ghosts or blocks on this board.
After a spill or cleaning
Run every key and look for keys that stay down for 3 s or more with no key-up: sticky residue holds the key down.
Custom keyboards and firmware
After flashing QMK or VIA, check each key sends the expected code: a 60 % board has 61 keys, and the tester lists any code it did not expect.
Last updated: