Mouse Single- and Double-Click Test

Click the test area to distinguish separate clicks, valid double-click intervals, and suspected switch bounce.

Settings and test
Button to test
ms

Start at 40 ms; the allowed range is 10 to 150 ms.

ms

Must be greater than the suspected-bounce threshold; the range is 100 to 700 ms.

clicks

A sample conclusion appears after at least 20 clicks; choose between 20 and 100.

Ready. Use the selected mouse button in the test area.
Click hereLeft button

Only the left button is recorded. The context menu is blocked only inside the test area.

Recent events for the current button
Session time Click interval Classification
There are no events for the current button yet.
Result overview Waiting for input
Latest click interval for the current button Waiting for test
Clicks for current button
Total clicks across buttons
Valid double-click intervals
Suspected bounce
Abnormal rate

Each button is counted separately; a sample conclusion appears only after the recommended count.

Button summary

Button Clicks Valid double-clicks Suspected bounce Sample status
Left button 0 0 0 Not tested
Middle button 0 0 0 Not tested
Right button 0 0 0 Not tested
Back side button 0 0 0 Not tested
Forward side button 0 0 0 Not tested

Click-interval distribution and threshold positions

Click-interval distribution and threshold positions Bars show the number of click intervals and dashed lines show the two decision thresholds. Text labels and position also distinguish the zones, so color is not the only signal. The distribution appears after at least one click interval is recorded.

The two thresholds are marked; the distribution appears after click intervals are recorded.

If the chart is unavailable, use the values above, the button summary, and the event log to understand the result.

Why can one mouse click become a double-click? If one press of the same physical button is observed by the browser as two releases separated by a very short interval, the tool marks that interval as suspected switch bounce. A longer interval that remains inside the double-click window only indicates a valid double-click and does not by itself indicate a fault.

Learn more

Method and result boundaries

For two adjacent valid releases of the same button, Δt = tᵢ − tᵢ₋₁. If Δt ≤ T_fault, it is suspected bounce; if T_fault < Δt ≤ T_double, it is a valid double-click interval; a larger interval is a separate click. Abnormal rate = suspected bounce count ÷ total clicks for the current button.

Boundary values belong to the shorter interval class: a value equal to the suspected-bounce threshold is suspected bounce, and a value equal to the valid double-click threshold is a valid double-click interval. Classification uses the unrounded internal millisecond value. The default 40 ms and 300 ms settings are adjustable starting rules, not a universal hardware failure standard.

Testing advice and browser limits

Losing focus, dragging, holding, click-assist features, trackpad secondary clicks, and mobile touch can affect the result. After focus is lost, the interval chain is interrupted and the next click becomes a new starting point.

Frequently asked questions

How many clicks are needed to check for mouse switch bounce?

One very short interval cannot prove hardware damage. The page gives a sample conclusion after at least 20 clicks and recommends repeating the comparison in another browser or with a known-good mouse. It reports only browser-observed events and is not a laboratory hardware diagnosis.

Can this tool check repeated clicks on mouse side buttons?

It can check back and forward side buttons when the browser reports them, but some systems or browsers prioritize navigation, so side-button samples may be incomplete.

Privacy and sources

Click times, button identifiers, and results are processed only in the current browser page; files and test data are not uploaded. The clipboard is accessed only after you actively click the copy button.

The page receives mouse events using Pointer Events button and pointer-type fields and uses the monotonic time base from Performance.now() to calculate adjacent release intervals.