Keyboard Tester
Test keyboard keys online with Windows full-size, TKL, MacBook/Apple, and 60% layouts. See pressed/tested keys, event.key/event.code, repeat status, and untested keys.
- Direct browser input
- No device permission
- No test result history
- No account or upload
Important
- Browsers cannot expose every OS-level or Fn key. Some shortcuts are intercepted by the operating system.
Untested keys (104)
- Esc
(Escape) - F1
(F1) - F2
(F2) - F3
(F3) - F4
(F4) - F5
(F5) - F6
(F6) - F7
(F7) - F8
(F8) - F9
(F9) - F10
(F10) - F11
(F11) - F12
(F12) - PrintScreen
(PrintScreen) - ScrollLock
(ScrollLock) - Pause
(Pause) - `
(Backquote) - 1
(Digit1) - 2
(Digit2) - 3
(Digit3) - 4
(Digit4) - 5
(Digit5) - 6
(Digit6) - 7
(Digit7) - 8
(Digit8) - 9
(Digit9) - 0
(Digit0) - -
(Minus) - =
(Equal) - Backspace
(Backspace) - Tab
(Tab) - Q
(KeyQ) - W
(KeyW) - E
(KeyE) - R
(KeyR) - T
(KeyT) - Y
(KeyY) - U
(KeyU) - I
(KeyI) - O
(KeyO) - P
(KeyP) - [
(BracketLeft) - ]
(BracketRight) - \
(Backslash) - Caps
(CapsLock) - A
(KeyA) - S
(KeyS) - D
(KeyD) - F
(KeyF) - G
(KeyG) - H
(KeyH) - J
(KeyJ) - K
(KeyK) - L
(KeyL) - ;
(Semicolon) - '
(Quote) - Enter
(Enter) - Shift
(ShiftLeft) - Z
(KeyZ) - X
(KeyX) - C
(KeyC) - V
(KeyV) - B
(KeyB) - N
(KeyN) - M
(KeyM) - ,
(Comma) - .
(Period) - /
(Slash) - Shift
(ShiftRight) - Ctrl
(ControlLeft) - Win
(MetaLeft) - Alt
(AltLeft) - Space
(Space) - Alt
(AltRight) - Win
(MetaRight) - Menu
(ContextMenu) - Ctrl
(ControlRight) - Ins
(Insert) - Home
(Home) - PgUp
(PageUp) - Num
(NumLock) - /
(NumpadDivide) - *
(NumpadMultiply) - -
(NumpadSubtract) - Del
(Delete) - End
(End) - PgDn
(PageDown) - 7
(Numpad7) - 8
(Numpad8) - 9
(Numpad9) - +
(NumpadAdd) - ↑
(ArrowUp) - 4
(Numpad4) - 5
(Numpad5) - 6
(Numpad6) - ←
(ArrowLeft) - ↓
(ArrowDown) - →
(ArrowRight) - 1
(Numpad1) - 2
(Numpad2) - 3
(Numpad3) - Ent
(NumpadEnter) - 0
(Numpad0) - .
(NumpadDecimal)
Live keyboard readout
- event.key
- —
- event.code
- —
- repeat
- —
- Pressed now
- 0
- Tested (layout)
- 0
- Untested (layout)
- 104
- Events
- 0
Currently pressed
None
Recent timeline
Completion summary: 0 of 104 testable keys on the selected layout produced browser events. OS-reserved and non-testable keys are excluded. A remaining untested key may reflect focus, OS/browser interception, physical layout mismatch, firmware/vendor behavior, connection/device behavior, or an actual keyboard issue; absence alone cannot distinguish the cause.
How to use
- Choose the visual layout that best matches the physical keyboard: Windows Full-size, Windows TKL, MacBook / Apple Compact, Apple Extended, or Compact / 60%.
- Click the page or tester area so this browser tab has focus.
- Press physical keys one at a time. A key shows Currently pressed while held and Detected in this session after the browser receives it.
- Open the Untested keys list to find remaining keys for the selected layout and work through them systematically.
- Use Reset to clear detected keys, event details, and the recent timeline before a new check.
What the result means
- Currently pressed means the browser received keydown for that code and has not yet processed the corresponding release or cleanup.
- Detected in this session means at least one browser keyboard event for that physical code was observed. Untested means no event for that selected-layout key has been observed in this session; it does not by itself mean the key is broken.
- event.code represents the physical key position or code reported by KeyboardEvent, while event.key represents the resulting value under the active keyboard layout and modifiers.
- repeat=true means the browser reports an auto-repeating held key; it is not a new physical switch press.
- Coverage counts apply only to the currently selected visual layout.
Limitations
- Only keyboard events delivered to this browser page are observable. Fn layers, firmware-only keys, vendor special keys, media keys, and OS-reserved shortcuts may be intercepted or never emit a page event.
- The layouts are visual guides for common physical arrangements; a different keyboard layout or firmware mapping can change which code is expected.
- This checks browser event registration and coverage, not NKRO certification, ghosting, chatter, polling rate, switch debounce, scan rate, latency, or overall keyboard health.
Troubleshooting
- Space or arrows scroll the page
- Focus the tester area after load. The engine prevents default for common scroll keys while attached.
- A key remains untested
- Confirm the selected visual layout matches the physical keyboard, focus this tab, and try the key again. OS/browser interception, firmware behavior, connection issues, or a physical issue can all leave a key unobserved; this page cannot distinguish them from absence alone.
- The layout does not match my keyboard
- Switch to the closest Windows Full-size, Windows TKL, MacBook / Apple Compact, Apple Extended, or Compact / 60% visual layout before checking coverage.
Related tools
FAQ
Can you detect every key including Fn?
No. Browser pages only see keyboard events that reach the browser. Fn and some firmware, vendor, media, or system keys may never emit a browser event, so they are not treated as a failed test.
What does an untested key mean?
It means the page has not observed the selected layout's event.code for that key in this session. It does not by itself prove a hardware failure; check focus, layout selection, OS/browser interception, firmware, connection, and the physical key separately.
Why can event.key and event.code be different?
event.code identifies the browser-reported physical key position, while event.key reflects the resulting value under the active keyboard layout and modifiers. The two fields answer different questions and can legitimately differ.
Does this test keyboard ghosting, chatter, or polling rate?
Keyboard Tester covers individual key registration and selected-layout coverage. For simultaneous key reporting and possible missing combinations, use the Keyboard Rollover Test. For duplicate press-cycle timing observations, use the Keyboard Double-Press / Chatter Test. For browser-delivered keyboard event timing and rate, use the Keyboard Polling / Event Rate Test.
Is key text uploaded?
No. Events stay in your browser. Analytics never receives key text or codes you type.