The formula
bounce rate = single-page sessions ÷ total sessions × 100 400 of 1,000 sessions ending on the page they started on is a 40% bounce rate. Under the classic definition, time is irrelevant: a visitor who reads for nine minutes and leaves without a second pageview is a bounce, and their session duration is recorded as zero, because duration is measured from the first event to the last.
Two definitions now exist
Google Analytics 4 redefined bounce rate as the inverse of engagement rate. A session counts as engaged if it lasts longer than ten seconds, fires a key event, or contains two or more pageviews — anything else bounces. That is a meaningfully different measurement, and the same traffic will produce different numbers depending on which definition your tool uses.
Before comparing a bounce rate to anything — a benchmark, a competitor, your own history across a tool migration — establish which of the two definitions produced each number.
Why a high bounce rate is often fine
The metric measures continuation, and plenty of pages succeed by not requiring any:
- Reference and documentation. Someone lands, reads the answer, closes the tab. The page did exactly its job.
- Contact and location pages. The visitor got the phone number or the address. The next action happens off your site.
- Articles from search. A satisfying answer produces a bounce; an unsatisfying one produces a return to the results page, which your analytics cannot distinguish.
Pages where a high bounce rate is genuinely diagnostic are the ones with an obvious next step: a landing page with a form, a product page with an add-to-cart, any step inside a funnel. There, bouncing means the next step did not happen, which is the thing you actually care about — and measuring it directly as step conversion tells you more than the bounce rate does.
What makes the number wrong
- Duplicate or automatic events. A tag firing twice, or an automatically tracked event on every page, makes a bounce arithmetically impossible. A suspiciously low bounce rate is an instrumentation smell.
- Untracked route changes. The opposite failure. In a single-page app where navigation is not tracked as a pageview, a long multi-screen visit looks like one page and bounces.
- Automated traffic. Uptime monitors and crawlers that execute JavaScript generate single-page sessions endlessly, establishing a floor your product work cannot move. See bot traffic and what it does to your other metrics.
- Mixed page types in one number. A site-wide bounce rate averages documentation and checkout together and describes neither. Segment by page type or do not use it.
How to use it well
Treat bounce rate as a diagnostic for a specific page rather than a health metric for a site. Compare a page to its own history, watch it after a change to that page, and pair it with a measurement of whether the intended next action happened. If the page has no intended next action, the number is telling you almost nothing.
In Pug, bounce rate is one of the session metrics computed over your raw event stream, alongside session count, duration and pages per session. It uses the classic single-interaction definition, and — like every session metric — it is judged per whole session, so excluding automated traffic removes those visits entirely rather than leaving partial sessions behind to distort the very number you were trying to clean.