Google Analytics counts bounces (where only one page was viewed by the visitor) as having a "time on site" of 0. But it still counts the full time on page for that visit. [Source.]
If a site has lots of bounces – where many people view a single article you've written and then leave, for example – this will skew the average time on site downwards. This makes it possible for "Avg Time on Site" to be lower than "Avg Time on Page".
A simple example
- 5 visitors spend exactly 5 minutes reading
/your-article
- 4 of them close their tab after reading.
- 1 of them visits
/another-article
, spends another 5 minutes reading, then closes the tab.
Average time on page = 5 minutes
Total time spent on page / number of visitors
5 + 5 + 5 + 5 + 5 / 5
Average time on site = 2 minutes
Total time spent on site / number of visitors
0 + 0 + 0 + 0 + 10 / 5
The key is that the bounced visitors count as 0 towards the total time on site, but as 5
towards the total time on page. Google doesn't discount the zeroes – they still contribute to the average.
(Aside: in my opinion, Google should consider using the time on page as time on site for single-page visits, which might give a better representation of average time on site. In the example above, average time on site would then be 6 minutes, which is the truthful average, bigger than the average time on page, and far less confusing.)