Misunderstood Metrics: Time on Page / Average Session Duration

avg-session-duration-vs-avg-time-on-pageHow can the Average Session Duration be less than the Average Time on Page?  

In Google Analytics, seeing the time spent on your website or on individual pages is not as obvious as it first appears. This Misunderstood Metrics article explores the concept of time in Google Analytics…or lost time as the case may be.

Lost Time in Google Analytics

time-on-page-1Google Analytics presents a lot of metrics and most people make assumptions on what they mean based on their names.

Google Analytics Time on Page and Google Analytics Session Duration are typical examples, until you discover one not-so-obvious fact: Google can’t measure the time a user spent looking at the last page of their visit to your site.

This happens because Google uses the time of the next page view to determine the time you spent looking at the current page. On the last page, there is no next page recorded, so the Time on Page is unknown (recorded as 0) and the Session Duration ends when they opened the last page.

Myth: Bounces Didn’t Read Your Page

For sessions where the user only looked at one page (a “bounce”), as in the Visitor 2 example above, the Time on Page and the Session Duration is 0. This isn’t because Google knows they left right away — it is because they have no idea of when the user left so they couldn’t calculate the Time on Page, and they consider the lack of a value means 0.

It could have been 10 seconds or 10 minutes; they don’t know, so they say 0. Did the user read your web page? They don’t know. Maybe. Maybe not. All we know is that they didn’t look at another page on your site within the next 30 minutes (that’s how long a default session lasts).

Can you assume they left without reading the page? No.

There are some techniques (read Measuring Time On Bounce Page) you can use to see if people are actually reading your pages, even if they bounce. For example, a particular landing page with a high bounce rate like this one (87%), I discovered that 75% of users were still reading the page after 60 seconds; 43% were still reading after 5 minutes! These “bounces” were highly engaged with the content on the page! But 87% of them had a session duration of 0.


(Approximately) Average Time on Page

What does this lack of data do to our metrics? With Time on Page, if the page is not the last page in the visit, the time is accurate. The problem is with exit pages: the Time on Page is zero. Google Analytics actually takes this into account when calculating the Avg Time on Page (ref), removing the influence of the lack of exit page data:

Avg Time on Page = Time on Page / ( Pageviews - Exits)

If a page does not have a high exit rate (% Exits), then the Avg Time on Page is a pretty good reflection of the real average. With a higher exit rate, you should have less confidence in the average metric because the average is based on only the portion of total users that went on to visit another page.

Higher % Exit = Lower confidence in Avg. Time on Page

(Questionable) Average Session Duration

The Session Duration metric does not have the same capability to ignore the effect of exit pages. Every session has an exit page, and if there aren’t many pages in the visit, the loss of that last page timing can have a massive impact on the total. In the extreme case of a “bounce” visit that has only one page viewed, the Sessions count is 1 but the Session Duration is 0!

In calculating the Avg Session Duration, Google uses a simple calculation (ref):

Avg Session Duration = Session Duration / Sessions

This simple calculation is heavily influenced by the lack of timing on the exit pages, especially for sites with low Pages / Session values. For this reason, using Avg Session Duration as a key performance indicator is not recommended as fluctuations in the number of pages viewed per session, the number of bounces, and the number of sessions can all influence the metric.

If you have a high Bounce Rate, the Avg Session Duration will drop significantly — even lower than the Avg Time on Page! This confuses a lot of people — the Avg Time on Page calculation removes the effect of Bounces (Exits),  but the Avg Session Duration calculation includes the Session count for those Bounces which reduces the average.

The Effect of Events on Session Duration

If you track events in your webpages, Google’s calculation of Session Duration gets a little different; the end of the session will shift to the last interaction hit. This means if you track things like file downloads with events, and if a visitor downloads a file at the end of the last page, then the session duration is calculated to the time of that event (note: This does not happen if the event is a non-interaction type).

The overall effect is to alter Session Duration for sessions with exits on pages where events occurred — something you can’t always predict. Unless you can trigger the event on all exit pages, this actually makes the measurement less consistent and therefore less useful as a key performance metric.

Bottom Line

The Google Analytics metrics for Avg Time on Page are a good indication of the time users spent looking at a page on your site if the page has a low % Exit.

Do not use the Avg Session Duration as a key performance indicator as it is heavily influenced by Pages / Session, Bounce Rate and Sessions count.

Explore Your Own Data in Microsoft Excel

See how Google Analytics measures the time on your own website pages. Verify that the Time on Page is only recorded for pages that are not the exit page. There is a free add-in for Microsoft Excel that can download your Google Analytics data; no credit card required.

Download the free Analytics Edge Basic Add-in for Microsoft Excel  (learn more)
and the workbook: Google-Analytics-Time-on-Page-Exploration.xlsx

Look for groupings of the values in City+Service Provider+Session Duration+Count of Sessions — rows with the same values in each of these columns are most likely part of a single ‘session’, or a single user’s website visit. Each page visited will be shown in separate rows. The first page is identified as an ‘entrance’ and the last page of the session is an ‘exit’.


