Inspect what the browser receives
Keyboard Event Viewer
Press keys and see every event the browser delivers — type, key, code, location, repeat flag, modifiers and millisecond timing — in one ordered log you can pause and copy.
Unfocused — the log only records while this area has focus.
Click this area and press keys. Each event the browser delivers appears below, newest first.
How to use
Reading the event log
Column by column
What each field means
- type — which event fired: keydown, the legacy keypress (character keys only), or keyup.
- key — what the press means: the character produced, or a name like “Shift”. Layout-dependent.
- code — the physical key, e.g.
KeyAorNumpad1. Layout-independent. - location — standard, left, right or numpad; distinguishes left and right Shift for example.
- repeat — “yes” when the event is an operating system auto-repeat while you keep holding.
- modifiers — which of Ctrl, Shift, Alt, Meta were held when the event fired.
Honest limits
What the viewer cannot show
The log records only events the browser actually delivers while the log area is focused. Keys consumed earlier — by keyboard firmware (Fn), the operating system, or browser shortcuts — never appear, and a web page cannot detect them any other way. Timing shows when the browser delivered events, which is not a measurement of your keyboard's own latency.
The log is kept in memory (up to 500 events) and never persisted or transmitted; leaving the page or pressing Clear ends it completely.
Questions
Event viewer FAQ
What does the Keyboard Event Viewer show?
Every keyboard event the browser delivers to the page while the log area has focus: the event type (keydown, keypress, keyup), the `key` value (the character or name), the physical `code`, which key location it came from, whether it was an auto-repeat, which modifiers were held, and the time since the first recorded event.
What is the difference between key and code?
`key` describes the meaning of the press — it changes with your keyboard layout (the same physical key reports Z on a QWERTZ layout and Y on QWERTY). `code` describes the physical key position and stays the same regardless of layout. Seeing both side by side makes layout behaviour easy to check.
How do I use it?
Click the log area, then type. Events appear newest-first with a running number and millisecond timing. Pause stops recording while you read, Clear empties the log, and Copy puts the currently visible log on your clipboard as tab-separated text you can paste into any editor or spreadsheet.
Why do some keys produce keypress and others do not?
The legacy `keypress` event only fires for keys that produce a character, and browsers differ in the details. Modern code should rely on keydown/keyup; this viewer shows keypress simply because the browser still sends it — seeing it appear (or not) is part of the observation.
Why does the log stop when I click elsewhere?
Recording is deliberately limited to the focused log area, so the page never listens to typing that happens outside it — in your address bar, another tab or another app. Click the area again to continue; the paused state is always shown above the table.
Is the log saved or transmitted anywhere?
No. The log lives only in this page's memory: it is gone when you clear it, navigate away or close the tab. Copying is something you do deliberately, and no analytics or network request ever receives the log — verify in your browser's network panel if you like.
Why do media keys or the Fn key not appear?
Keys handled by the keyboard firmware, the operating system or browser shortcuts may never reach the page, so they cannot be logged. Their absence is itself accurate information about what the browser received.