Input TestsBrowser test

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
Direct browser API reading

Privacy-first. Tests run locally in your browser. We do not upload keystrokes, pointer paths, or media.

Best with a physical keyboard in a focused desktop or laptop browser. Some OS shortcuts, Fn layers, and vendor-specific keys may never reach the page.

Important

  • Browsers cannot expose every OS-level or Fn key. Some shortcuts are intercepted by the operating system.
Test instrumentInput Tests
Currently pressedDetected in this sessionNot detectedOS-reserved / not testable
Esc
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
PrintScreen
ScrollLock
Pause
`
1
2
3
4
5
6
7
8
9
0
-
=
Backspace
Tab
Q
W
E
R
T
Y
U
I
O
P
[
]
\
Caps
A
S
D
F
G
H
J
K
L
;
'
Enter
Shift
Z
X
C
V
B
N
M
,
.
/
Shift
Ctrl
Win
Alt
Space
Alt
Win
Menu
Ctrl
Ins
Home
PgUp
Num
/
*
-
Del
End
PgDn
7
8
9
+
4
5
6
1
2
3
Ent
0
.
Fullscreen not supported
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

    1. Choose the visual layout that best matches the physical keyboard: Windows Full-size, Windows TKL, MacBook / Apple Compact, Apple Extended, or Compact / 60%.
    2. Click the page or tester area so this browser tab has focus.
    3. Press physical keys one at a time. A key shows Currently pressed while held and Detected in this session after the browser receives it.
    4. Open the Untested keys list to find remaining keys for the selected layout and work through them systematically.
    5. 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.