The free trial is the single highest-leverage piece of a product-led SaaS funnel, and most teams ship it wrong on the first try. The choices — card required or not, time gate or feature gate, 7 days or 30, reverse trial or classic — each move the conversion rate by five to twenty points. Get them wrong and every other growth lever is working against the friction the trial itself created. This post covers the mechanics that matter: trial models and what each converts at, gating patterns that don't trap users, strategic extensions, and the subscription-state code that gates features cleanly without turning the app into a tangle of feature flags.
The trial models, with conversion numbers
There are four trial shapes that cover most of the SaaS market. The conversion ranges below are drawn from published benchmark reports covering more than a thousand SaaS products across 2025 and early 2026. The ranges are wide because workload and ACV matter — pick the model that fits the product shape, not the highest conversion rate on the list.
| Model | Trial-to-paid | Best for | Watch out for |
|---|---|---|---|
| Opt-out (card required up front) | 30–50% | Higher-intent buyers, mid/high ACV | Signup friction drops trial starts 2–3× |
| Opt-in (no card required) | 4–15% | Broad top-of-funnel, low-ACV or prosumer | Passive users drag activation numbers down |
| Reverse trial (paid features by default, then free) | 12–25% | Freemium products wanting paid-feature exposure | Downgrade friction feels like a bait-and-switch if handled wrong |
| Freemium with paid upsell | 2–5% (lifetime) | Products with clear individual/team split | Free tier cannibalizes paid if drawn too generously |
The card-required gap is the most persistent finding in the dataset. Opt-out trials consistently convert at 2–3× the rate of opt-in trials because users who entered a card have already passed the intent filter. The tradeoff: total trial starts drop sharply when a card is required. The right choice depends on whether the product's growth loop is top-of-funnel volume (opt-in) or qualified-buyer conversion (opt-out).
Rule of thumb from client data: if the median buyer deliberates (evaluates alternatives, involves a team), card-required wins on revenue. If the median buyer is an individual who wants to try right now, no-card wins because the total number of converted users is higher even at a lower rate. Don't default to one — test the switch and measure bookings, not conversion rate in isolation.
Reverse trials — the pattern worth trying
The reverse trial gives every new signup full access to paid features for a window (usually 14 or 21 days), then automatically downgrades to a free tier at the end unless the user upgrades. It combines the exposure of a generous trial with the ongoing retention of freemium — users who don't convert stay as free-tier accounts that can be re-marketed into paid later, instead of disappearing when the trial ends.
Only about 7% of SaaS products surveyed in the 2026 ChartMogul report run reverse trials, which is a gap worth considering. The model works best when the product has a defensible free tier that users genuinely want to stay on — otherwise the downgrade feels punitive and the retention math doesn't hold up.
Feature gates vs time gates
Time-gated trials give full access for N days. Feature-gated trials give unlimited time but withhold specific capabilities. Usage-gated trials cap a quantity — messages sent, rows processed, projects created. Published benchmarks show time-based and usage-based trials converting roughly 2× better than seat-limited or feature-gated trials, for a specific reason: users can't fall in love with a product they never got to use properly.
Feature gates make sense in two cases. First, when the gated feature is genuinely higher-tier — team admin controls, advanced exports, custom branding — and the core flow is complete without it. Second, when the product has a long natural usage cycle where a 14-day time gate would cut the user off before they hit the aha moment. For everyone else, time or usage gates produce cleaner conversion curves.
Gating features cleanly in code
Most gating bugs come from feature-flag logic and subscription state diverging. A single source of truth for 'what plan is this account on right now, including trial state' is worth the extra module. The pattern below collapses plan, trial, and feature gates into one check that UI and server routes both call.
// One source of truth for subscription gating — plan + trial + feature.
type Plan = "free" | "pro" | "team" | "enterprise";
type Feature =
| "advanced_export"
| "custom_branding"
| "sso"
| "api_access"
| "priority_support";
const PLAN_FEATURES: Record<Plan, Feature[]> = {
free: [],
pro: ["advanced_export", "custom_branding"],
team: ["advanced_export", "custom_branding", "api_access"],
enterprise: ["advanced_export", "custom_branding", "api_access", "sso", "priority_support"],
};
type Subscription = {
plan: Plan;
status: "trialing" | "active" | "past_due" | "canceled";
trialEndsAt: Date | null;
};
// Trial grants the highest plan's feature set for the trial window.
export function hasFeature(sub: Subscription, feature: Feature, now = new Date()): boolean {
if (sub.status === "canceled") return false;
const effectivePlan: Plan =
sub.status === "trialing" && sub.trialEndsAt && now < sub.trialEndsAt
? "enterprise" // reverse-trial pattern — users preview the top tier
: sub.plan;
return PLAN_FEATURES[effectivePlan].includes(feature);
}
// Usage-gate counterpart — enforce a numeric cap.
export function withinUsageLimit(
sub: Subscription,
used: number,
limits: Record<Plan, number>,
): boolean {
const plan = sub.status === "trialing" ? "enterprise" : sub.plan;
return used < limits[plan];
}
// Server route example
// if (!hasFeature(account.subscription, "advanced_export")) {
// return new Response("Upgrade required", { status: 402 });
// }Two guardrails that keep paying off. First, the subscription object is the single source of truth — it gets refreshed via webhook on every Stripe event and cached with a short TTL. Second, the check runs on the server, not just the client. A gate that only hides a button in the UI is a negotiation, not a gate.
The trial countdown, and nudges that aren't annoying
A trial timer is a conversion hook and a usability hazard in the same component. A quiet countdown in a corner is easy to ignore; an interstitial modal on every page is the fastest way to train users to close the product without converting. The pattern that keeps working: ambient display in the app chrome, one or two behavior-triggered nudges during the trial, and a single in-product banner in the last 48 hours that includes the upgrade CTA inline.
- Behavioral triggers beat calendar triggers. 'You invited three teammates — upgrade to keep them' converts better than 'Your trial ends in 5 days'.
- The last-24-hours email should be the clearest one of the sequence. Short, one CTA, no feature list.
- Don't hide the cancel option. Making it hard to cancel pushes users to chargebacks instead, which costs more than a lost subscription.
- Show the trial state everywhere the plan matters — billing page, admin panel, API error responses — so the user is never surprised by a limit.
Extending trials strategically
A universal trial extension is a sign the trial length is wrong. A one-time extension for engaged users is a conversion tool. The users most likely to convert after an extension are the ones already showing activation signals — logged in this week, invited teammates, hit the aha event — but who haven't yet reached the upgrade threshold.
- Automate the extension for accounts above a defined activation threshold. Manual request flows work too, and the users who ask tend to convert at very high rates.
- Extend once, explicitly. Two extensions signal the product has a pricing or value problem, not a trial-length problem.
- Use the extension as a conversation, not a silent gift. 'We noticed your team's been active — here's another week' is a retention story; a silent extension just defers the decision.
- Track conversion rate on extended trials separately. If it's not meaningfully higher than baseline, extension isn't the lever; something else is broken.
Trials that are too long are as bad as trials that are too short. A 30-day trial for a product whose aha moment fires on day one just postpones the buying decision by a month. 14 days remains the most reliable default for B2B SaaS; 7 days works for simpler products; 30+ days is usually a mistake dressed up as generosity.
Post-trial outcomes — paid, free, or gone
When the trial ends, the account lands in one of three states: converted, downgraded to a free tier, or dormant. Each state is a different funnel, and lumping them together hides where the leaks are. Track the three rates separately, and the monthly conversion number starts pointing at specific interventions instead of vague 'the trial isn't working' conversations.
- Trial-to-paid conversion rate — the primary number, segmented by acquisition channel and plan tier.
- Trial-to-free conversion rate — only relevant for reverse trial or freemium products, but it's the long tail that turns into paid later.
- Trial-to-dormant rate — users who neither converted nor stayed. High dormant rates usually point at an activation problem, not a pricing one.
- Time-to-conversion distribution — when in the trial do users upgrade. If most conversions happen in the last 24 hours, the timer is doing the work; if they happen day 2–4, the aha moment is doing the work.
Key takeaways
- Card-required trials convert 2–3× higher than no-card trials, at the cost of 2–3× fewer trial starts. Pick based on whether growth needs volume or qualified buyers.
- Time-based and usage-based gates outperform feature gates for most products. Feature gates only make sense when the gated features are genuinely higher-tier.
- Reverse trials combine paid-feature exposure with freemium retention and stay underused at roughly 7% adoption — worth a test.
- A single source of truth for subscription state beats scattered feature-flag checks every time. Gate on the server, not just the UI.
- Extend trials selectively, not universally. And instrument trial-to-paid, trial-to-free, and trial-to-dormant separately — lumping them together hides the leak.