When a Bounce isn’t a Bounce and Why Google Analytics is Misleading

April 11, 2012 , 60 Comments

One of the New Rules of SEO is that Google now has a user engagement feedback loop that helps them understand if the user is getting what they expect to see for any given query.

While we can’t be certain exactly what these signals are, it is widely suspected that bounce rate is an important ranking factor. In this post I’ll define exactly what bounce rates are and describe when a bounce isn’t actually a bounce.

Plus, you’ll discover why the bounce rate data shown in Google Analytics is mostly useless and see what you can do to fix this problem.

What is the Bounce Rate?

Here is Google’s official definition of bounce rate:

Bounce rate is the percentage of single-page visits (i.e. visits in which the person left your site from the entrance page. Bounce rate is a measure of visit quality and a high bounce rate generally indicates that site entrance (landing) pages aren’t relevant to your visitors. You can minimize Bounce Rates by tailoring landing pages to each keyword and ad that you run. Landing pages should provide the information and services that were promised in the ad copy.

So, effectively – if someone visits a page on your site and then leaves without visiting any other pages on your site (either by hitting the back button on their browser, by visiting another site, closing the browser, or by entering a new domain into the address bar) then that’s classified as a bounce.

When is a Bounce not really a Bounce?

Here’s where it gets slightly more confusing…Consider the following two scenarios:-


By definition, both visitor A and visitor B have bounced, however when used in conjunction with the time on site metric you can see that while visitor A probably didn’t find anything useful on the landing page (having spent only 5 seconds on site), visitor B has stuck around for over 5 minutes, probably found the answer the he/she was looking for and then bounced.

In the search engine industry, this time on site metric is called “dwell time” and dwell time has a very high positive correlation with user engagement.

Consider the example that we used in the “New Rules of SEO” webinar: If a user types in “USD to GBP conversion”, it’s likely that the user will land on a page with a calculator and bounce away when he/she finds the answer that they’re looking for.  In this example, the landing page catered exactly to the needs of the user, but the user still bounced (by definition).

However, when bounce rate and dwell time are used in conjunction with one another, a more reliable insight is gained into how engaged a particular user is with a piece of content.

There is significant evidence to suggest that search engines are looking very closely at dwell time and using it as a signal:

While it may feel like you’ve poured your heart and soul into creating the content on the website, quality is in the eye of the visitor, and short page dwell times can indicate the content is not capturing the visitor’s interest. Something about the content is not grabbing their attention.

- Duane Forrester - Public Outreach, Bing Search Engine

So, what we really should be doing as webmasters is paying attention to bounce rates in conjunction with dwell times.  If we find content that has a high bounce rate and low dwell time, then that is a good signal that the content is not giving the users what they expect.

Here in lies the problem….

Bounce Rates and Google Analytics

The most obvious way to track down content that is under performing in these key metrics is to use Google analytics and apply a filter across all your content.

However, Google analytics only tracks bounce rate and time on site metrics through pageviews.  This is really important to understand – if you don’t then you may start hacking out content from your site that you think is performing badly, but in reality may not be.

For example, if a visitor lands on one of your pages, stays for 8 minutes and 12 seconds before “bouncing” back to the search engines then two things will happen:-

  1. The search engines themselves will see this as a positive signal because of the extended dwell time (high dwell time = good user engagement)
  2. Your Google Analytics tool will show “100% bounce rate” and “[0:00:00]” time on site which most webmasters will interpret as a bad signal!  To reiterate: Even though the visitor has stayed for 8 minutes before leaving, it will be shown as “[0:00:00]” time on site because the visitor hasn’t loaded another page on your site.

As you can see, there is a huge disconnect between what’s really happening and what’s being reported in Google Analytics.  The disconnect is so vast that less knowledgeable webmasters may end up removing content from their site that’s actually performing well!

Here are some more examples of the disconnect between what actually happens and what’s reported in Google Analytics:-


And here is the quote from Google Analytics themselves to confirm that this is what happens:-

When a page is the last page in a session, there is no way to calculate the time spent on it because there is no subsequent pageview. For this reason, when Page A is the last page in the visitor’s session, its time calculation is not counted for that view. In addition, when that page is the only page viewed in the session, no time on page is calculated.

Here’s something else that matters: Google does not use any data from your Google Analytics account to calculate rankings.  Sometimes, you have to take what Matt Cutts says with a pinch of salt due to the obvious conflict of interest that someone in his role is faced with – but on this occasion I’m very confident that Google don’t use Analytics data.

I can guarantee that the bounce rate  and time on site stats you see in your Analytics accounts are not the same metrics that the Google Rankings Team use to determine the best results for any given query.  The rankings team need far more accurate data than Analytics can provide.

What This Actually Means for Us

When you notice in your Analytics tool that a page has 100% bounce rate and a “[0:00:00]” time on site, this doesn’t mean that the page is necessarily not performing well.  It could be that all visitors to that page stick around for more than 5 minutes before leaving, effectively sending a positive “dwell time” signal to the search engine.  In other words: we have no way of using Google Analytics to reliably determine the worst performing content on our site.

We need a better way of identifying poorly performing content pages.  A way that enables us to make decisions and understand what content is being appreciated and what content is holding our rankings back.

How do we Fix this in Google Analytics?

What we’d really like to know is:- “For each page on my site, what percentage of visitors stick around for longer than x seconds?”.  The value of x is up for negotiation.  Shane and I have agreed that for this site we think a suitable benchmark is 30 seconds.

If someone lands on a page and bounces within the first 30 seconds, that’s a pretty sure sign that they haven’t really found what they’re looking on an information site like ImImpact.  On the other hand, if someone stays for longer than that, then they’re at least somewhat engaged (started reading or watching a video).

Thankfully by using a feature called “Event Tracking”, we can set this up relatively painlessly simply by adding a line of code to our Google Analytics snippet:-

Synchronous Analytics Code (Old Version)

If you’re using the original Analytics tracking code (not the asynchronous version), then this is the code you need:-

Just add the following line under the pageTracker._trackPageview(); line:

setTimeout('pageTracker._trackEvent(\'NoBounce\',\'NoBounce\',\'Over 30 seconds\')',30000);

Synchronous Analytics Code (New Version)

If you’re using the new version of Google Analytics tracking code (the asynchronous version), then this is the code you need:-

Just add the following as the last _gaq.push declaration in the script:

setTimeout('_gaq.push([\'_trackEvent\', \'NoBounce\', \'Over 30 seconds\'])',30000);

Thanks to padicode for these Analytics snippets

How Does this Work?

This script will countdown 30 seconds from when the page loads and then will “push” an event to Google Analytics.  Once the event is triggered, Analytics will no longer count this user as a “bounce” even if he/she doesn’t load any other pages on your site.  The net result is that you should see a decrease in the bounce rate on your site.

Here is a screenshot showing the bounce rates before and after the script is applied:-


The Best Way to Find Underperforming Content

Now we have set a bounce to only be recorded if a visitor stays for less than 30 seconds we have a much more reliable set of data that we can use to identify the pages that perhaps aren’t giving the end user what they expect.

To find these pages, I recommend navigating to content -> site content -> pages, clicking on “Bounce Rate” to sort from highest to lowest and changing the sort type to “weighted”.  This will give you a list of pages with the highest bounce rates to the lowest weighted by pageviews:-


With this view you can then sort through the pages to identify those with the highest bounce rates and the lowest average time on page.

Alternatives to Google Analytics

Of course, there are alternative solutions to Google Analytics.  Both Woopra and Clicky have a more accurate way of measuring both bounce rates and time on site through a process called “pinging”. Shane will be updating his Alternatives to Google Analytics post very shortly with more information about this and other new features.

In Summary

This is a mighty long post, so I wanted to write a very quick executive summary for you:-

  1. If someone visits a page on your site and then exits that page without visiting any other page on your site then that is a bounce
  2. Search engines use a metric called dwell time to determine whether a bounce is a “good” bounce (ie. the user found what they were looking for) or a “bad” bounce (ie. the visitor leaves within 10 seconds because your page sucks)
  3. Google Analytics calculates bounce rates and time on site through pageviews.  This means that if someone “bounces” off your page then it’s always reported as [0:00:00] time on site no matter how long the visitor stays for.
  4. Event tracking can be used to manipulate the bounce rate metric so that bounces are only recorded if a visitor leaves after less than 30 seconds (example script above)
  5. Clicky, for example, is a great alternative to Google Analytics for more accurate time-on-site data.

We think that Google Analytics should do a better job of providing accurate time on site and bounce rate metrics because lesser versed webmaster may be misled into removing content that appears bad but is actually performing well.

What are your thoughts on this? Leave a comment and tell us what you think!

Paul's Signature

About ​Paul

Paul McCarthy is the co-founder of Thrive Themes, has a passion for self development and in his free time builds various niche sites, such as Hair Free Life

​Related Articles

  • lately i have been really concentrating on bounce rate and have been tweaking as many of my articles on my sites to make sure i am giving the best content as well as relevant inner linking to try to help lower my bounce rate.

    This code will certainly help me get a more accurate view of my bounce rate the thanks a lot for this very helpful tip.

    Im guessing you can change the 30 seconds value to something that suits your content.

    Say if you have quickly digestible content then it could be more, or if every article you write is a few 1000 words long you would expect more than 30 seconds right?

    • Hi Paul

      Yeah you can change the value, for example this:

      setTimeout(‘pageTracker._trackEvent(\’NoBounce\’,\’NoBounce\’,\’Over 20 seconds\’)’,20000);

      would be 20 seconds instead of 30.

      • yes i see. Im using a google analytics plugin that enters the code for me (i just have to enter the UA-XXXX and it does the rest for me) so it was a little tricky figuring out what to do but ive now added the code.

        Ill report back on my findings, best give it a week or 2 so i hopefully get a nice contrast of the accuracy of results.

  • What I want to know is if your google traffic increased after you’ve reduced the bounce rate…

    It’s very simple to see.

    • No – adding this script is nothing to do with getting more traffic directly – instead it’s about being able to identify content on your site that users aren’t engaging with so that you can change and improve those pages. This will indirectly lead to better rankings and more traffic.

      • Yeah… I understood that but I thought there was a visible traffic increase. Anyway… cool stuff!

  • Same thing happened with me but I will follow your guide lines to improve bounce rate.

  • Hi,just finished reading it on my rss feed and had to come and say:
    Great post!!!
    Its acctually interesting question:
    How analytics can meter a scenario like this,I read this post carefuly
    for about 15min on my mobile phone,but decided to
    come and comment here for 1min and bounce.
    Funny that great content like this post will normally
    meter as 100%br and 00:00:00 view time…

  • I believe G has already told everyone what makes up their algorithm it’s actually based on what is in Analytics. So, I respectfully disagree with you on that point Shane. Analytics has changed and I notice that every time it gets updated and adds a new component that same component becomes a part of G’s ranking sites. If you want to know what Algos are then look very closely at what they track in Analytics. You’ll notice that it’s been at our finger tips the entire time.

    Purely opinion but after looking at every section in Analytics you’ll see what I’m talking about.

      • Paul, each line item in Google Analytics is indeed a part of their ranking process. Are bounce rates a factor? Yes – that’s on the analytics. Are social signals a factor? Yes – that’s on the analytics. Is your mobile marketing a factor? Yes – and that is also on the analytics. Are backlinks a factor? Yes – and you can see them through the referral clicks. Perhaps that’s why not all backlinks are counted? If you don’t get a click on a backlink it may not be counted. I know what Cutts said in the video but it appears the left hand might not be talking to the right hand at G. I see a definite correlation between the two.

        My findings and I pay attention to it to rank my pages. This tells me how well I’m doing with each area they are looking at.

      • Your point is that on site factors (social media, bounce rates etc.) are a factor in rankings.

        I agree with you – they are. That’ll be why you see a correlation between the two.

        But the data from Google Analytics is not used in rankings. Analytics is incomplete, vague and only used by a subset of sites on the net.

  • A most excellent post. This is something I’ve been looking for clarification on forever.

  • I agree with Mark. This is your best post ever. This is invaluable.

  • Thanks for a great post Paul. All those 00:00’s and 100% bounce rates were really bugging me and I had no idea that Google put out such misleading stats.

    I’ve inserted the code into my analytics script and will be looking forward to seeing a more realist figure for some pages.

    Thanks again and chow chow,

    • Thanks Kevin – yeah you should see a pretty severe drop in your bounce rate figure as soon as you’ve added the script.

      Just a quick heads up, your site is showing a StumbleUpon error “Unable to post message to stumbleupon.com. Recipient has origin xxxxxxxxxxx.com”.

      Looks like a problem with your social sharing plugin.

      Go to Chrome, hit f12, hit the “console” button and load the homepage and you’ll see what I mean.

      • Thanks for pointing that out Paul. I looked around but couldn’t find anything obvious – added recommended suggestion but it made no difference.

        I can still add to my Stumble account if I click the button so it seems to be working ok. I did find one very interesting link regarding this problem but it’s starting to get a bit out of my depth as far as javascript goes (I’m old school, long before java was invented). Don’t know what you make of his post.

        If it is true then I might just remove the button altogether.

        Chow chow,

  • Another angle to this debate is that you are only pulling data from browsers where javascript is enabled. It is likely that traffic is significantly m,ore than analytics has suggested. i have seen talk of 5X more but personally I don’t think it’s likely as big a difference as that. Now I have to own up to not being an expert on this, but using webmaster tools from Big G gives another perspective on the processes. I suspect that Shane and Paul are well versed on this, so maybe they could offer their insights on how they use the two tools (or alternatives) to gauge website performance accurately.

    BTW – the information here is first class guys, you have a clarity that is missing from so many successful IMers.

    • Hi Ray,

      That’s a very good point – the tool is Javascript based so won’t pick up anyone what has purposely switched JS off in their browser.

      According to this: http://www.searchenginepeople.com/blog/stats-no-javascript.html 1.3% of users have javascript disabled on average. I probably won’t lose any sleep over that! Nowadays, with javascript disabled, you’ll have a tough time browsing a lot of sites.

      The second part of your comment deserves a post rather than a comment reply – duly noted and added to my to do list ;)

  • Great post! Question: since I am rather new to this “webmaster stuff” and was curious as to how to tell which version of G analytics I am using?

    Thanks for the providing a great “go-to” place.

  • Paul;
    Thanks for your clarifications. I was not aware that your landing page needed a click through to another page on the site before it became a “visit”. This is kind of a crazy measurement of web behavior and it speaks to browsing habits more than to actually answering if the visitor received value from his visit.
    I rarely click through to another page on a site, I go, I get what I am looking for and follow through to other pages on the internet or occasionally follow an internal link on the same site if it pertains to my original information quest.
    Basically, what this says to me is that you should have boatloads of internal links on every post your make to get “click through” so the visit will count.
    Also what about tabbed browsing? Back in the day you had a browse window, period. Now you can open a tab, visit a site, open another tab and eventually have several sites open simultaneously. I do this quite often when I am writing an article or researching. My time on a site might be 3 hours, but only because I read something that was interesting, tabbed over to compare with information from another site, the went back to the original and maybe clicked on a different page for more info on a related topic.

    Under that scenario, a site could be recording 2-3 hour long visitations when the actual reading was a few seconds, but the tab was not closed.

    I will be interesting to watch as this new code snippet yields a better reflection, thanks Paul.

    Michael Brown

    • “I was not aware that your landing page needed a click through to another page on the site before it became a “visit”.”

      Visits still count whether the visitor clicks through to another page or not. It’s only the time on site metric that’s affected.

      “Basically, what this says to me is that you should have boatloads of internal links on every post your make to get “click through” so the visit will count.”

      Not sure what you mean by “so the visit will count”?

      Don’t forget, Google don’t use Analytics data in their rankings – they’ll have other, more sophisticated ways of calculating dwell time (Google Chrome & google toolbar to name but a few).

      This script will simply give you more reliable user engagement metrics that you make decisions from.

      The crux of the matter is this: Give your visitors the content they expect to see. This certainly doesn’t mean flooding links to force pageviews in order to see more data in your Analytics account.

      Tabbed browsing is something that a “power user” would use. I’d venture to say that 10% of browsers do tabbed browsing (don’t forget, as internet marketers we’re not representative of the internet browsing population). So you’d expect the offset to be small.

      I have to admit, I don’t know how Google Analytics reports with tabbed browsing.

  • Thanks for this great post Paul, as you said my boucen rate has gone to the floor now, it was sitting at 89% however I modified your script to 60 seconds and the majority of my visits seem to be around that mark.

    Bounce rate is not at 17%. I wonder ( even though Matt Cutts says no ), if the panda algorithm is taking into account the bounce rate as I go hit in october with 30% off my organic search.

    Lets see in a few months, I shall report back. Thanks again.

    • Hi Allen,

      Just to reiterate this will have no direct effect on your rankings. Google don’t use Analytics data for determining rankings.

      The reason this script is useful is that it will give you more reliable time on site and bounce rate data in your Analytics account that you can use to make more informed decisions about what content is performing well or not.

      More reliable Analytics helps you to make better decisions, which in turn helps you to improve areas of the site that aren’t engaging your audience which over time will give you better rankings.

    • Well that’s pretty interesting to say the least! If that post is accurate (I don’t know enough about this kind of stuff to tell if it is or not) then that does seem a little odd.

      Did you add this:

      “window._loadCalled = true;”

      As suggested at the end of the post?

      • Hi Paul,

        I added the code to the footer. It didn’t seem to have any adverse effects but I have no idea how to check if it’s doing what it’s supposed to.

        Chow chow,

      • Hi Kevin,

        You’ll know by looking in your analytics to see if there’s a big drop in your bounce rate. If it’s done correctly, there will be.

        If not, then load your site in Chrome, hit f12, hit the “console” button and make sure there are no errors (in red) after the 20 or 30 seconds is up. If there is, then that’s your problem. If there isn’t, then it’s probably working just fine!

  • Thanks Paul, that information is exactly what I was looking for. I was always suspicious of the bounce rate results presented in Google Analytics.

    I wonder if you could display the different bounce rate averaged for different type of webpages as you shoed in the last webinar.

    Thanks, Andreas

  • Well done, it was a “mighty long post” but I read the whole thing and found it very helpful. I appreciate your visuals, good visuals are very hard to come by, I was tired of trying to find information by reading through forums of people just repeating the same question.

  • Paul, great article, I was digging some GA for specific keywords and this article will help to see which content is consumed on my site even if the visitor leaves after reading the page. Here’s another tip – especially for blog pages – create a layout so the visitor may consume other related content or engage with your site (buy a product, signup):


  • Hi Paul,

    Nice article. Two points I’d like to add to the discussion thread:

    1). In the large graphic with Example 1, 2, 3 and their respective time on page and bounce rates, Example 3 is shown with a 100% bounce rate for page B. This is not accurate. A bounce is only counted in Google Analytics when there is one interaction hit in a session. In Example 3 above, the 2nd pageview would have 0:00 time on page and 100% *Exit* Rate. Bounce rate is only applied to landing pages, not subsequent pageviews.

    2). In terms of using setTimeout to send an event after a certain amount of arbitrary time, consider using scroll tracking or some other for of interactive measurement to adjust bounce rate. Simply running the clock doesn’t necessarily describe engagement with a page, whereas noting if a person slowly scrolled through the content of that page would probably paint a more accurate picture of engagement.


    • Hi Yehoshua,

      Great point about page B in example 3 – you are right there – thank you for pointing that out to us.

      That’s also a good point about tracking engagement through scroll action – I may use your idea to create a simple plugin that integrates with analytics and allows users to see whether people have indeed scrolled down on their page.

      This might fall flat when the content is less than a full page in height, though, because theoretically someone could land on a page watch a 5 minute video and leave without a page scroll.

      • Hey Paul,

        There are a number of very good scroll tracking scripts out there, especially this one: http://pastebin.com/8Vtr7Ben The original script is from Thomas Baekdal http://www.baekdal.com. The script I shared is with Eivind Savio’s tweaks of Justin Cutroni’s incarnation of the script. (http://www.savio.no/blogg/a/114/tracking-content-scrollers-scanners-og-readers-in-google-analytics).

        Something you’ll like is that the script checks to see whether or not the content is less than a full page in height.

        In terms of a user watching a 5 minute video without scrolling, *track video engagement* with Event Tracking in Google Analytics. ;) Videos are often very powerful content, and happen to cost more to produce than text. Tracking video views, percentage played, etc is pretty much a “must” as far as I am concerned.

  • Hi Paul, great article because I have always wondered what these were, I presumed that a 100% bounce and a time on site of 00:00 must be some kind of spider and not a genuine visit in my stats.

    Just so I have this straight, if In Analytics I check my landing page stats and I have a page that has had 2 visits and has a 50% bounce rate and an average time on site of 2 minutes, does that mean that one user definitely spent 2 minutes on the site and the other definitely spent 00:00?

  • Just had an interesting issue recently for a single landing page / keyword so have implemented this to ‘test’….

    cheers :)

  • I implemented this code and it’s working great!

    One question;

    Some traffic has a duration of 0.29 even though only one page is being visited (and not recorded as a bounce) any idea what is causing that?

  • Hi,
    In our website bounce rate always 100% I don’t understand why it shows 100% bounce rate always.

    • Hi Nano. What do your pageview stats say? How many pageviews per visitor, on average?

  • I cannot post a reply to Nano – it always says, that i forgot to fill in name and email. So i try this standard Leave a reply comment. (p.s. using latest Opera)

    Nano: It happens, when you have wrongly set-up your GA code. Typically only on homepage, not on subpages, or some other stupid setting, like wrongly using setdomain etc. If you have some professional web admin or analytic, he should fix within seconds. If not, than just write me your web address and i can check it.

    • Hi Tomas, sorry about the problem with the blog – that should be fixed now – thanks for bringing to my attention!

  • Paul, I would like to thank you a ton for this post. I have been in the SEO industry for over 2 years and while I did have an idea of dwell time, I never knew that the time spent on the last page of a website doesn’t count. Now all this makes sense.

    Plus rather than just pointing out the problem, you have also given a solution for it. Having read your post, I am currently in a Facepalm, thinking damn, that was a crucial piece of data that I didn’t even analyze.

  • Just noticed your ‘bouncerategraphics’ are not working here (desktop) or on my phone…

    Article was great…But I like pictures…;o)

    • Thanks for the heads up! Trying to find out why this happened and where those pics went…

  • Great information. I’d love to see the images in this article. Please let me know if I can.

    • Hello Gretchen,

      Sorry about the images issue! We’ve fixed that now.

  • Do you have an updated Tracking script modification for the newer Universal Analytics?

    Thanks, T

  • Hi Paul,

    Thanks for such a beautiful Idea.
    By using it the bounce rate has come down from 80% to 8-9%.

    I have some questions:
    1. If somebody navigates to a new tab with a different domain, and this code would still be sending the events to GA, for instance if somebody just keeps the website open in one tab for hours, then would that be calculated as the engagement with the page and have any negative impact?

    2. On a mobile app eg chrome, safari, If I do not close the app, would this be sending the events to GA, does that have any negative effect on average session duration?


  • Hello Shane,

    Not sure if you are gonna read or comment on this but was wondering if you knew how we could add this to Google Tag Manager? We are rather new to Google Tag Manager and need to setup this using Google Tag Manager. Any help/input would be greatly appreciated.

    • Hi Georg,

      I’m sorry to say that I’m not very handy with GTM, so I can’t help you out with this.

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    ​Develop the Ultimate Entrepreneurial Superpower: Productivity!

    ​Countless "wantrepreneurs" fail to achieve their business goals - not because of a lack of knowledge, but because of a lack of productive, effective implementation. Don't be one of them.