Lifetime Value Cohort Analyzer
Retention and contribution from a pasted cohort table, with how many cohorts each averaged period came from and the projection kept separate from what happened.
Cohorts 6
Widest window, in months 6
Retention by period, and how many cohorts each average is
month 0 100% from 6 cohorts
month 1 45.1% from 6 cohorts
month 2 34.4% from 5 cohorts
month 3 30.1% from 4 cohorts
month 4 28.1% from 3 cohorts
month 5 27% from 2 cohorts ← thin
month 6 25.8% from 1 cohort ← thin
Per cohort
Jan 2026 1,200 to start, 25.8% after 6 months
Feb 2026 1,100 to start, 27.3% after 5 months
Mar 2026 1,400 to start, 28.2% after 4 months
Apr 2026 1,250 to start, 30.4% after 3 months
May 2026 1,310 to start, 34.7% after 2 months
Jun 2026 1,180 to start, 44.1% after 1 month
What the table actually shows
revenue a customer, so far $122.04
contribution, at the margin $87.87
over 7 months of data
which is an observation rather than a lifetime: nobody in the table has finished being a customer
Against acquisition cost
cost a customer $95.00
paid back not yet: $87.87 of contribution against $95.00 after 7 months
ratio so far 0.92× on contribution
reading below 3× on the data so far, which is the figure the projection below is usually used to rescue
If the recent decline continues to 24 months
method the last three periods decline at 4.1% a month, continued for 17 more
extra revenue $128.95
extra contribution $92.84
total contribution $180.71
ratio to acquisition cost 1.90×
and the caveat this is a projection of a curve that has three points, from a table whose far end is thin. It is the number to argue about rather than the number to plan on.
The table shows $87.87 of contribution a customer over 7 months. That is
what happened. A lifetime value is a prediction about people who have
not left yet, and the difference between the two is where most LTV
figures go wrong.
The last period averages 1 cohort, which is 17% of them. A column with
one cohort in it is that cohort's number rather than an average, and it
moves a lot when the next month arrives.
Retention curves flatten. The steep part is the first two or three
periods, after which the survivors are the people who were always going
to stay, and projecting the early slope forward is the single commonest
way an LTV is overstated. The projection here uses the most recent slope
instead, which is conservative.
Contribution rather than revenue. Multiplying retention by revenue gives
a number that ignores the cost of serving those customers, and the ratio
against acquisition cost only means something on contribution.
Payback is the figure a finance conversation actually wants. Lifetime
value tells you whether the business works eventually; payback tells you
how much cash is needed in the meantime, which is what decides whether
you get to find out.
The cohort that looks worst is often the most recent one, because it has
had the least time and because acquisition changed. Read a column down
rather than a row across before concluding that quality is falling.
None of this is a model. It is arithmetic on the table you pasted, which
is the honest version: a fitted curve looks more authoritative and is
only better if the fit is checked against held-back periods.
Output is valid and updates as you type.
Fix the highlighted fields to update the output.
Most lifetime value figures are a division: revenue a customer divided by a churn rate. That gives one number from two averages, and it hides the thing a cohort table shows plainly, which is that retention is not a constant. It falls steeply and then flattens, and which part of the curve you extrapolate decides the answer.
This takes the table instead. Paste the cohorts, one a line, and it reports retention by period with the number of cohorts behind each average, what the table actually earned, and, separately, what the recent slope implies if it continues.
The separation is the point. The observed figure is arithmetic on rows you can check. The projection is a guess with a named method, and the two are never added into one number.
How to use
- Paste the table: a label, then the cohort’s starting size, then how many remained in each later period. Pipes, commas, tabs or a straight spreadsheet paste all work.
- Set what a column is worth: revenue a retained customer a period, and the gross margin.
- Add the acquisition cost to see whether the cohorts have paid it back yet.
- Set the horizon, or zero to see only what happened.
Rows do not have to be the same length. A cohort three months old has three numbers, and the tool averages each period over the cohorts that actually reached it.
Example
Six monthly cohorts, $42 a month at a 72 percent margin, $95 to acquire:
Cohorts 6
Widest window, in months 6
Retention by period, and how many cohorts each average is
month 0 100% from 6 cohorts
month 1 45.1% from 6 cohorts
month 2 34.4% from 5 cohorts
month 3 30.1% from 4 cohorts
month 4 28.1% from 3 cohorts
month 5 27% from 2 cohorts ← thin
month 6 25.8% from 1 cohort ← thin
What the table actually shows
revenue a customer, so far $122.04
contribution, at the margin $87.87
over 7 months of data
which is an observation rather than a lifetime
Against acquisition cost
cost a customer $95.00
paid back not yet: $87.87 against $95.00 after 7 months
ratio so far 0.92× on contribution
If the recent decline continues to 24 months
method the last three periods decline at 4.1% a month
extra contribution $92.84
total contribution $180.71
ratio to acquisition cost 1.90×
Two numbers, and the honest one is the smaller. $87.87 happened. $180.71 is what happens if a curve with three points keeps bending the way it has been.
Pitfalls
Each period is averaged over different cohorts. Month 1 here is six cohorts; month 6 is one. The far right of any cohort table is the oldest cohorts only, which is survivorship: the ones that reached month 6 are by definition the ones that lasted. Those columns are marked thin, and they move a lot when the next month arrives.
Extrapolating the early slope is the standard mistake. Retention falls fastest at the start and then flattens, because the survivors are the people who were always going to stay. Taking month 1 to month 2 as the ongoing rate overstates the answer badly. The projection here uses the most recent three periods, which is the conservative end.
Lifetime value on revenue is not lifetime value. Serving a customer costs something, and the ratio against acquisition cost only means anything on contribution. Set the margin honestly, including support and hosting, not just cost of goods.
Payback is the number that decides whether you survive to collect the lifetime value. A 4× LTV to CAC ratio with a 19-month payback needs a lot of cash in the meantime. The ratio is about whether the business works; payback is about whether you get to find out.
The newest cohort usually looks worst, because it has had the least time and because acquisition changed. Read a column down before concluding quality is falling.
A cohort of nobody breaks the averaging. A row starting at zero contributes nothing and is reported as zero retention rather than being silently dropped, which is worth noticing if a paste went wrong.
Counts, not percentages. Paste the number of customers remaining. A table of percentages will be read as counts and the first column will be treated as the cohort size, which makes everything relative to 100.
Three points do not make a curve. With four or five periods of data any projection is arithmetic dressed as a forecast. It is there to bound the argument, not to settle it.
Compatibility
Runs in the browser: the table is parsed and averaged locally, nothing is uploaded, and nothing is stored.
The parser accepts pipes, commas, semicolons, tabs and runs of spaces, strips thousands separators, and treats any part containing a letter as a label. That last rule exists because a cohort called “Jan 2026” was being read as a count of 2026, which shifted every period by one and made retention look better than it was. The test suite asserts it directly.
Rows of different lengths are expected rather than tolerated. Each period’s average divides by the number of cohorts that reached it, and that count is printed next to every figure so the averages are never mistaken for a like-for-like comparison.
The projection is a separate section with its method stated: the mean decline across the last three observed periods, applied forward, never allowed to rise above 1. Setting the horizon to zero removes it entirely and the observed figures stay.