Physical behavior versus software
A physically held switch and a software-generated held state can produce similar browser events. This test shows what reached the page; it cannot identify the underlying cause by itself.
Press-and-release diagnostic
Watch which keys the browser currently reports as held, review hold and repeat behavior, or run a guided check for matching press and release events.
Press/release monitor
Swipe sideways to view the full keyboard.
Left and right positions are shown separately where the browser reports them.
Browser repeat events are counted as normal hold information. Blur or hidden-tab cleanup clears live state without creating a failed release result.
Interpreting held-key state
A key can appear continuously active when a physical switch remains engaged, but similar symptoms can come from firmware, a lost keyup event, accessibility settings, remapping software, shortcuts, focus changes, or connection behavior.
A physically held switch and a software-generated held state can produce similar browser events. This test shows what reached the page; it cannot identify the underlying cause by itself.
Sticky Keys, remapping utilities, operating-system shortcuts, remote desktop software, and missed releases can affect Ctrl, Shift, Alt, or Meta behavior. Left and right positions are displayed separately where available.
Browsers normally send repeated keydown events while a character key is intentionally held. Repeat counts are useful context, but repetition alone is never classified as a stuck key.
Repeat the guided test, try another browser, reconnect an external keyboard, temporarily disable macro or remapping tools where safe, review accessibility features, and compare on another computer when practical.
Switching tabs, opening browser UI, or triggering a reserved shortcut can interrupt event flow. The tool clears held state after blur or visibility changes and labels the session interrupted rather than treating cleanup as a failed release.
Current holds, repeat counts, durations, and guided attempts exist only in temporary page memory. Raw events and typed characters are not sent to a backend or persisted in browser storage.