Average Session Duration and Average Time on Page are two metrics within Google Analytics that are often used for understanding a user's level of engagement. An area that often confuses Google Analytics users is the difference in the ways these two metrics are calculated. This is especially true for websites with higher bounce rates, such as publisher websites. For websites with higher bounce, you might notice that your average time on page for your pageviews is actually higher than your site's average session duration. If you notice this, you'll likely wonder how it's possible for users to spend more time on their pageviews of your site than they spend during their entire session. This is a result of the fact that these two metrics, although similar, are actually calculated differently.
The Duration Measurements:
It's important to understand how these two metrics are calculated for each user session or pageview, and then to understand how the averages for each are calculated.
First, a user's session duration is calculated as the amount of time between the first interactive hit of their session and the last interactive hit of their session. The first interactive hit is usually going to be the pageview hit for the landing page and the last interactive hit can be either be a pageview or an on-page event where the event is not set to "non-interactive."
Second, a user's time on a particular page is calculated as the amount of time between the pageload for the current pageview and
either the pageload for the next pageview OR the last interactive hit on the current page, excluding exits. For sites that do not have a lot of event tracking, this means that when a pageview is also the exit page for a session (the last page of the session), the time on page will be counted as 0 seconds. Throughout this post, we'll go over example sessions to our sites and the different activities that the user can perform as well as how each of those activities will affect the session duration and time on page metrics within Google Analytics. After going through the example sessions we'll look at how these metrics are calculated together to create the averages we see in Google Analytics.
Session 1:
In our first example, we see our typical "bounce" session where a user visits a single page without sending any other hits into Google Analytics (pageviews or events) despite staying on the website for 60 seconds total after /home pageload.
Session Duration: Since Google Analytics uses the time between the first interactive hit and the last interactive hit of a session to determine session duration, Google Analytics will calculate this session as 0 seconds.
Time on Page: For time on page, Google Analytics will only calculate the duration of time for a pageview upon pageload of the next pageview, therefore time on page for /home in this session would also be zero seconds since /home is also the exit page for the session.
Session 2:
For our second session, we still have a bounced session, although the user had two hits sent to Google Analytics. They had their pageview and they had a non-interactive event (example: a scroll tracking event). This user stayed on the site for a total of 120 seconds (60 seconds between /home pageload and their scroll tracking event, and 60 seconds after their scroll tracking event before leaving the site).
Session Duration: Like our last session example, Google Analytics must have a first and last interactive hit to determine session duration. Because our only other hit was a non-interactive event, Google Analytics will still see this session as a single interactive hit session and the session duration will be calculated as 0 seconds.
Time on Page: Just like our last example session, since there is no other pageview, the calculation for time on page for /home will still be 0 seconds since /home is the exit page for the session.
Session 3:
In our third example session, we now have two hits—both of which are interactive hits. This session would no longer be considered a bounce since we have a pageview and an interactive event (such as a video play). This user stayed on the site for a total of 105 seconds (60 seconds between /home pageload and their interactive video event, and 45 seconds after their video event before leaving the site).
Session Duration: Since this is no longer a bounced session, we now have the ability to calculate the duration between the first interactive hit of the session (pageload of /home) and the last interactive hit of the session (the video play event). This calculates our session duration in Google Analytics as 60 seconds.
Time on Page: Since there is an interactive event on /home, the time on /home will be the time between the initial pageload and the interactive event, therefore 60 seconds.
Session 4:
In our fourth example session, we again have two hits—both of which are interactive hits and both are pageviews. Like our last example, this session is not a bounced session. The user stayed on the site for a total of 90 seconds (60 seconds between /home pageload and /blog pageload, and 30 seconds after visiting /blog before leaving the site).
Session Duration: Like our last session, this session duration is the calculation between our first interactive hit of the session (/home pageload) and the last interactive hit of the session (/blog pageload). This brings the session duration for this session to 60 seconds.
Time on Page: In this situation, we have two pageviews for which to calculate time on page. For /home, we have a second pageload to calculate the duration between pageviews since /home is not the exit page for the session. Therefore the time on page for /home is 60 seconds. However, /blog is the exit page for our session, so the user's time on page for /blog is 0 seconds.
Session 5:
For our fifth example session, we have three hits sent to Google Analytics—all of which are interactive. The first two hits are pageviews and the third is an interactive event (such as a video play event). The user stayed on the site for a total of 105 seconds (60 seconds between /home pageload and /blog pageload, 30 seconds between /blog pageload and their video play event, and 15 seconds after their video play event before leaving the site).
Session Duration: Using the duration between our first interactive hit of the session (/home pageload) and our last interactive hit of the session (the video play event), we see what our session duration in Google Analytics would be 90 seconds (60 seconds + 30 seconds).
Time on Page: For /home, we have a second pageload to calculate the duration between pageviews since /home is not the exit page for the session. Therefore the time on page for /home is 60 seconds. We also have an interactive event that happens on /blog, so the time on page is 30 seconds as that is the time between the initial pageload of /blog and the interactive event.
Session 6:
Finally, in our sixth session, we have three hits sent to Google Analytics—all of which are both interactive and pageviews. The user stayed on the site for a total of 120 seconds (60 seconds between /home pageload and /blog pageload, 30 seconds between /blog pageload and navigation back to /home, and finally 30 more seconds after /home pageload before leaving the site).
Session Duration: The session duration from the first interactive hit of the session (/home pageload) and the last interactive hit of the session (the second /home pageload) is 90 seconds (60 seconds +30 seconds).
Time on Page: This time we have three pageviews for our session. Our first time on page for /home is 60 seconds before the next pageload of /blog. Then, since /blog is not the exit page for the session, we have a time on page for /blog of 30 seconds before /home was loaded again. Finally, the second pageview to /home is our exit page, therefore the time on page for /home's second pageview is 0 seconds.
The Average Calculations:
Now that we understand how session duration and time on page metrics are calculated for each of our sessions, we can bring our attention to the average values for our sessions, which is really why we're here in the first place!
Average Session Duration
First, let's look at Average Session Duration. Average session duration is the total duration of all sessions divided by the total number of sessions.
This means that all of our 0-second sessions that were the result of bounced sessions will weigh down the average session duration across all of our sessions. As a result, the higher your bounce rate is, the lower your average session duration will be. The same is true not only for the site-wide average session duration but also when you look at session durations for specific dimensional values such as landing page, source/medium, and age/gender reports. We can see below when simply looking at a segment of non-bounce sessions compared to site average that the average session duration increases as we take away the bounces.
To see how this gets calculated for our example sessions, we can see that our total session duration is 300 seconds and our total number of session is 6. Therefore our calculation is 300/6, or 50 seconds per session on average.
Average Time on Page:
Average Time on Page is calculated as the total time on page, divided by the total number of pageviews minus the number of exits.
Here we can see how the average time on page metric is calculated differently than the average session duration. The numerator of "Total Time on Page" is similarly calculated between Average Session Duration and Average Time On Page in the sense that Google Analytics uses pageviews and interactive events to get this number. However, there are 2 caveats to this. First, if a site does not leverage interactive events, then the Total Time On Page is deflated as there is no 2nd interactive hit to capture time from on exit pages (ex: Session 2 or Session 6). Second, if a site does leverage interactive events and a user exits on a page (ex: Session 3 or Session 5), Google Analytics will still use the time on page of that exit in the numerator but also subtract that as an exit in the denominator. This is why total time on page may be different than total session duration. For our sessions, we can see how this works itself out for the average time on page for all pages as well as the average time on page for each of our sessions. For all pages within our example sessions, we have a total time on page of 300 seconds, 10 total pageviews, and 6 exits. Therefore our average time on page for all pages is 300/(10-6), or 75 seconds per page
Similarly, we can see that the average time on page for /home is 80 seconds (240 seconds/(6 total pageviews - 3 exits)), and our average time on page for /blog is 60 seconds (60 seconds/(4 total pageviews - 3 exits). In conclusion, we now see how we can use the metrics of Average Session Duration and Average Time on Page in Google Analytics as directional metrics to understand user engagement, but we must understand how other metrics like bounce rate, pages/session, and exit % will affect the average calculations that we see in our reports. For more information about our solution to the limitations of the Average Session Duration and Average Time on Page metrics, check out
this post on our Engagement Timer.