Why Your Heatmap Is Wrong on Responsive Sites (and How Device Segmentation Fixes It)
A heatmap that mixes desktop and mobile visitors puts clicks in places nobody clicked. Learn why responsive layouts break naive heatmaps, the subtle bucketing bug we fixed in our own, and how to read heatmaps you can trust.
Short answer: a heatmap draws many visitors' clicks on one picture of the page. On a responsive site the same page has several different layouts, so a click recorded on a phone lands on the wrong element when drawn over the desktop layout. The fix is to build each heatmap from a single layout: desktop, tablet, or mobile, never mixed.
Table of Contents
- The Problem in One Picture
- Three Ways Mixed Heatmaps Mislead
- Why Splitting by Device Type Is Not Enough
- How We Place Clicks
- How to Check Your Own Heatmaps
- Key Takeaways
The Problem in One Picture
Take a pricing page. On desktop, three plans sit side by side and the page is about 2,000 pixels tall. On a phone, the same plans stack vertically and the page is closer to 6,000 pixels tall.
A tap on the third plan's button happens two thirds of the way across on desktop, and roughly two thirds of the way down on mobile. If the tool stores "x, y" and draws everything over the desktop screenshot, the mobile taps appear in empty space, on the footer, or on a different plan altogether.
Three Ways Mixed Heatmaps Mislead
1. Phantom hot spots
A cluster appears on an element nobody interacted with. Teams have redesigned sections because of clicks that were really aimed at something else on another layout.
2. Stretched pages
Mobile pages are much taller. If mobile positions are mapped onto a desktop background, the overlay is stretched and shows activity in areas that do not exist at that width.
3. Hidden mobile problems
When desktop traffic dominates the picture, a mobile-only failure, such as a button covered by a sticky bar, disappears into the average. This is one reason mobile conversion lags desktop without anyone noticing why.
Why Splitting by Device Type Is Not Enough
The obvious fix is to split by device. We did that, and then found a subtler bug in our own product.
A device type is a statement about hardware. A layout is decided by the viewport width, because CSS media queries respond to the size of the window, not the kind of machine. Those two things usually agree. They disagree when someone on a laptop narrows their browser window to phone width, or uses split-screen.
That visitor is on a desktop device and sees the mobile layout. Classifying by device put their taps into the desktop heatmap, drawn over a layout they never saw. In our own testing, the desktop map showed more interactions than had really happened on the desktop layout, and the mobile map showed none.
The fix was to bucket each session by the layout it rendered, using the viewport width, and to keep the hardware-based device type for audience reports, where it is the right answer. Two questions, two classifications:
| Question | Correct basis |
|---|---|
| What devices does my audience use? | Hardware and user agent |
| Which layout did this visitor see? | Viewport width |
How We Place Clicks
Getting the bucket right is half the job. Positions inside a bucket also need care.
- One bucket per view. A heatmap renders in exactly one of desktop, tablet, or mobile. Choosing "all devices" resolves to the page's dominant layout rather than blending them.
- Horizontal position is relative to the visitor's own page width. Most sites centre their content in a fixed maximum width. A button at 60% across on a 1280-pixel screen is still at 60% across on a 2560-pixel one, so normalising against each visitor's own width keeps clicks on the right element across desktop sizes.
- Vertical position is absolute within the layout. Pages in the same layout render the same content top to bottom and differ mainly in how much has lazy-loaded.
- Filters recompute the map. Filtering by device, browser, country, or UTM source runs a new scan and clustering for that segment rather than recolouring one dataset (heatmap segments).
Device-segmented heatmaps, each rendered at that layout's real page width, are available on Pro and above. Compare mode places two segments side by side against the same snapshot.
How to Check Your Own Heatmaps
- Look for clicks in empty space. Hot spots on blank areas or page margins are a sign of mixed layouts.
- Compare page height. If the heatmap image is far taller or shorter than your page at that width, positions are being mapped across layouts.
- Filter to one device and see what changes. If hot spots move rather than fade, they were misplaced.
- Test it yourself. Click a specific element on your phone, wait, and see where it appears.
- Check dynamic content. Carousels, cookie banners, and expanding menus shift everything beneath them.
Always state the layout
When you share a heatmap, write "mobile, last 14 days" on it. A heatmap without a device label invites someone to read it as the layout they happen to be looking at.
Key Takeaways
- Mixed-device heatmaps place clicks on the wrong elements.
- Bucket by rendered layout, which depends on viewport width, not hardware.
- Normalise horizontal position against each visitor's own page width.
- Label every heatmap with its layout and date range.
Conclusion
A heatmap is persuasive because it is a picture. That is also what makes a wrong one dangerous. Make sure the picture is drawn from one layout before you act on it.
Frequently Asked Questions
Related articles
Stay in the loop
Get the latest insights on product analytics and user behavior delivered to your inbox.



