Skip to content

Churn Cohort Analyzer

Drop in an export of your subscriptions with a start date and, for those who left, a cancellation date. Reavlo reads it in your browser and shows monthly churn, how each signup cohort holds on, and what happened to your recurring revenue. Your file never leaves your browser.

  • Runs in your browser
  • Nothing is uploaded
  • Free, no sign-up
  • method v1.0.0
  • Updated Oct 2026

Input

Drop an export here, or choose a file

One row per subscription: a start date, a cancellation date (empty while active) and, optionally, the monthly amount.

Your file never leaves your browser

Leave on automatic unless the tool asks which comes first, the day or the month.

Add a subscriptions file to run the analysis.

Result

No subscriptions on the bench yet

Add a CSV with a start date and a cancellation date per subscription, or load an example to see what the analysis shows.

Something looks wrong? Tell us what looks wrong

Reads a CSV of subscriptions and shows how many customers you lose each month, how each signup cohort holds on over time, and how your recurring revenue moves. For anyone who sells a subscription and wants to see where customers leave.

How to use it

Export your subscriptions from your billing tool or database: one row per subscription, with the date it started and, for those that ended, the date it was cancelled. A monthly amount per subscription is optional and adds the revenue view. The analysis runs in your browser and the file is never uploaded.

  1. Export one row per subscription as a CSV and drop the file into the box.
  2. If the columns aren't recognised, choose which column is the start date, the cancellation date and the monthly amount.
  3. If the dates could be read day-first or month-first, choose the order.
  4. Press Run check, read the findings first, then the cohort table to see where in a customer's life they leave.

How Reavlo tests this

The file is decoded and read in your browser, in a background worker, so a large file doesn't freeze the page. Files up to 25 MB are accepted. In testing, an export of 150,000 subscriptions is read and analyzed in a few seconds on an ordinary laptop.

Reading the file. UTF-8 and UTF-16 files are recognised, as are comma, semicolon, tab and pipe separators. Dates are read when they are numeric: 2026-03-05, 05/03/2026 or 5.3.2026, with an optional time after the date. When the file has a day above 12 in the first or second position, the order is clear. When every date fits both readings, the tool doesn't guess: it asks you to choose before it shows any number. Amounts may use either decimal style (1,234.50 or 1.234,50) and may carry a currency sign. A subscription with no cancellation date counts as active. Rows that can't be read (a quote that never closes, the wrong number of columns, a missing or impossible date, a cancellation before the start, text where an amount should be) are listed with their line number and left out; the rest is still analyzed and the result says how many were skipped.

Definitions. Everything is counted by calendar month, and the as-of month is the month of the latest date in your file.

  • Active at the start of a month: started in an earlier month and not cancelled in an earlier month.
  • Churn of a month: subscriptions that were active at its start and were cancelled in it, divided by the number active at its start. A customer who starts and cancels in the same month is counted as started and left, but not in the churn rate, because they were not in the base.
  • Cohort: all subscriptions that started in one month. M1 is the share of the cohort still active at the start of the next month, M2 the month after, and so on, up to 36 months. M0 is always 100%.
  • Amounts: the monthly amount of each subscription, added when it starts and removed when it ends. They are shown in the units of your file and are not converted.

The as-of month is still running, so its churn is shown as partial and never judged.

Thresholds are fixed numbers, shown under every result so you can judge them:

  • High churn: in the latest 12 complete months, a month with at least 20 active subscriptions at its start and churn of 5% or more.
  • Early drop-off: a cohort of at least 10 subscriptions with under 60% still active 3 months after it started.
  • Shrinking revenue: in the latest 6 complete months, a month in which the amount that ended is larger than the amount that started. Only when the file has an amount column.
RuleSeverityWhat fails it
churn.monthly.highWarningIn one of the latest complete months, the share of active subscriptions that ended is at or above the declared threshold and the month had enough active subscriptions
churn.cohort.early-dropWarningA cohort of at least the declared size has a share still active, after the declared number of months, below the declared threshold
churn.mrr.net-negativeWarningIn one of the latest complete months, the amount of subscriptions that ended is larger than the amount of those that started
churn.rows.unreadableInfoA row has a broken quote, a different number of columns than the header, a missing or impossible date, an end before its start, or text where the amount should be

Limits. The tool works from your export alone. It doesn't know why anyone left, and it doesn't tell a cancellation from a failed payment unless your export does. It counts subscriptions, not customers, so a customer who cancels and returns appears twice. A plan change that is stored as a new row counts as one cancellation and one start. The matrix shows the latest 36 cohorts and the monthly table the latest 60 months. Small cohorts swing widely, which is why the rules ignore cohorts below the minimum size.

Questions

Is my file uploaded?

No. The file is read and analyzed in your browser, and nothing from it is sent to a server or stored. If Google Analytics is enabled on this site, it only records that the tool ran, never your file or what is in it.

What does the file need to contain?

One row per subscription with a start date. Add a cancellation date column, empty for active subscriptions, to see churn; without it nobody has left. A monthly amount column is optional and adds the revenue view. Other columns are ignored.

Why does the tool ask whether the day or the month comes first?

A date such as 03/02/2026 is 3 February in some countries and 2 March in others. When every date in your file could be read both ways, a wrong guess would move customers to the wrong month, so the tool waits for your choice.

How is monthly churn calculated?

It is the number of subscriptions cancelled in a month that were active at its start, divided by the number active at its start. The methodology above gives the exact definitions, including how the month the file ends in is treated.

Why is a row skipped?

A row is skipped when it can't be read as a subscription: a date that is missing or doesn't exist, a cancellation before the start, a broken quote or the wrong number of columns. The result lists the line numbers so you can check them in the file.