What bounce rate measures - and what it does not
The older definition is the simpler one: a bounce is a single-page session on your site (Google). Technically that means exactly one request reached the measurement and no second one followed. From this comes the quirk on which the metric fails: such single-page sessions have a session duration of zero seconds, because after the first hit there is no subsequent hit from which the length could be calculated (Google). The number therefore does not measure disinterest, it measures the absence of a second data point. On a contact page, a directions page or a long technical article, that is the normal case - and not a bad sign.
The newer counting method inverts the metric. It defines the engaged session first and derives the bounce from it: the bounce rate is the percentage of sessions that were not engaged (Google). A session counts as engaged if it lasts longer than ten seconds, contains a key event, or includes at least two page or screen views; if none of that applies, it does not count as an engaged session (Google). That is progress, because time and events now feed in. But it remains a threshold with three conditions that someone chose: ten seconds are not an insight about reading, they are a setting. Anyone placing two reports from different years side by side is therefore often comparing two different quantities under the same name.
- How far the page was read: whether someone stops after two lines or finishes the text produces the same value under both definitions.
- Where the drop-off sits: the metric applies to the whole page. Which section costs readers is not in it.
- Whether the tab was visible at all: a page in the background produces time, but no attention.
- Whether the page did its job: a phone number that is read off the screen and dialled leaves no second pageview behind.
The classic method calls every single-page session a bounce (Google). The newer one puts engagement first and describes the bounce rate as the percentage of sessions that were not engaged (Google). Both numbers carry the same name and mean different things. Before any comparison over time, the report should therefore state which of the two definitions produced the series - otherwise a change of definition gets read as a trend.
How far people actually read
Eyetracking supplies what server data cannot: where the eyes actually go. For the 2018 analysis, the x and y coordinates of over 130,000 eye fixations on a 1920 x 1080 screen were evaluated (Nielsen Norman Group 2018); they come from 120 participants in a study covering sites from a wide range of sectors and industries (Nielsen Norman Group 2018). The result: around 57 percent of page-viewing time fell above the fold, and 74 percent within the first two screenfuls, up to 2160 pixels (Nielsen Norman Group 2018). On general websites, more than 42 percent of viewing time fell within the top 20 percent of the page and more than 65 percent within the top 40 percent (Nielsen Norman Group 2018). Attention is therefore not spread evenly across the page length; it declines with depth.
The comparison with the same group's earlier study sharpens the picture. In 2010, 80.3 percent of viewing time fell above the fold and 19.7 percent below it (Nielsen Norman Group 2010); the analysis drew on a total of 57,453 fixations (Nielsen Norman Group 2010) from 21 users across 541 different web pages (Nielsen Norman Group 2010). Between the two measurements lie larger screens and a design shift towards long pages. Attention has therefore moved downwards, but it has not become even: in the more recent study as well, the upper part of the page collects the largest share. Both figures come from older studies and serve as an order of magnitude, not as a target value for any particular page.
| Metric | Answers | Blind spot | Collectable without device storage |
|---|---|---|---|
| Bounce rate (classic) | Was there a second page? | Reading, duration, drop-off point | yes |
| Bounce rate (engaged session) | Ten seconds, event or second page? | Where in the text the drop-off sits | yes |
| Session duration | Gap between first and last hit | Last page and background tabs | yes |
| Scroll depth | How far the page was moved | Whether the area was actually viewed | yes |
| Visible time per section | How long a section stood on screen | Whether it was read or only seen | yes |
| Active time | Time with a visible tab | Quiet reading phases without input | yes |
| Events (click, copy, playback) | Whether something was done | Everything that happens without interaction | yes |
| End-of-text marker | Whether the end of the text was on screen | Whether the path there was read | yes |
How attention spreads across the page length was shown by a 2013 analysis of a random sample of 25 million user sessions (Chartbeat 2013). The most viewed area sat just above the fold at about 550 pixels, with just over 80 percent viewership (Chartbeat 2013). On content pages around 50 percent of readers reached the 1500 pixel mark, while on home pages and section fronts 50 percent made it to pixel 1000 (Chartbeat 2013). A broader analysis of two billion visits over the course of a month concluded that most people who click do not read (Chartbeat 2014): 55 percent spent fewer than 15 seconds actively on a page (Chartbeat 2014). Both studies are old and come mainly from the news sector; they say something about the shape of the distribution, nothing about your page.
An average scroll depth can mean that the readership as a whole gets to about the halfway point - or that one part drops off immediately while the other finishes the text. Each calls for a different fix, and each produces the same average. So plot the shares per marker and read the edge where the curve falls. That is exactly how cookieless analytics from XICTRAQ presents the distribution.
Three signals that add up to attention
Attention is not a single number but the intersection of three observations. First, scroll depth: how far was the page moved? Second, visible time: how long did a given section stand on screen while the tab was visible? Third, interaction: was there a click, a copy, a form field touched, a playback started? Each of these three signals can be fooled on its own. Scroll depth alone counts the person who swipes straight through. Visible time alone counts the tab left open next to a phone call. Interaction alone misses everyone who reads quietly. Together they produce a picture that none of the three delivers by itself.
Not an average, but the share of sessions that reach a marker. The edge where that share falls points to the section that costs readers.
How long did a section stand on screen? The threshold from ad measurement works as a lower bound: at least 50 percent of the area for at least one continuous second (Media Rating Council 2014).
The clock only runs while the tab is visible. The Page Visibility API reports the switch as soon as the user minimizes the window, switches to another tab, or the document is entirely obscured by another window (MDN).
A click on a phone number, a copied address, a started playback: events prove use in exactly those places where no second pageview arises - which is to say, in the cases counted as a bounce.
Ad measurement solved the visibility problem earlier than content measurement did. The Media Rating Council guideline counts an ad as viewable when at least 50 percent of it was viewed for one continuous second or more (Media Rating Council 2014). That threshold transfers to text sections. It is deliberately low: one second does not prove reading. But it separates swiping past from stopping - and a lower bound is not meant to do more than that. Set it higher and you measure fewer cases, but the remaining ones carry more weight.
Choosing thresholds that mean something
The usual markers at 25, 50, 75 and 100 percent are a convention, not an insight. They refer to the pixel height of the document, and that depends on images, embeds, footer and viewport width. On a phone the same passage of text sits at a different percentage than on a wide screen. Comparing two pages therefore means comparing two different yardsticks. Then there is the footer: if navigation, legal texts and link lists make up a substantial part of the page height, the 100 percent marker says little about the text.
- Sections instead of percentages: anchor the markers to named sections - introduction, first argument, pricing block, form. Such markers stay comparable across devices and page lengths.
- One marker at the end of the text: an invisible anchor behind the last paragraph answers the question of completion more precisely than any percentage.
- Visible time rather than mere arrival: only count a marker once it passes the lower bound from ad measurement - 50 percent of the area for one continuous second (Media Rating Council 2014).
- Reading time as a reference: relate the measured visible time to the word count of the section. A section with high reach and consistently short visible time is a springboard, not a text.
- Evaluate by device class: the same marker means a different scrolling distance on a phone than on a desktop machine.
A page with a long footer reaches the 75 percent marker before the text ends; a page without a footer only afterwards. So measure against the body of the text, not against the document height. In practice that means putting the observer on the element holding the content, not on the window. How to build a per-page evaluation from this is shown in the article on heatmaps without a consent banner.
Measuring without touching the device
Scroll depth, visible time and events need no storage on the end user's device. The legal assessment hangs on exactly that: under Section 25 (1) of the German TDDDG, storing information in the end user's terminal equipment and accessing information already stored there are only permitted if the end user has consented on the basis of clear and comprehensive information (TDDDG). A measurement that neither writes nor reads typically does not trigger this consent requirement. The General Data Protection Regulation is unaffected: processing the transmitted values still needs a legal basis, a defined purpose and an entry in the privacy notice. How this works day to day is set out in detail in the article on tracking without a consent banner.
Technically the route has been stable for years. The Intersection Observer API provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport (MDN); it has been available across browsers since March 2019 (MDN). That removes the old scroll handler which burns processing time on every scroll event. The Page Visibility API supplies the second half: as soon as the user minimizes the window, switches to another tab, or the document is entirely obscured by another window, it sends an event to registered listeners (MDN). It too is long established and has been available across browsers since July 2015 (MDN).
// Visible time per section, without touching storage on the device
const markers = new Map(); // element -> { since, total, onScreen }
const THRESHOLD = 0.5; // share of the area on screen
let pageVisible = document.visibilityState === 'visible';
function start(el) {
const m = markers.get(el);
if (m && m.since === null && m.onScreen && pageVisible) m.since = performance.now();
}
function stop(el) {
const m = markers.get(el);
if (m && m.since !== null) {
m.total += performance.now() - m.since;
m.since = null;
}
}
const observer = new IntersectionObserver((entries) => {
for (const e of entries) {
const m = markers.get(e.target);
if (!m) continue;
m.onScreen = e.isIntersecting && e.intersectionRatio >= THRESHOLD;
m.onScreen ? start(e.target) : stop(e.target);
}
}, { threshold: [0, THRESHOLD, 1] });
for (const el of document.querySelectorAll('[data-section]')) {
markers.set(el, { since: null, total: 0, onScreen: false });
observer.observe(el);
}
// The clock only runs while the page is visible and the section is on screen
document.addEventListener('visibilitychange', () => {
pageVisible = document.visibilityState === 'visible';
for (const el of markers.keys()) pageVisible ? start(el) : stop(el);
if (!pageVisible) report();
});
addEventListener('pagehide', report); // second route, no unload
function report() {
const values = [];
for (const [el, m] of markers) {
stop(el);
if (m.total >= 1000) { // lower bound: one second
values.push({ section: el.dataset.section, ms: Math.round(m.total) });
m.total = 0; // do not send reported time twice
}
}
if (values.length) xictraq.event('attention', { sections: values });
}Two details decide the data quality. First, the clock only runs while the page is visible - without that coupling, a forgotten tab collects hours of supposed attention overnight. Second, a lower bound applies: sections under one second are discarded. That drops the sections which merely slid past during a swipe, and it keeps the result on the same threshold that ad measurement uses (Media Rating Council 2014). Applying the method across several pages adds a comparison on top: the same marker, different texts, one yardstick.
The report has to arrive
The most careful measurement is worthless if the report does not leave the page. The obvious route is also the worst one: the unload event is extremely unreliable (Chrome for Developers), and it is being switched off in stages. The published rollout plan puts milestone 154 on 22 September 2026 at 100 percent of Chrome page loads (Chrome for Developers). Instead of unload it is recommended to use visibilitychange (Chrome for Developers). In practice that means sending the report as soon as the page becomes hidden, plus on pagehide, and handling delivery via sendBeacon so it survives the switch. If this rebuild is still ahead of you, the steps are in the article on the end of unload in Chrome.
A bounce rate tells you whether a second pageview arrived. A scroll depth with visible time tells you at which line the readers turned away. Only the second answer can be translated into a change.
— XICTRAQ
Turning attention into decisions
The analysis pays off only once a change follows from it. Three patterns show up regularly. If the share of readers drops noticeably before the first subheading, experience suggests the introduction is too long or the headline's promise is not being kept. If the share stays high right up to the call to action and collapses there, the call sits in the wrong place or asks for too much at once. If many reach the end of the text while the visible time per section stays consistently low, the page is being skimmed rather than read - and then shorter paragraphs and more subheadings help more than additional arguments.
| Observation | Likely cause | Next step | Cross-check |
|---|---|---|---|
| Drop-off before the first subheading | The introduction does not carry the headline's promise | Shorten the opening, put the benefit in the first two sentences | Share at the first marker, before and after |
| High share up to the call to action, then drop-off | Call too early, too large or without context | Move the call to the edge, name the effort required | Event rate at the call per session |
| End of text reached, short visible time per section | Skimming instead of reading | Shorten paragraphs, add subheadings, pull in lists | Visible time per section |
| Deep sections with high visible time | The load-bearing part sits too far down | Move the section upwards | Share at the upper marker |
| High scroll depth without events | There is nothing to do | Offer an action within the viewport | Events per marker reached |
| Wide spread between phone and desktop | The layout shifts the markers | Evaluate separately, bind markers to sections | Distribution per device class |
Each of these changes is a hypothesis, not a solution. It becomes an insight only when the next measurement supports it - ideally as a comparison of two versions of the same page. The procedure for that is in the article on A/B testing without a consent banner. The order matters: set the marker first, then change, then measure. Move the marker afterwards because the result is not to your liking, and what you end up measuring is your own expectation.
Keeping attention in view over time
A one-off analysis shows a state, not a development. The metric becomes interesting once it runs over weeks: a section that used to hold readers and now loses them is a signal - about a changed opening, a new image, slower loading or a different origin of traffic. Attention measurement therefore belongs next to the other series, not in a separate report. Where readers come from is shown by the analysis of page transitions; whether they are the same people can be approximated without cookies.
Two side conditions decide how much the series can carry. First, data quality: automated requests produce scroll patterns that are not attention - how to filter them out is covered in the article on bot traffic in analytics. Second, the ability to respond: anyone storing events per session has to be able to disclose them in response to an Article 15 GDPR request; what to watch for is set out in the article on the right of access. And anyone expecting load peaks in the fourth quarter is better off checking the measurement chain beforehand, so that collection does not fail in the most important week of all - the article on preparing for the peak season pulls the points together.
The figures in this article come from the eyetracking studies by the Nielsen Norman Group from 2018 and from 2010, from a 2013 analysis of 25 million user sessions and the related analysis of two billion visits. The visibility threshold is in the Media Rating Council guidelines, the bounce rate definitions in the Google's help pages, the unload rollout plan at Chrome for Developers and the wording of Section 25 in the TDDDG.