Drop a target's subscription CSV and get the full 5-Risk Buyer-Side report — churn divergence, revenue concentration, annual-plan exposure, zombie MRR, cohort decay and an A–F revenue-quality grade. It runs entirely in your browser: the file is never uploaded.
…or click to choose a file. CSV, TSV or semicolon-delimited. Never uploaded.
Two layouts are accepted. Long format is richer and preferred:
| Column | Required | Example | What it unlocks |
|---|---|---|---|
customer_id | Yes | acct_1001 | Everything. Any stable identifier — id, email, company name. |
month | Yes* | 2025-03 | All churn, retention, cohort and trajectory lenses. Accepts 2025-03, 2025-03-01, 03/2025, Mar 2025. |
mrr | Yes | 240.00 | Everything. Currency symbols and thousands separators are tolerated. An arr column is divided by 12. |
plan / interval | Optional | annual | Annual-Plan Decay Projection, and observed annual-vs-monthly churn. |
last_active | Optional | 2025-03-28 | Zombie MRR Detector. |
renewal_date | Optional | 2025-11-01 | Renewal-cliff timing — how much MRR is up for renewal in the next 3, 6 and 12 months. |
* Wide format works too: one row per customer, one column per month (customer_id, plan, 2025-01, 2025-02, …). A single snapshot with no month at all still produces concentration and annual-plan exposure; churn, retention and cohort lenses need at least two months.
Logo churn and revenue churn are computed separately for every consecutive month pair, then compared. logo churn = customers lost ÷ customers at start. gross revenue churn = (MRR of lost customers + downgrade MRR) ÷ MRR at start. Divergence = revenue churn ÷ logo churn.
A divergence of 1.0 means churn is spread evenly across the book and the seller's headline logo-churn figure is honest. Above roughly 1.2 the churning accounts are larger than average, so the headline understates revenue erosion — the most common way a churn number flatters a target. Below 1.0 the business loses its smallest accounts, which is materially better news than the logo figure suggests.
Because gross revenue churn conventionally includes downgrades, a high divergence has two quite different causes, and the report separates them rather than assuming one. The cancellation and downgrade components are reported individually, and a size skew — average MRR of churned accounts ÷ average MRR of retained ones — isolates whether the departing customers were genuinely larger. Divergence driven by size skew is a concentration-of-loss problem; divergence driven by downgrades is a pricing, packaging or discount problem. They lead to different questions on the management call, so the finding text is conditioned on which one the data actually shows.
Measured on the most recent month: the share of MRR held by the largest 1, 3, 5 and 10 customers, the Herfindahl–Hirschman Index across the customer base (HHI = Σ share² × 10,000), and the number of customers needed to reach half of all MRR. HHI is reported because two books with the same top-5 share can have very different tails.
The share of MRR sitting on annual or multi-year terms, which is the MRR that cannot churn this month and therefore cannot appear in a monthly churn rate at all. Where a renewal or period-end date is present, MRR falling due in the next 3, 6 and 12 months is bucketed into a renewal cliff. Where enough history exists, the observed churn rate of annual customers is compared against monthly ones.
Two conventions, stated because they change the numbers. The renewal date is read from each customer's most recent row, not the earliest — billing exports carry the current period end on every row, so the earliest one is always in the past. And where an annual customer's recorded period-end has already passed, it is advanced in whole years until it falls after the anchor date, because an annual contract that renewed last year renews again this year. Non-annual rows with a past date are treated as unknown and excluded rather than guessed; the count of both adjustments is reported with the result.
This is reported as exposure, not a prediction. A concentration of renewals shortly after close is a structuring question — holdback, earn-out, escrow — not a forecast.
Customers still paying whose last recorded activity predates a threshold — 60 days by default, measured from the latest date in the file rather than today, so historical exports are handled correctly. Reported as a share of current MRR. Requires a last-active, last-login or last-seen column; without one the lens is disabled rather than estimated, and its weight is redistributed across the other components.
A weighted composite of the other lenses producing an A–F grade. Every band is published in the rubric table below, so the grade can be recomputed by hand from the component figures. Components whose input columns are missing are dropped and the remaining weights renormalised — a grade is never manufactured from absent data.
Three separate readings. A month-by-month decomposition of MRR movement into new, expansion, contraction, churned and reactivated. A cohort retention triangle, where each cohort is the month a customer first appears and each cell is that cohort's retained MRR as a share of its starting MRR. And the trend of MRR from cohorts at least twelve months old, held against the headline trend.
The third reading is the one that catches the pattern a headline number cannot show: flat total MRR produced by new sales replacing decaying older cohorts. The quick ratio — (new + expansion) ÷ (churned + contraction) — quantifies how hard the business has to run to stand still.
These bands are ChurnLens's rubric for buyer-side screening, not an industry standard. They are published so the grade is reproducible and arguable rather than a black box.
| Component | Weight | 100 | 85 | 65 | 40 | 15 |
|---|---|---|---|---|---|---|
| Gross revenue retention, annualised | 30% | ≥92% | 88–92% | 82–88% | 75–82% | <75% |
| Top-5 customer share of MRR | 20% | ≤15% | 15–25% | 25–40% | 40–55% | >55% |
| Churn divergence (rev ÷ logo churn) | 15% | ≤0.9 | 0.9–1.2 | 1.2–1.6 | 1.6–2.2 | >2.2 |
| Net revenue retention, annualised | 15% | ≥110% | 100–110% | 95–100% | 88–95% | <88% |
| MRR trend, last 6 months per month | 12% | ≥+2% | +0.5–2% | −0.5–+0.5% | −2–−0.5% | <−2% |
| Zombie MRR share | 8% | ≤2% | 2–5% | 5–10% | 10–20% | >20% |
Grade bands: A ≥85, B 75–84, C 65–74, D 55–64, F <55. A further 15-point deduction applies to the trajectory component when cohorts twelve months and older are declining while headline MRR is flat or rising — replacement revenue masking decay. No letter grade is issued at all when less than 45% of the rubric weight is computable from the file — a grade off a fifth of the rubric would read as authoritative and mean very little. Rubric version rq-1.0.
Where the report cites an outside comparison it uses one sourced figure: median gross revenue retention for private B2B SaaS is around 91%, splitting to roughly 90% below $25K ACV and 93% above it — SaaS Capital, 2023 B2B SaaS Retention Benchmarks. Every other threshold on this page is ChurnLens's own rubric. Deviating from a benchmark is not a verdict; it decides which questions get asked on the management call and how the deal is structured.
No. Parsing and every calculation run in your browser using the File API. No part of the file, and no figure derived from it, is transmitted anywhere. Open your browser's network panel while running an analysis and you will see no request carrying your data. This matters because a target's customer-level revenue ledger is usually NDA-bound.
Long format is richest: one row per customer per month with a customer identifier, a month and that month's MRR. Wide format — one row per customer, one column per month — works too. Optional columns unlock further lenses: plan or billing interval enables the Annual-Plan Decay Projection, a last-active date enables the Zombie MRR Detector, a renewal date sharpens renewal-cliff timing. A single snapshot still yields concentration and annual-plan exposure.
Churn divergence is revenue churn divided by logo churn. Lose 5% of customers carrying 5% of MRR and divergence is 1.0 — the headline is honest. Lose 5% of customers carrying 9% of MRR and divergence is 1.8: the seller's logo-churn figure understates revenue erosion by nearly two times. Above roughly 1.2, churn is concentrated in the larger accounts.
A weighted composite of six components — gross revenue retention 30%, concentration 20%, churn divergence 15%, net revenue retention 15%, MRR trajectory 12%, zombie MRR 8%. Every band is published in the rubric table above, so the grade is reproducible by hand. Missing components are dropped and the remaining weights renormalised, and no grade is issued at all below 45% rubric coverage. The rubric is ChurnLens's own, not an industry standard.
Yes. The HTML report and the Markdown summary both carry the period range, row and customer counts and the rubric version, so a reviewer can trace every figure. Treat it as a screening and question-generation instrument, not a quality-of-earnings opinion — it reads exactly the ledger you give it and cannot detect revenue that was never in the export.
None imposed. Because the work is local the practical ceiling is your machine's memory; a few hundred thousand rows parse in seconds. Nothing is truncated silently — the row count, customer count and period range actually read are reported back to you.
This tool runs the same six lenses on the ledger you already hold. The paid buyer-side report adds the work a tool cannot do: reconciling the ledger against bank and Stripe payouts, chasing the gaps the export leaves out, checking the cohort story against the CIM's claims, and writing the findings up as diligence questions for a specific deal.