spaghettiwires calc

Freemium model calculator

You offer a free trial or a free plan and hope some users will upgrade. The ones who stay free still cost money, though: you paid to get them and you pay to serve them. Put in your numbers to see what each paying customer really costs, what they leave you with, and what would have to change for the maths to work.

Acquisition and free phase
€

What you spend on average for each new trial sign-up: ads, marketing, onboarding.

months

In months. A 14-day trial is about 0.5; with a free-forever plan, how long a free user stays active on average.

€/month

What each active trial user adds to your bill: servers, APIs, licences, support.

%

Out of 100 free users, how many become paying customers.

Subscription
€/month

What the customer pays, tax included if your price includes it.

%

The share of the price you never see: app store cut (15-30%), payment processor fees, VAT included in the price (20% VAT is 16.7% of the final price).

€/month

Same as for free users, but for paying ones: often higher, because they use more.

months

How many months a customer pays for, on average, before cancelling. If you know your monthly churn: 1 divided by churn (5% a month gives 20 months).

[[ t.error_title ]]

[[ errorText ]]

[[ t.out_ratio ]]

[[ ratioText ]]

[[ t['verdict_' + result.verdict] ]]

[[ fmt(t.out_summary, { cac: money(result.cac), ltv: money(result.ltv) }) ]]

[[ fmt(t.out_cohort, { v: signedMoney(result.profitPerFree * 1000, 0) }) ]]

[[ t['stat_' + s.k] ]]
[[ s.v ]]
[[ fmt(t['stat_' + s.k + '_help'], { months: fmt(t.value_months, { n: smart(values.paidMonths) }) }) ]]
[[ t.chart_title ]]
[[ t.bar_costs ]][[ money(result.totalCost) ]]
[[ t.bar_revenue ]][[ money(result.grossRevenue) ]]
[[ t['part_' + p.k] ]] [[ money(p.value) ]]
[[ t.part_revenue ]] [[ money(result.grossRevenue) ]]
[[ t.part_profit ]] [[ signedMoney(result.profit) ]]

[[ t.levers_title ]]

[[ t.levers_help ]]

[[ t.levers_lever ]] [[ t.levers_now ]] [[ t.levers_even ]] [[ t.levers_healthy ]] [[ t.levers_good ]]
[[ t['lever_' + row.k] ]] [[ row.now.text ]] [[ c.text ]]✓

How it works

The calculator looks at one paying customer at a time. On the other side of the scale it puts everything you spent to get them, including the free users who never paid. The usual comparison is between LTV (lifetime value, the margin a customer leaves you over their whole life) and CAC (customer acquisition cost, what it took to win them).

What a paying customer really costs

If 20% of free users convert, you acquired and served five of them for every paying customer. So the cost of one free user (acquisition plus the months of free phase) gets divided by the conversion rate:

CAC = (cac + free_cost · free_months) / conversion

What they bring in

LTV counts margin, not revenue: take taxes, fees and the cost of serving the customer off the price, then multiply by the months they stay.

margin = price · (1 − fees) − paid_cost

LTV = margin · paid_months

Reading the result

LTV/CAC tells you how many times over you earn back what you spent to win a customer. Below 1× you lose money on every customer, and growing makes it worse. Between 1× and 3× you break even, but there's little left for salaries, development and fixed costs. 3× and above is the common benchmark for a healthy model. Check the payback too: if it takes more months than the average customer stays, you never get the money back. Many SaaS companies aim to pay back within 12 months.

Tips

  • Subscription length is the most underrated lever: going from 3 to 12 months quadruples LTV without touching the price. If you know your monthly churn, the average length is 1 / churn.
  • If you sell to consumers, your price usually includes VAT: at 20%, only €10 of a €12 price is yours. App stores take their cut on top. Put both in taxes and fees, or LTV comes out inflated.
  • A free trial and a freemium plan work the same way in the maths. With a free-forever plan, the free phase is how long a free user stays active on average, and it's nearly always longer than a trial.
  • Acquisition cost covers everything it takes to bring in a sign-up: ads, content, sales, welcome discounts. If some users come for free (word of mouth, SEO), use the average across all of them.
  • It's a simple model: no discounting of future money, no upgrades or renewals at a different price, and it assumes users who don't convert stop costing you when the free phase ends. Good enough for a decision; for a business plan you want cohort data.