Dead Clicks: What They Are and Why Your Analytics Ignores Them
A dead click happens when a user clicks something that looks interactive but isn't. Most analytics tools can't see them.
A dead click happens when a user clicks an element and nothing happens. No navigation, no state change, no feedback. The element looked like it should respond. It didn't.
This sounds minor. It isn't. A dead click means your design told a user one thing and your code did another.
Why heatmaps miss them
Click heatmaps are popular for a reason. You can see where on the page users are clicking, identify patterns, notice if people cluster around certain areas. Useful for broad layout decisions.
But heatmaps don't distinguish between a click that fired a handler and a click that went nowhere. Both show up as dots on the map. A heatmap can tell you that 200 people clicked a particular div. It can't tell you that the div had no click handler and all 200 of those users got no response.
To detect dead clicks, you need to listen for click events on elements that produce no navigation, no DOM mutation, no registered handler response within a timeout window. That's not a visualization problem. It's a signal detection problem.
The distance diagnostic
Not all dead clicks mean the same thing.
When a user clicks 4 pixels away from an interactive element, they missed the tap target. The solution is straightforward: bigger touch target. WCAG recommends 44x44 CSS pixels minimum. Apple's Human Interface Guidelines say 44pt.
When a user clicks 150 pixels away from the nearest interactive element and hits a styled div, they thought that div was a button. The solution is the design: stop making non-interactive elements look interactive.
Flusterduck records click coordinates and the nearest interactive element within a 200-pixel radius. The distance tells you which problem you have. Small distance: tap target issue. Large distance: misleading affordance.
What a dead click cluster looks like in production
The most common find during new site onboarding: a product tour tooltip with a "Got it" label styled like a button but implemented as a div with no handler. Users click it repeatedly, nothing dismisses the tooltip, they either find the real dismiss mechanism or they reload the page.
Second most common: a disabled form submit button with no visual indication of why it's disabled. Users have filled out all visible fields. The button looks active. They click it. Nothing. They click it again, harder. The dead click becomes a rage click. They abandon the form.
Both of these look like rage clicks in tools that only detect rage clicks. The causation is different. Fixing the tooltip is a 2-line code change. Fixing the disabled button requires adding validation state feedback so users understand which field still has an error. You can't know which fix applies without knowing whether the user clicked an unresponsive element or a responsive element that returned an error.
How detection works
The dead click signal fires when:
- A click or tap occurs on an element with no registered event listener
- OR a click occurs and no DOM mutation is detected within 300ms
- AND the element or its nearest ancestor within 3 DOM levels has
cursor: pointeror an implicit pointer affordance
The third condition matters. It filters out intentional clicks on genuinely non-interactive content, like clicking a paragraph to start text selection. The cursor is the implicit contract between designer and user: pointer says "this will do something." When it doesn't, that's a dead click.
Weight in the confusion score: 12. Below rage clicks (25) and loop navigation (20), but worth tracking because dead click clusters often indicate systematic design issues rather than one-off user errors. A single dead click could be anything. Forty dead clicks on the same element from 28 different users in two hours means your UI has a false affordance, and every new user will hit it.