Bounce rate calculator.

Sessions in, bounces in, rate out. Plus the part most calculators skip: what your tool counts as a bounce.

All sessions in the period. Sessions, not unique visitors.

Sessions that ended without a second pageview or any tracked interaction.

Optional. The number someone has asked you to hit.

Enter your total sessions and how many of them bounced.

Calculated in your browser, nothing sent anywhere. Bounce rate only means something when you know what your tool counts as an interaction, which is the part of this metric that changed under everyone’s feet.

How do you calculate bounce rate?

Bounce rate is bounced sessions divided by total sessions, as a percentage. If 4,620 of 8,400 sessions ended without a second pageview or any tracked interaction, that is 55%. What counts as a bounce differs between analytics tools, so the same visitors can produce very different rates.

What counts as a bounce?

Four definitions in common use. This is why two tools on the same site can report rates thirty points apart, and why comparing your rate to a benchmark table is close to meaningless.

DefinitionA bounce isReports a rate that isUsed by
Single pageviewA session with exactly one pageview, however long it lastedHigher on content sitesClassic Universal Analytics and most simple analytics tools
No engagementA session under 10 seconds with no conversion and no second viewLower, because reading counts as engagementGoogle Analytics 4, inverted as engagement rate
No interactionA session with no scroll, click, or custom eventLower still on well-instrumented sitesTools that track scroll depth and interactions by default
Route-change awareA session with only one view, counting client-side route changes as viewsRealistic on single-page apps, wrong if the tracker is misconfiguredAnything correctly wired into an SPA router

Whichever definition your tool uses, the rate is only comparable to itself. Track the trend on your own pages and ignore cross-site benchmarks.

Why your SPA bounce rate lies.

Tracker fires once, on initial load

  • Every client-side route change is invisible to analytics.
  • A visitor reading six screens looks identical to one who left immediately.
  • Bounce rate climbs toward 100% and stays there no matter what you ship.
  • Time on page is also broken, because there is no second event to measure against.
  • The giveaway: a bounce rate above 90% on a site people obviously use.

Tracker hooked into the router

  • Each route change reports a pageview with the new path.
  • Sessions with real navigation stop being counted as bounces.
  • Per-page numbers finally line up with what your app actually shows.
  • The opposite failure appears if you double-fire on the same route, which pushes bounce rate toward zero.
  • Mrkr's tracker handles history API navigation, so client-side routes are counted without extra code.

Engagement says more than a bounce.

Bounce rate reduces a visit to a yes or no. Someone who read your entire article for four minutes and left satisfied is filed next to someone who hit the back button in two seconds, and the number cannot tell them apart.

Scroll depth and time on page can. A page where most visitors reach the bottom is working, whatever its bounce rate says. A page where they stop at 20% has a problem that no bounce percentage was ever going to locate for you.

Mrkr engagement view showing scroll depth and time on page.
Scroll depth and time on page in Mrkr, the numbers that explain what a bounce rate cannot. Open it in the live demo.

Reading the number honestly.

Judge the page by its job

A contact page or store locator answers one thing and lets people go. High rate, task done.

Split it by source

Broad social traffic bounces far more than branded search. A moving blend usually means a moving mix.

Bots inflate it

Crawlers hit one page and leave. On one live Mrkr site they ran at 4.1x human pageviews in September 2026.

Check page speed first

A six-second render loses people before they can act. That bounce rate is a performance number.

A very low rate is a bug

Under about 15% is almost always a double-firing tracker or a tag installed twice.

Never optimise the metric

Firing a scroll event on load drops it to zero and improves nothing. Fix why people leave.

Look at what people did, not just whether they stayed

The Mrkr demo shows engagement, scroll depth and per-page behaviour on a fully populated dashboard. No signup, no card, cookieless by default.

Open the live demo
Mrkr engagement view showing scroll depth and time on page.

What should you look at instead?

Bounce rate survives because it is easy to compute, not because it tells you what to do next. Three things that usually do.

Scroll depth

People leaving at 20% of a long page tells you the problem is at the top. That is a location.

The rate split by source and device

Mobile paid social behaving unlike desktop organic is a finding. The blend that hides it is not.

Replays of the bounced sessions

Twenty replays show the banner, the slow hero or the silent form error in ten minutes.

Questions, answered.

Keep reading

Your first visitor is already here.

Drop in the script and watch them land. It takes about a minute.