What Is a Good Bounce Rate? (And Why the Metric Misleads You)
The definition, precisely
A bounce is a session with exactly one interaction — the visitor arrived, viewed one page, and left without triggering anything else. Bounce rate is bounced sessions divided by total sessions.
SELECT round(100.0 * sum(CASE WHEN pageviews = 1 THEN 1 ELSE 0 END) / count(*), 1)
AS bounce_rate_pct
FROM sessions
WHERE started_at >= current_date - 30;Note what it is not: it is not "left quickly" and not "did not convert." A visitor who reads a 3,000-word article for eleven minutes and leaves satisfied is a bounce.
Why GA4 inverted it
Universal Analytics reported bounce rate. GA4 reports engagement rate and defines an engaged session as one lasting over 10 seconds, or with a conversion, or with 2+ pageviews. Bounce rate in GA4 is simply the inverse of that.
The consequence: GA4 bounce rates are not comparable to Universal Analytics bounce rates, and neither is directly comparable to most privacy-first tools, which typically use the simpler single-pageview definition. If your bounce rate "changed" when you switched tools, check the definition before you investigate the site.
Reasonable ranges by page type
Benchmarks vary widely by source and industry; treat these as orientation, not targets:
| Page type | Typical range | Reading |
|---|---|---|
| Blog post / article | 65–90% | High is normal — one page is the visit |
| Landing page (single-CTA) | 60–90% | High is expected by design |
| Homepage | 30–55% | Above ~60% suggests unclear navigation |
| Product / pricing | 25–55% | High is a genuine problem |
| Ecommerce category | 20–45% | High suggests search or filter issues |
| Checkout | 10–30% | High is urgent |
Comparing your blog's bounce rate to your pricing page's tells you nothing. Compare each page to itself over time, and to similar pages.
When high bounce is fine
- A reference page that answered the question. Someone searching "postgres default port" who finds 5432 and leaves got exactly what they came for.
- A single-purpose landing page where the CTA is an outbound link or a phone number.
- A contact page where the conversion is a phone call your analytics cannot see.
Before treating bounce rate as a problem, ask what a successful visit to this page looks like. If the answer is "read it and leave," bounce rate is not measuring failure.
When high bounce is a real signal
Investigate when it is high and one of these holds:
- A specific page regressed. Bounce jumped from 45% to 78% after a deploy — that is a bug, a broken layout, or a performance regression, and the deploy is your prime suspect.
- One traffic source bounces far worse than others. Usually a messaging mismatch: the ad promised something the page does not deliver.
- Mobile bounces much higher than desktop. Almost always layout or load time. Check LCP on mobile specifically.
- High-intent pages bounce. Pricing, product, checkout — people arrived intending to act and did not.
Segment before you conclude
A single site-wide bounce rate is nearly useless. The number becomes actionable when you split it:
SELECT device_type, channel,
count(*) AS sessions,
round(100.0 * avg(CASE WHEN pageviews = 1 THEN 1.0 ELSE 0 END), 1) AS bounce_pct
FROM sessions
WHERE started_at >= current_date - 30
GROUP BY 1, 2
HAVING count(*) > 100
ORDER BY sessions DESC;The HAVING clause matters. A 100% bounce rate over 3 sessions is noise, and it will otherwise sort straight to the top of your "worst pages" table.
Better metrics to pair it with
Bounce rate is a blunt instrument on its own. Read it alongside:
- Scroll depth — did they read the page, or leave at the fold? This separates "satisfied reader" from "wrong page" far better than bounce alone.
- Time on page (median, not mean) — for the sessions where it is measurable.
- Scroll-adjusted bounce — sessions with one pageview and under 25% scroll depth. That is much closer to what people mean when they say "bounce."
- Return rate — did they come back later? A bounce followed by a return visit two days later is not a failure.
Frequently asked questions
What counts as a bounce?
Classically, a session with exactly one interaction — one pageview and nothing else — regardless of how long the visitor stayed. That last part is why the metric misleads so often.
Why did GA4 change the definition?
GA4 inverted it: engagement rate is the primary metric, and bounce rate is its complement — the share of sessions that were not engaged, where engagement means ten seconds, a conversion, or two pageviews. GA4 and Universal Analytics bounce rates are not comparable.
What is a good bounce rate?
It depends entirely on page type. Blog posts and documentation routinely sit at 70-90% and are working correctly; a checkout page at 70% is broken. Compare a page against itself over time, not against a cross-industry benchmark.
When is a high bounce rate actually fine?
When one page answers the question. Reference pages, contact details, and single-article visits from search all bounce by design — the visitor got what they came for and left satisfied.
What should I look at alongside bounce rate?
Scroll depth and time on page. A bounce with 90% scroll is a satisfied reader; a bounce with 10% scroll in three seconds is a mismatch between your search snippet and your content.
Fixing genuinely bad bounce rates
In rough order of impact:
1. Load time. LCP over 2.5s on mobile drives bounces more than any copy change will fix.
2. Message match. The page headline should echo the ad, link, or search query that brought them.
3. Above-the-fold clarity. What this is and what to do next, without scrolling.
4. Interstitials. Popups and consent walls that fire immediately are bounce machines.
5. Internal links. Give a satisfied reader somewhere to go next.
Then measure the specific page, segmented by device and source, before and after. Site-wide bounce rate will barely move; the page you fixed will. Related: scroll depth and heatmaps, what each metric means, and funnel drop-off.
Try InsightsTrack free
Open-source, self-hosted, privacy-first analytics — explore the live demo, no install required.
Open live dashboard