Open beta — completely free, no card required.
Diagnostics

SaaS Conversion Rate Benchmarks (and Which Ones You Can Actually Measure)

SaaS conversion rate benchmarks by funnel stage and monetization model — signup, trial-to-paid, freemium, activation, NRR — with the line marking what GA4 can measure and what lives in Stripe.

By Ivan Pika

Median SaaS conversion rates, sorted by where the number actually lives: visitor-to-signup runs about 3.8% for a no-card free trial, ~5% for freemium, and ~1.1% for a sales-led demo request. Trial-to-paid sits near 12% when no card is required and ~50% when it is. Free-to-paid is about 4%. Net revenue retention clusters around 110%. Useful numbers — but roughly half of them live in Stripe and your product database, not GA4. So before you benchmark anything, sort which ones you can even see.

Every "SaaS conversion benchmark" post does the same thing: dumps forty numbers into a table and walks off. None of them answer the two questions that decide whether the table is worth anything — does the number apply to your monetization model, and can you measure it at all from the analytics you've got? A freemium signup rate sitting next to a sales-led demo rate is two unrelated metrics wearing the same word. And the famous ones — trial-to-paid, activation, NRR — never touch GA4. You end up benchmarking against numbers you can't compute on your own site.

Here's the version that's actually usable: the bands by funnel stage, split by model, with a line down the middle marking what GA4 gives you and what stays in billing.

The denominator trap

The fastest way to lie to yourself with a benchmark is to compare two rates measured over different things.

"SaaS converts at 3%" — 3% of what? Visitor-to-signup is over sessions. Trial-to-paid is over a cohort of trials. Free-to-paid is over free users. Activation is over signups. They share no denominator, so stacking them in one column and calling it a funnel is fiction — and it's the move that makes a founder panic about a "3% conversion" that was never the same 3% twice.

So every row below names its denominator. When you check your own number, the only honest comparison is same stage, same denominator, same model. The rest is decoration.

The benchmarks, by funnel stage

Public composites — OpenView, ChartMogul, ProfitWell/Paddle, KeyBanc, Capterra, First Page Sage — rounded, medians-of-medians where the reports disagreed. Read the band (p25–p75), not the point. A lone median is a number to argue with, not a grade.

Stage / metricDenominatorp25Medianp75
Engagement rate (GA4)sessions50%62%72%
Bounce rate (lower is better)sessions35%50%62%
Pricing-page reachsessions8%15%25%
Visitor → signup — freemiumsessions2.5%5%9%
Visitor → trial start — no-card trialsessions2%3.8%7%
Visitor → demo/contact — sales-ledsessions0.5%1.1%2.2%
Signup/demo form completionform starts35%50%65%
Pricing → signup/trialpricing sessions10%18%30%

Look at the 5x spread on the signup row. Freemium signup (~5%) looks healthy because signing up costs the user nothing. A sales-led demo request (~1.1%) looks tiny because it's a meeting, not a click. Same funnel position, different ask, incomparable numbers. Match the row to your model or drop it.

Trial-to-paid, free-to-paid, and the card question

These are the rows everyone quotes — and almost none of them come from GA4 (more on that below).

MetricDenominatorp25Medianp75
Free trial, opt-in (no card) → paidtrials8%12%18%
Free trial, opt-out (card required) → paidtrials40%50%60%
Freemium → paidfree users2%4%6%
Reverse trial → paidfree users7%10%15%
Signup → activation (first value)signups25%34%45%
Net revenue retentionrevenue cohort100%110%125%

The card question is the one worth staring at. Opt-out trials (card upfront) convert near 50%, opt-in near 12% — a 4x gap that reads like a slam-dunk for requiring a card. It isn't. The card crushes trial starts, so net yield — paid customers per visitor — often lands in the same place. You've moved the friction earlier and changed who's in the trial, not conjured conversions. Benchmark the stage you're actually optimizing, not the headline ratio.

Industry shifts it too: CRM and education trials land in the mid-20s%, fintech and enterprise tools drag into the high teens. But the trial model moves the number more than the vertical does, so read the model row first and treat your industry as a second-order nudge, not the headline.

Which of these you can actually measure

This is the part the listicles skip, and it's the one that saves you a week. Sort every benchmark by where the number lives.

Already in GA4. Engagement rate and bounce rate are session metrics — you have them today, zero setup. Treat them as the floor: if engagement on paid traffic is under ~50%, your signup rate is a symptom and the landing page is the disease. Break them out by landing page and by source while you're there; a 40% engagement rate on one paid campaign is a message-match problem you can fix this week, signup data or not.

In GA4, once you mark the event. Visitor-to-signup, demo requests, pricing→signup, form completion, pricing-page reach — all computable, but only after you make sign_up (or generate_lead, or your form_submit) a Key Event in GA4. Until you do, GA4 logs the hit and refuses to give you a rate. Most SaaS sites I open have the event firing and never marked — a ten-minute toggle that turns five of the rows above from trivia into your own dashboard.

Not in GA4 at all. Trial-to-paid, free-to-paid, activation, NRR, churn, CAC payback — these sit in Stripe, your product analytics, or your CRM. GA4 watches a signup and then the user vanishes into your app, where the money happens. Any tool that claims to read your trial-to-paid "from GA4" is inventing it. Pull those from billing and use them as the north star that tells you whether a signup-rate win even matters.

So for a typical self-serve SaaS: two metrics free today, five more after a Key Event toggle, the revenue ones from Stripe. Knowing which bucket a benchmark sits in beats knowing the benchmark.

A worked example

A project-management tool, no-card trial, 12,400 sessions last month. Pull the three GA4-measurable signup-side numbers and set them next to the bands.

Pricing-page reach: 8.7% of sessions (band 8–25%, median 15%) — bottom end. Trial start: 2.9% of sessions (band 2–7%, median 3.8%) — below median. Signup-form completion: 44% of starts (band 35–65%, median 50%) — mid-band, fine.

Read it as a chain. People land, fewer than one in ten reach pricing, but the ones who hit the signup form finish it at a normal clip. The leak isn't the form — it's everything upstream of it. So the obvious move, shortening the signup form, would polish the one step that already works. The real questions are why sessions don't reach pricing and why pricing visitors don't start a trial: message-match and plan clarity, not field count. That's a conversion-drop diagnostic, and then a CRO pass with AI on the pricing page — not a form rebuild.

The trial-to-paid number, from Stripe, is 11% — right on the 12% median. So trial conversion isn't the constraint; getting people to start one is. The benchmarks didn't hand over the answer. They told you which step to stop blaming.

Benchmarking without the spreadsheet

You can run all of this by hand: build the Key Events, pull the rates in GA4, keep the bands in a doc, compare every month. It works, and it's a chore.

The faster version puts GA4 inside the AI client you already have open. Connect it and the comparison turns into a question — "is my trial-signup rate below the SaaS median, and where does the drop concentrate?" — answered against your real sessions, in plain English. The honest version even tells you which rows it can't touch: it'll compare the GA4-measurable bands and say outright that trial-to-paid isn't one of them, because it lives in Stripe.

A benchmark you can't measure is just someone else's number on your screen.

Try it on your GA4.
Start free trial →