What is a good conversion rate?
It depends on what you are counting as a conversion and on where the visitors came from.
A newsletter sign-up and a £2,000 purchase are both conversions, and nobody expects them to happen at the same rate. A visitor who searched for your brand name and one who clicked a display ad on a recipe page are both sessions, and nobody should expect them to convert at the same rate either. A single number for the whole site hides both differences.
How it's calculated
Conversion rate = conversions ÷ sessions
Some tools divide by users instead, and the two rates differ, because a person who visits three times before buying is three sessions and one user. Pick one denominator and keep it. The conversion rate formula page has the Google Sheets version and a worked example.
Published benchmarks
Benchmarks are published by analytics vendors, landing page tools and agencies, usually by industry and sometimes by page type. Each one counts a different thing, which the first column says.
| Context | Reported conversion rate | Source |
|---|---|---|
| Landing pages, all industries (conversions per visitor, 41,000 pages) | 6.6% median | Unbounce, Conversion Benchmark Report, Q4 2024 data |
| Google and Microsoft search ad clicks, all industries (conversions per click, US) | 8.18% median, April 2025 to March 2026 | LocaliQ and WordStream, Search Advertising Benchmarks, 2026 |
| Ecommerce (orders per session) | 2.68% worldwide; 3.4% on desktop and 2.0% on mobile | Statista, 2025; Contentsquare, Digital Experience Benchmark, 2026 |
| SaaS landing pages (conversions per visitor) | 3.8% median | Unbounce, Conversion Benchmark Report, Q4 2024 data |
The Unbounce figures count every conversion a landing page is built for, from a download to a demo request. The ad figure counts conversions per click, so its denominator is people who already clicked an ad. The ecommerce figure counts orders per session across whole sites. None of the three is comparable with the others, and none is comparable with a whole-site figure that mixes all of them.
For shops specifically, with the split by device and traffic source, see average ecommerce conversion rate.
Why benchmarks mislead
One site in the sample counts a form fill, another counts a paid order. Their rates are not comparable and the benchmark averages them anyway.
Sessions and users give different rates from the same traffic, and a benchmark rarely says which denominator it used.
Traffic mix matters more than the site. A site whose visitors mostly arrive from brand search converts well, and a site that buys cold display traffic does not, with the same products on the same pages. The benchmark describes an average mix that is nobody's actual mix.
Tracking gaps push rates both ways. Consent banners mean some sessions are never recorded while the orders they led to still are, which pushes a measured rate up. Blocked scripts do the opposite. Two sites with the same real behaviour report different rates.
The sample is the sites that stayed. Sites that convert badly tend to stop paying for traffic, and sometimes stop existing.
Find your own baseline
Compute the rate per channel from your own data rather than for the site as a whole. With the channel in column A, sessions in column B and conversions in column C, the rate for organic search over the whole range is:
=IF(SUMIF(A:A, "Organic Search", B:B)=0, "", SUMIF(A:A, "Organic Search", C:C) / SUMIF(A:A, "Organic Search", B:B))
Repeat for each channel. Compare this month's organic rate with last month's organic rate, and paid social with paid social. A change in the blended rate is usually a change in the mix rather than the site. Splitting by channel tells the two apart.
Give it enough data. A page with forty sessions and one conversion has a rate of 2.5%, and one more conversion would double it. Wait until a channel has enough sessions that a single conversion moves the rate by less than you would act on.
Keeping it current
A scheduled Fresh Sheets report can pull sessions and key events by default channel group and by date from Google Analytics 4 into its own tab, so the per-channel baseline stays current.
Fresh Sheets replaces that tab's contents on every refresh, so keep your formulas on a separate tab. This version finds each column by its heading, so it still works if a field is added and the columns move:
=SUM(INDEX('GA4'!A:Z, 0, MATCH("Key events", 'GA4'!1:1, 0))) / SUM(INDEX('GA4'!A:Z, 0, MATCH("Sessions", 'GA4'!1:1, 0)))