Bounce Rate Is a Bad Metric. Measure Engagement Instead.
A 90% bounce rate can be excellent news. Why bounce rate misleads, what engagement signals replace it, and how to read content performance honestly.
A visitor searches for 'css grid centering', lands on your article, reads for four minutes, copies the snippet, and leaves satisfied. Classic analytics records this perfect interaction as a bounce — the same label it gives a misclick that lasted 400 milliseconds. A metric that cannot distinguish your best content experience from your worst is not a metric; it is noise with a percentage sign.
What bounce rate actually measures
Single-page sessions divided by total sessions. That is all. It encodes no time, no scrolling, no interaction, no satisfaction. Its sky-high numbers on content sites mostly measure how often search engines send people who want exactly one answer — which is search working, not your site failing.
Where it actively misleads
- Blogs and docs: a 90% bounce rate on a how-to article is compatible with total reader success.
- SPAs: without route-change tracking, every session is single-page and bounce rate pegs near 100% — a tooling artifact, not behavior (details here).
- Landing pages with external CTAs: a visitor who clicks through to your App Store listing 'bounced'. The page did its one job perfectly.
- Comparing across page types: judging a glossary page and a pricing page on the same bounce number is a category error that produces confident, wrong conclusions.
The signals that actually mean engagement
- Active time on page. Not session duration (which classic tools cannot even compute for bounces) but time with the tab visible and the user present.
- Scroll depth. Did readers reach the part of the page you wrote it for? A pricing page where 80% never see the plans has a layout problem no bounce rate would reveal.
- Meaningful clicks. Copy buttons, outbound links, CTAs, tab switches — the page's own definition of success, tracked as events.
- Return visits to the same content. The strongest content signal there is: people who came back.
- Next-step rate where a next step exists. For pages in a funnel, measure progression to the actual next page — a targeted metric, unlike sitewide bounce.
Reading content performance honestly: a 4-question framework
For any page, replace 'what is the bounce rate?' with:
- What is this page's job? (Answer a question, capture an email, start a trial…)
- What observable action corresponds to that job being done?
- What fraction of visitors do it — segmented by source, since newsletter readers and cold search traffic behave differently by design?
- For those who do not: where exactly did they stop? This is where per-visitor journeys and click data beat any aggregate — you watch the drop-off point instead of theorizing about it.
This framework is also the antidote to the broader disease of vanity metrics: every number must trace to a page doing or failing its job.
Practical setup
In Clycyo, clicks are captured automatically and page-job events are one-line track() calls — define 'success' per page template (snippet_copied for docs, plans_viewed for pricing) and segment by first-touch source. Because journeys, clicks, and even page-load times share one record, 'why do organic visitors stop at step 2?' is an afternoon question, not a quarter-long instrumentation project. The docs show the event API in full.
Bounce rate had a good run in 2008. Let it rest.