Skip to content
Hoot Lens.Start free
All articles

What do rage clicks and dead clicks actually tell me?

By Hoot Lens7 min read

Rage clicks flag rapid repeated clicking in a small area. Dead clicks flag clicks that don't produce the feedback a tool expects. They're useful places to look for problems, but the label hasn't explained the problem yet. Check what the control promised and what happened.

Watch the moment, reproduce it, and check whether the action completed. Then count affected visits. That gives you a reason to prioritize a change beyond its warning label.

What does the label actually mean?

Definitions and thresholds vary. Microsoft Clarity describes rage clicks as rapid clustered clicks and dead clicks as clicks without timely visual feedback or navigation. Its semantic metrics documentation also connects click-error signals to JavaScript errors after a click. Check your own tool's definitions before comparing reports.

“Rage” is a memorable name. It's also more than the recording can prove. You can see repeated clicks; you can't see anger. Someone might be impatient, double-clicking out of habit, operating a game, or quickly changing a quantity. Those possibilities call for different responses.

A dead-click flag has the same problem. A copy button might work without showing confirmation. A download might start outside the recorded page. Or the button might have no working handler at all. You need to distinguish those cases before choosing the work.

Use plain descriptions in your notes: repeated click, no visible response, or unexpected error. A teammate can check those without having to agree about how the visitor felt.

What should this control do?

Start with the promise the control makes. Does it look like a link? Is it meant to change a value? Is it starting an operation that takes time? A click only counts as a useful warning when you understand the response that should follow.

Table: What should this control do?
Observed behaviorPossible problemFirst check
A link-shaped element has no actionMisleading appearanceConfirm whether it should navigate
A button responds only after repeated attemptsEvent handling, overlay, or timingReproduce the first attempt
A request succeeds without visible confirmationMissing feedbackInspect success, loading, and error states
A click is followed by a script errorBroken interaction or unrelated concurrent errorReproduce and inspect the error context
A quantity control receives rapid repeated clicksPossibly expected behaviorConfirm each click changes the quantity correctly

If a console error appears near a click, investigate it. Just don't assume the click caused it because the timestamps are close. Reproduce the sequence and find the relevant code path. Otherwise, you can fix an unrelated error and leave the interaction broken.

If the team can't agree on the intended behavior, settle that first. The visitor shouldn't have to work out a contract the people building the page haven't defined.

Start before the repeated clicks

Consider an illustrative ticket-booking site. A visitor selects a date, clicks Show times three times, and eventually sees available appointments. You could call this a slow button and move on. But you haven't yet found out why the first click didn't appear to be enough.

Start playback before the date selection. Did the first click begin a request? Did the selected date change afterward? Was the button visually enabled before the required field was ready? Did a loading label appear outside the visible area?

Keep watching after the flag. Do the times load? Does the visitor finish booking or try again? If the visit ends, record that. Don't quietly turn “the visit ended” into “the visitor left because of the button.” That's another claim to support.

Compare a successful visit on the same page version and relevant device or browser conditions. A different sequence might expose a race condition. A different layout might expose an overlay. A longer response might expose missing progress feedback. The comparison helps you narrow the fix.

One reproducible recording can be enough to identify a bug. Keep the question of how widespread it is separate; you'll need counts for that.

Did it respond, and did it finish?

The button can react quickly while the availability lookup takes longer. It can also sit unresponsive while the server is perfectly healthy because the page is busy processing something else. Both can look like “nothing happened” to a visitor. They're different problems for the team fixing them.

Interaction to Next Paint concerns the response through the next paint, rather than the completion of the whole network operation. See web.dev's INP explanation. Inspect both the immediate feedback and the eventual result when diagnosing repeated attempts.

For the booking example, check the progress state, the selected date, duplicate-request protection, and the retry path. Does the page make it clear that work is happening? Does it preserve the visitor's choice? Can they recover if the request fails? Test the whole operation.

Disabling the button forever would certainly prevent another click. It would also leave the visitor stuck if the request failed. Be careful about fixing the metric by removing the person's ability to act. They still need a working route forward.

How many visits were affected?

Suppose 12 recorded visits produced 60 flagged clicks on Show times. That's 60 clicks across 12 affected recorded visits. Calling it 60 affected people makes the problem look larger without adding any evidence.

Now suppose 200 recorded visits on the same page version and device group reached an enabled Show times control. Twelve out of 200, or 6%, had the defined signal. That's a useful rate for that captured group. Make sure your tool can actually measure those eligible visits before using them as the denominator.

Frequency isn't the only consideration. A booking action that can't be accessed can deserve priority even with a small count. Rapid clicking on a working gallery control might need no change at all. Ask what the behavior prevents someone from doing.

Keep these quantities separate in a report:

  • Total flagged clicks or clusters, using the tool's unit.
  • Distinct recorded visits with the signal.
  • Eligible recorded visits in the same group.
  • Whether affected visits reached the intended outcome.
  • Whether the behavior was reproduced and under which conditions.

Don't divide replay failures by an unrelated analytics total. If their collection rules include different visits, the rate won't describe either group reliably.

What would a working version look like?

“Reduce rage clicks” leaves a lot for an engineer to guess. Explain what's failing and how you'll know it's fixed. For the booking example, the ticket could look like this:

Control: Show times on booking-v5, mobile
Observation: No progress feedback appears during availability lookup.
Evidence: Recording links, timestamps, and compatible visit counts
Reproduction: Select a date while the lookup response is delayed.
Expected: Show progress immediately and preserve the selection.
Success: Available times appear once for the selected date.
Failure: Explain the problem and offer a working retry.
Checks: Keyboard operation, focus, duplicate requests, and back navigation

Keep private visitor information out of the ticket. Give the team the interaction and environment they need to investigate, without copying the person's identity or form values along with it.

If you're adding confirmation to a working copy or download action, describe it that way. Helping someone know an action worked is worthwhile. You don't need to claim the action was broken to justify making it clearer.

Check that someone can finish

After release, reproduce the original conditions and test recovery. Keep recordings of the new page separate from the old version. Does the action finish? Have duplicate requests stopped? Can a visitor recover from an error? Those answers tell you much more than the warning count alone.

Fewer flags are encouraging, but check what changed alongside them. Different traffic, changed collection, or an unavailable control could also reduce the count. Keep the completion outcome and eligible-visit count beside it.

If the behavior is legitimate, document it and adjust filtering where the tool supports that safely. Be specific. Suppressing every repeated-click signal because one gallery behaves normally could hide a broken booking button somewhere else.

Once you've verified completion and recovery, a harmless flag can remain harmless. You don't have to redesign a working control to make the dashboard quieter.

Sources