◔ Analytics & measurement

Measuring content reading: scroll, visibility and attention

How to tell whether articles are really read: scroll depth, section visibility, active time, follow-up clicks, and the limits of each measure.

For a site that publishes articles, guides or documentation, the central question is not how many people land on a page but how many read it. Visits say the title worked; they don't say whether the content kept its promise. Measuring reading takes several signals, none perfect, which together give a reasonable picture.

Scroll depth

This is the most common measure: the percentage of the page the user reached. Thresholds are usually recorded, for example 25, 50, 75 and 90 percent, each with its own event.

It has obvious limits, though:

  • the percentage depends on page height, which differs between desktop and mobile;
  • comments, related articles and footers lengthen the page, and 90 percent may be well past the end of the text;
  • scrolling quickly to the bottom does not mean reading.

A simple improvement is to measure scrolling relative to the article content, not the whole page: the 100 percent event fires when the last paragraph of the text becomes visible, not the bottom of the site.

Section visibility

A more precise alternative is to observe which sections become visible. The browser offers an interface, the Intersection Observer, that reports when an element enters the visible area. Applied to section headings, it tells you how many people reach «How to configure it» or «Common mistakes».

const observer = new IntersectionObserver((entries) => {
  entries.forEach((entry) => {
    if (entry.isIntersecting) {
      window.dataLayer.push({
        event: "section_view",
        section_id: entry.target.id
      });
      observer.unobserve(entry.target);
    }
  });
}, { threshold: 0.5 });

document.querySelectorAll("article h2[id]")
  .forEach((heading) => observer.observe(heading));

The result is a drop-off curve by section, far easier to read than an abstract percentage.

Active time

Time on page calculated the classic way is unreliable, but you can measure active time: the time during which the tab is in the foreground and the user has interacted recently, by scrolling, moving or pressing keys. If the tab goes to the background, the count stops.

Interpreting it requires a reference. An eight-hundred-word article takes a few minutes of attentive reading; if median active time is twenty seconds, most people are not reading it, whatever the scroll depth.

Combining signals

No single measure is enough. A composite definition, which you might call «full read», works better:

Signal Example threshold
Last section visible yes
Active time at least a third of estimated reading time
Tab in foreground during the counted time

The exact threshold should be decided for your type of content and written into the measurement plan. What matters is applying it uniformly so articles can be compared.

What happens next

The strongest signal that content worked is often the next action: a click on a related article, a newsletter sign-up, a visit to the contact page, a copy of the code block. For technical content, the code copy event is a useful indicator of practical value.

Interpretation mistakes

  • Comparing articles of very different length with the same scroll threshold.
  • Reading a drop in reading as a flaw when the answer comes early: in a guide that answers the question straight away, it is normal for many people to stop there.
  • Ignoring entries from site search or deep links, which land people directly in the middle of the page.

Using the data

With the per-section curve you can see where the audience loses interest. If half the readers leave before the most important section, perhaps it should move higher or be announced in the introduction. If everyone skims past a section in a few seconds, perhaps it is unnecessary. In my work, reordering sections based on this data has often been more effective than rewriting the whole text.

It is also worth comparing the same curve across traffic sources. People arriving from a newsletter already know the site and tend to read further; people arriving from a search want a precise answer and stop once they find it. Mixing the two audiences into a single number hides both stories.

In short

  • Visits measure the title; reading needs other signals.
  • Measure scrolling relative to the article text, not the whole page.
  • Section visibility produces an easy-to-read drop-off curve.
  • Active time, compared with estimated reading time, filters out distracted visits.
  • Combine signals into a written definition and watch the next action.
MM
Marco Marzaduri

Marco Marzaduri works in cybersecurity, digital forensics and web development. A computer science graduate, he combines rigorous technical analysis with attention to the people who use technology.

Read also