Time on Site and Time on Page: Definitions and Benchmarks

Time on site is the length of a single visit to your website. Time on page is the length of one pageview inside that visit. Both are calculated from timestamp gaps, which is why the last page of every session records as zero seconds.

KISSmetrics Editorial

|13 min read

Time on site is how long a visitor spends on your website during one visit, measured as the gap between the first and last recorded interaction in that session. Time on page is the same calculation applied to a single page inside the visit. Both are derived from timestamp differences, which is why the last page of every session records as zero seconds: there is no later timestamp to subtract from.

That one quirk explains most of the confusion around the metric. A visitor who lands on an article, reads it for six minutes, and closes the tab is counted as a zero-second session by most tools. Averages are dragged down by exactly the visitors who were most engaged.

The usual response is to fix the measurement: better instrumentation, foreground-only timers, a heartbeat event every fifteen seconds. It is worth asking a harder question first. Suppose the clock were perfect. Would the number then be worth putting on a dashboard? Three questions settle it. What is the figure mechanically composed of? What would a flawless version of it actually tell you? And what should occupy the slot it currently holds?

Stay ahead in marketing and product analytics

One short read a week on what actually moves revenue, in a free email. Read by 10,000+ operators and founders.

No spam. Unsubscribe in one click.

I.What the number is actually made of

Session duration is a difference between two timestamps, which determines both what it systematically misses and why no two tools produce the same figure.

A.A subtraction, and the visits it cannot see

Time on site, also called session duration, is the difference between the timestamp of the first interaction in a session and the timestamp of the last one. Most tools can only measure time between interactions, so a visitor who lands on a page, reads for five minutes, and leaves without clicking anything records a zero-second visit. The engagement was real. The measurement system had no second timestamp to subtract from.

The bias therefore has a direction. It is not noise that averages out with more traffic: the metric systematically undercounts the visitors who found exactly what they needed on the first page, and on a site where most sessions are one page the aggregate is largely composed of zeros.

Time on page is the same subtraction at a smaller scale, from one page loading to the next. Sum the time-on-page values in a session and you get time on site, minus the final page, which is always zero. They diagnose different things: time on site describes the shape of a visit, time on page tells you whether a specific piece of content is being read, which makes it the more useful of the two. Neither distinguishes a reader from an abandoned background tab without scroll depth or in-page events.

What a three-page session actually records

Activity report view
Page 1, blog post
90s
Page 2, pricing
45s
Page 3, docs (exit)
0sread for about six minutes
Illustrative, not measured. The session is filed as 135 seconds while the visitor spent over eight minutes, and the page they cared about most contributes nothing.

B.Which is why no two tools agree, and why benchmarks cannot survive it

Because the number is an artifact of when events happen to fire, each platform’s event model produces a different figure from identical behaviour. Traditional session-based tools take the difference between the first and last server request, so the time spent on the last page of any session is never counted. GA4 dropped session duration as a primary metric in favour of average engagement time, which counts only the time a page is in the foreground and active. That is a real improvement on Universal Analytics, since switching tabs no longer inflates the figure, and it still struggles with single-page visits and depends on browser visibility APIs that behave inconsistently across devices. Event-based platforms track interactions instead of pageview timestamps and often do not report a duration at all.

The disagreement is structural rather than a defect any vendor can patch, which takes the benchmark out of play. Two sites reporting three minutes may differ by a factor of two in real reading time depending on their page-per-session ratio and their tooling.

Average time on site by industry

Metrics view
IndustryTypical rangeWhat drives it
Financial services4 to 6 minComplex products, heavy comparison
B2B SaaS3 to 5 minEvaluation, docs, feature comparison
Education3 to 5 minCourse exploration and enrollment
Healthcare3 to 4 minCareful reading before a health decision
E-commerce2 to 3 minBrowsing, though efficient sites run shorter
Media and publishing1.5 to 2.5 minSingle-article visits pull the average down
Published medians from aggregated industry data, not our measurements, and every one of them is inflated or deflated by the zero-second exit page problem above. Use them to check you are in a plausible band, never as a target.

II.Why a perfect measurement would still not mean what people use it for

Fix the clock and two problems remain that instrumentation cannot touch: the metric has no sign, and its average describes almost no real site.

A.The number has no direction

Eight minutes deep in a product comparison and eight minutes hunting for the pricing page record identically. One is interest, the other is a usability failure, and a perfectly accurate clock reports the same figure for both. That is not a measurement gap, it is the metric having no sign: you cannot say whether up is good without a second number telling you what happened.

