What is bounce rate?

Bounce rate is the share of sessions that end without a second interaction: one page loads, nothing else is recorded, and the visitor leaves. It is written as a percentage of all sessions. A high bounce rate can mean the page failed, or it can mean the page answered the question in one screen.

Bounce rate = (single-interaction sessions / total sessions) x 100

single-interaction sessions
Sessions in which exactly one tracked interaction fired, normally one pageview and nothing after it.
total sessions
Every session in the period, including the single-interaction ones. Bots and known crawlers should already be excluded.
The formula is trivial. What varies between tools, and what makes cross-tool comparison meaningless, is the definition of an interaction.

A marketing site over 30 days, after bot filtering.

Sessions8,400
Sessions with one pageview and no other event5,124
Calculation5,124 / 8,400

Bounce rate = 61% 61% sounds alarming until you split it. If most of those sessions landed on a blog post, read for two minutes and left satisfied, the number is describing a content site working normally, not a leak.

What counts as a bounce?

A bounce is a session with exactly one recorded interaction. The visitor arrives, one pageview fires, and nothing else reaches the analytics tool before the session expires. There is no second page, no tracked click, no form submit, no custom event.

That definition sounds precise, and it is, but it depends entirely on what your analytics counts as an interaction. Move the boundary and the number moves with it:

  • Count only pageviews, and a visitor who read for six minutes and clicked three accordions is a bounce.
  • Count outbound link clicks as interactions, and the same visit stops being a bounce.
  • Fire a timing event after fifteen seconds, and almost nothing is a bounce any more. This is what Google Analytics 4 did when it replaced bounce rate with engagement rate.

This is why a bounce rate copied from one tool into a report next to a bounce rate from another tool is not a comparison. It is two different questions with the same label.

If you already have the session counts and just want the number, the free bounce rate calculator does the arithmetic and shows the result against the range for your page type.

Why single-page app bounce rates lie

In a single-page application, navigation happens in the browser. React Router, the Next.js app router and Vue Router change the URL without a document load. If your tracker only fires on page load, a visitor who moves through six screens produces exactly one pageview, and the whole session is filed as a bounce.

Teams discover this as an impossible number: a 95% bounce rate on a product that people demonstrably use for twenty minutes. The fix is to track client-side route changes, not to explain the number away.

The opposite failure is just as common. Tools that auto-fire a scroll or timer event turn the bounce rate into a near-zero constant that no longer distinguishes a good page from a bad one. A metric that never varies is not a metric.

mrkr tracks history API navigations by default, so a route change in a single-page app counts as a pageview. It does not auto-fire timing events, so the bounce rate keeps its meaning.

What is a normal bounce rate? Bounce rate is only interpretable against a baseline for the same kind of page. These are the ranges most teams land in. They are directional, not a standard, and your own trend line is worth more than any of them.

Page or site typeTypical rangeWhy
Blog post or documentation page65% to 90%The visitor came for one answer, got it, and left. Success looks like a bounce.
Marketing landing page40% to 70%One page, one offer. The only non-bounce path is the CTA.
Homepage of a multi-page site30% to 50%It exists to route people onward, so a bounce here is a real failure.
Ecommerce category or product page20% to 45%Browsing behaviour naturally produces several pageviews.
Web app after loginUnder 20%If it is higher, you are probably not tracking client-side navigation.

Ranges are directional patterns from published industry reporting, not measured mrkr data. Treat them as a sanity check on your own number, never as a target.

See it on real data. The live demo is a fully populated dashboard on demo traffic, with no signup and no card.

Open the live demo

How to make bounce rate useful again

  • Segment before you judge

    A site-wide bounce rate averages the blog with the pricing page and tells you nothing. Bounce rate per landing page is actionable; bounce rate for the whole site is a mood.

  • Pair it with engagement time

    A 90% bounce rate with a three-minute median engagement time is a working reference page. A 90% bounce rate with a four-second one is a broken page or the wrong traffic.

  • Split by source

    Paid social usually bounces far harder than organic search on the same page. If a campaign's bounce rate is 40 points above the page average, the ad copy is promising something the page does not deliver.

  • Filter bots first

    Crawler traffic is single-page by nature and inflates bounce rate directly. On one live site running mrkr, filtered bot hits ran at 4.1 times the human pageviews over 30 days. Unfiltered, that noise would dominate the metric.

How mrkr measures it

mrkr records a bounce when a session contains a single pageview and no subsequent event, with client-side route changes counted as pageviews so single-page apps report honestly. Known bots and crawlers are excluded before the calculation, not after.

Alongside it, mrkr reports engagement time per page, which is the thing bounce rate was always a crude proxy for. Reading them together is the difference between knowing that people left and knowing whether they got what they came for.

Bounce rate is computed from cookieless session data by default, so nothing is stored on the visitor's device to produce it.

Is a high bounce rate bad?

Not on its own. On a documentation page or a blog post, a high bounce rate usually means the page answered the question in one visit, which is exactly what it was written to do. It is a problem on a homepage or a category page, whose entire job is to send people somewhere else.

Why did bounce rate disappear from Google Analytics 4?

GA4 replaced it with engagement rate, which counts a session as engaged if it lasts over ten seconds, fires a conversion, or produces two or more pageviews. Bounce rate in GA4 is now simply the inverse of that, so it is not comparable to the Universal Analytics number teams have in old reports.

Does bounce rate affect SEO rankings?

Google has repeatedly said it does not use analytics bounce rate as a ranking signal, and it has no access to yours. What can matter is the behaviour underneath it: if people return to the results page immediately, that is a signal the page did not satisfy the query.

Start with one line of HTML.Your first visitors show up within a minute.