Discover Other Misunderstood Metrics:

Comments: (moderated, no spam)

  1. Grant Goodvin

    This is not directly on topic but related. On Google Analytics if I go to Audience, Behavior, Engagement I see categories of length of session i.e. 0-10 sec. 11-30 sec. 31-60 sec. and so on. We have a high percentage of 0-10 seconds engagement. Is this number skewed by the fact the exit page is not measured? How much can we rely on this chart of session duration?

    1. mike_sullivan

      Yes, you are correct. Bounced sessions will all appear as 0-10 sec in the Session Duration (engagement) chart, and that will tend to skew the chart. The lower your pages/session is for your site, the less useful this chart becomes because fewer pages are actually being measured for time on page, and the session duration is the sum of time on non-exit pages.

      There are other problems with these charts as well…see:

  2. Karun

    When bounce rate will counted. And If what is the maximum time to use a site for no bounce rate.

    1. mike_sullivan

      The end of a session will be recorded after 30 minutes of inactivity (default session duration in Google Analytics). If you only visited one page, it will be recorded as a bounce.

  3. Saurabh

    hi sir
    Thanks for Sharing information
    i have one question
    how much session time is best for my website

    1. mike_sullivan

      There is no “best” value. If your website is full of quick little articles with lists that people can quickly scan, shorter times should be expected. If you have long detailed articles (like this one), you should expect the people really reading it should be engaged for a few minutes.

  4. Ramone

    I have a page with the average time on page of 4 min. But this page has a high bounce rate: 90%. Does this mean that the remaining 10% stay on the page for 4 min? I have no interaction events on the page.

    1. mike_sullivan

      Yes, BUT use the Landing Pages report to determine your Bounce Rate NOT the All Pages report. The Dimension “Landing Page” is a session-level dimension, so the “Sessions” metric will be correct — Bounce Rate is a calculation of Bounces/ Sessions.

      1. Adhip

        I need to find out the following:

        Day + Page URL wise
        – Total Page Views
        – Total Unique Page Views
        – Total Time Spent On Page
        – Average Time Spent On Page
        – Entrances on Page
        – Exits
        – Bounces
        – Exit Rate
        – Bounce Rate
        – Revenue

      2. Adhip

        Following is the code I’m using:

        – I don’t know how to add the time spent metrics to this level data.
        – Pageviews and Unique Pageviews are correct. I matched with GA console.
        – Bounces and Exits are also on point.

        Do let me know if you see anything that can be changed/improved here :)

        Date Trans_Date,
        hits.page.pagepath Page,
        hits.page.pagepathLevel1 Page1,
        hits.page.pagepathLevel2 Page2,
        hits.page.pagepathLevel3 Page3,
        hits.page.pagepathLevel4 Page4,
        Count(Case When Hits.IsEntrance = 1 Then hits.page.pagepath END)Entrances,
        Count(Case When Hits.IsExit = 1 Then hits.page.pagepath END)Exits,
        Count(Case When Totals.Bounces = 1 Then hits.page.pagepath END)Bounces,
        COUNT (CONCAT(fullvisitorid, STRING(visitid), hits.page.pagepath))UniquePageViews,
        COUNT (DISTINCT CONCAT(fullvisitorid, STRING(visitid), hits.page.pagepath))UniquePageView,
        TABLE_DATE_RANGE([ga-querylink:108932246.ga_sessions_], TIMESTAMP(‘20170813’), TIMESTAMP(‘20170814’))
        Where hits.type = ‘PAGE’
        Group By

      3. mike_sullivan

        This looks like a BigQuery query of the raw unsampled data – outside my scope of expertise.

  5. McClintock

    So the time on exit page is measured until the last interaction event (if any), but in avg. time on page calculation this exit is still substracted. For example: Two page views of /testpage, one is followed by next page after 1 min, the other one is an exit page but with an interaction event after 5 min. Avg. time on page = (1 min + 5 min) / (2 pageviews – 1 exit) = 6 min (!) Did I get this right?

    1. mike_sullivan

      Yes, you got it right – the numbers you used are correct. Using interaction events tends to mess up the avg time on page metric on exit pages.

  6. Ying

    How high exit rate and bounce rate are considered “high”? Our exit rate is 40%. Is it high? Thanks.

    1. mike_sullivan

      “Good” exit and bounce rates depend on the purpose of the page. A landing page intended to draw people in to your content should have low rates to be considered successful; a detail page that answers questions would still be considered good with much higher rate numbers. If a page has a low exit rate, most people navigated through the page to somewhere else on your web site — if they went back to a navigation page (home page), then it could indicate a problem. Exit rate (and bounce rate) is just a number indicating behavior…good or bad depends on whether it was a desired behavior.

  7. Andrew

    We currently have the same issue with our website. We publish technical articles on the blog, and most readers read only 1 article (for example they read a complete tutorial [link removed] and there is no other article related to this one on the blog, so readers just quit after the first article). And it is really hard to understand if they like the article or don’t.
    However, I found an advice to track the “scroll of the page” as a goal for GA and it supposed to help to resolve this problem. Did you hear about such technique?

  8. Tim Rowley | Web 4 Panama

    This is sooo useful. I thought I spent a lot of time reading about analytics but I have never had this point made to me before. I wonder why everyone else has skipped over this !
    I am looking at a site with over 75% bounce rate. I have just set up segments that discount sessions of less than two seconds on the premise that it takes more than that for most pages to load, so they had no intention of reading the page. The plan was to obtain a truer insight into the behaviours and demographics of the ‘real’ readers of the site. I’m going to have to think again carefully now. Thanks for posting this.

  9. Sage

    If a landing page has an external link, say to a 3rd party calendar site, would the average time on site still read 0 since they aren’t interacting with other pages in the website? I’m using adwords and Facebook and getting 0 average time on site with a 100% bounce rate for all add click-throughs. Any insights?

    1. mike_sullivan

      If and ONLY if you are tracking outbound clicks as INTERACTION events or page views would a click to an external link cause a second ‘hit’ to be recorded in GA (and the time on page to be greater than zero). By default, they are not. To get that, you need code (if WordPress, then a plugin) on your website to make it happen.

      1. Tim Rowley | Web 4 Panama

        Very interesting. Do you advocate implementing this code to make an event of outbound clicks? Is it applied sitewide or does it need a different event for each url?

  10. Ian Faith

    We have a site with ONLY 1 page so if Google were to look at the time on page by your thinking our GA would have everyone with Zero Time on Page! But we get a reading for the time spent on that page plus we get an average session duration.

    1. mike_sullivan

      If you also have Google Analytics interaction events (a special coding technique which is not a default installation) triggering on your 1 page, the time is measured between interactions. Also, it is possible to ‘visit’ the same page (refresh) twice. If you look at the pages/session metric, you may see the number if higher than 1.00.

    2. Aaron Baker

      Users can visit the same page twice which would mean a second pageview in a session, which would give Google something to calculate time with. If I were you I’d implement scroll tracking or use some other kind of interaction hit event tracking to improve the reliability of your time on page metrics.

  11. ROX

    wonderful explanation, thanks. I have a question thou: our page is intended to be only “step 1” in a desired itinerary (but it is not defined/designed as en “event”)… i mean, the page only shows a explanatory text and offers 3 different options to move on (donate, sign the petition, get more info): then, if they do follow any of the paths (which would lead them to fill-up a form, of whatever), the Av.Session duration is a good indicator of ALL the time spent in different pages (seems to be 4 minutes), right? Whereas Time on Site will be relevant to inform the time spent on “that specific” step-1 page (seems to be around 11secons). Right? So both metrics are relevant, accurate and complementary, right?

    1. mike_sullivan

      Yes, both session duration and time on page metrics are meaningful and useful in their own ways. Just remember that session duration has no time for the last page visited — it is an exit page and hence would contribute no time to the session duration.

  12. Logocracy

    Hi this is a really helpful article, but what if you are using a timer plugin, such as Riveted, to negate bounces and close your ToS on most one-page sessions?

    I created a Custom Report that looks at Avg. Time on Page vs Avg. Session Duration. The Avg. Time on Page is 12 minutes but the Avg. Session Duration is 1 minute and a half. This seems weird to me. I thought it would be the other way around.
    Screenshot for reference: https://i.imgur.com/YGov7ct.png

    If I’m using a timer plugin that negates most bounces (I think is fires every 10 seconds), are Page Exists still affecting the results?

    1. mike_sullivan

      First, the Riveted plugin uses non-interaction events by default, so it does not affect bounces. If you set nonInteraction to false, then the time on page and sessions duration metrics will all be affected. I have a similar code approach shown here that makes reporting easier:

      Also, be aware that session duration metric is based on the ‘session’ count, which is affected if you use the page dimension in your report.

      Also…Avg Time on Page measures the average of non-bounce time on page, which session duration averages both bounce and non-bounced sessions.

  13. Vassilis

    If we have a page where there is an interactive event (e.g. 100% scroll depth) and users fire this event but then exit the site from this page, will their time on page be considered in Google’s calculation of avg. time on page or not (as they still the site)? their session duration will not be 0 secs anymore (as it would be without the interactive event) so how is it possible their time on site to be 0 secs?

    1. mike_sullivan

      If it is an interactive event, then yes, it should affect the time on page metric which should affect the session duration metric. If the session has both the pageview and an event, then the time on site (sessions duration) should be greater than 0. Remember that sessions can timeout or split over the midnight hour, so it is also possible that the pageview is in one session, which times out, and the event hit is in a second session…both will have session duration of 0.

  14. 7Driver

    Great explanation – thanks.

    I was looking at our newest pages with Avg. Time on Page over four minutes – yet I was seeing session durations of well under a minute.

    The difference in the way Google calculates these metrics goes a long way to explaining that.



Leave a Reply

Your email address will not be published. Required fields are marked *