Outcome settles it in the other direction too. A visitor who spends 30 seconds, finds the demo button, and converts is worth more than one who browses for ten minutes and leaves. Any objective set on duration alone can be met by making the site harder to use, which is the reliable test for whether a metric should be a target. Time on site is a side effect of good engagement, not a cause of it, and the two can be pulled apart by exactly the changes you least want to make. That is what puts it in the category of vanity metrics when it is used alone.

B.And the average describes almost nobody

The second problem is distributional. A three-minute average could mean most visitors spend about three minutes. It could equally mean half bounce in five seconds and half spend six minutes. Those two sites need completely different work and report the same figure, and web traffic is overwhelmingly the second shape, because intent is bimodal: people who wanted this page and people who did not.

The single-page zeros make it worse, since a large share of the entries in the average are not short visits but unmeasured ones. So the mean is computed over a distribution with a spike at zero, a long tail of parked tabs, and the actual readers scattered in between.

What survives that is comparison rather than level. Organic visitors at four minutes against paid visitors at 45 seconds says something real about landing page relevance by channel, because both figures carry the same distortion and it cancels. The same holds over time.

Average session duration on product pages, by week

Activity report view
174seconds, latest week
W1W5W10
Illustrative, not measured. A 30% decline over two months with traffic flat is worth a look at content, audience mix, or a competitor change. The direction is the signal. The absolute number still means very little, and the comparison only holds while the page set and the tracking stay fixed.

III.What survives, and what replaces it

A narrow use for the metric holds up, and the slot it currently occupies on most dashboards should go to a measure that has a direction.

A.The narrow case that holds

On content-heavy pages, the metric correlates more reliably with consumption than it does anywhere else, because reading is the intended behaviour and the time genuinely is the work. A 2,000-word guide averaging fifteen seconds is not being read; the same guide averaging four minutes mostly is. Note that this is time on page, not time on site: the page-level version is the one with a defensible interpretation, and the site-level version aggregates it with navigation time into something with no meaning at all.

Beyond that, the surviving uses are the two comparisons from the previous part: between segments at one moment, and for one fixed page set over time. Both work because the distortion is held constant. Neither supports a target, and both stop working the moment the page set, the tracking, or the traffic mix changes.

B.What goes in the slot instead

Every replacement has the same property, which is that it has a sign. GA4’s engagement rate counts a session as engaged if it lasts over ten seconds, fires a conversion, or includes at least two pageviews, which is imperfect and still an improvement, because it strips out the zero-engagement visits that wreck averages. Depth of visit measures how far people get rather than how long they take: scroll depth on key pages, meaningful interactions per session, progression through a multi-step process. Task completion rate asks whether visitors did what they came for. And conversion rate split by source, device, and landing page replaces “how long did they stay” with a question whose answer names a fix.

All four are behavioural, which is why event-based tools report them and duration-based ones struggle. With autocapture, clicks, scrolls, and form inputs are recorded without an engineer defining each one first, so a page with a healthy time on site but no scroll past the fold and no downstream events shows up immediately as a false positive. The Activity report shows the sequence of what a person did in a visit rather than the clock.

The deeper replacement is to stop measuring visits at all. Attached to an identified person, engagement stops being a duration and becomes a pattern: three visits this week across the comparison and pricing pages, then a download. That is not an engagement metric, it is a buying signal, and it is only available because the same person was held across sessions rather than counted as three anonymous ones. It also makes the question answerable in reverse, since you can look at which behavioural patterns ended in purchase and which ended in churn. Our guide to person-level analytics covers what that costs to set up.

Verdict

Time on site is not a bad metric that better instrumentation would rescue. It is a diagnostic input misfiled as a performance indicator, and the misfiling is the whole problem. Keep it, at page level, for content pages, read as a comparison between segments or as a trend on a fixed page set. Never report it at site level, never against an industry benchmark, and never as a target, because a metric with no sign can always be improved by making the experience worse.

The practical rule is a single test. If a duration tile on your dashboard has no conversion or completion figure sitting next to it, delete the tile. Nobody has ever taken a correct action from session duration alone, because the number cannot distinguish the two situations that produce it. Replace it with the share of visitors who did the thing the page exists to make them do, split by where they came from. That number has a direction, survives a tooling change, and points at a fix.

Continue Reading

time on sitetime on pagesession durationengagement metricsdwell timeuser engagement
KISSmetrics

Build your business intelligence layer for free.

Free to start, no card. Tracking, attribution and your first dashboard in under a minute.