Business & Operations Tools

Cohort Retention Analyzer

Import customer activity or a cohort table, build logo and revenue retention by cohort, read it as a heatmap, and get weighted averages and exports - all in your browser.

  • Retention tables
  • Heatmap
  • Weighted curve and CSV
Runs in your browser

Everything you paste, type or drop is processed in this browser tab. It is not uploaded, logged, stored or sent to analytics.

Cohort retention workspace

Examples:
Input format

1 Data

Drop a CSV here or press to choose one (max 20 MB, 200,000 rows)

2 Retention by cohort

Paste data or load an example, then build the cohorts.

What the Cohort Retention Analyzer does

This analyser builds a cohort retention table from a customer activity file or a ready-made cohort matrix, shows it as a heatmap, and calculates weighted and simple average retention for each period - for customers (logo retention) and, when the file has revenue, for money (revenue retention).

Your file is read by the browser and never uploaded. Cells for periods the data has not reached yet are left blank rather than shown as zero, which is the mistake that makes most home-made cohort charts look worse than reality.

How to use it

  1. Choose the input format. For activity events, export one row per customer per active month (or per payment) with columns customer_id, signup_date, activity_date and revenue. For a matrix, paste cohort label, size and active counts per period.
  2. Paste the CSV or drop the file (up to 20 MB and 200,000 rows). Dates must be ISO, YYYY-MM-DD; the tool will not guess whether 04/03 is April or March.
  3. Pick monthly or weekly cohorts and whether to show logo retention, revenue retention or raw counts, then build the cohorts.
  4. Read the heatmap across a row to follow one cohort over time, and down a column to compare cohorts at the same age.
  5. Download the table as CSV for a spreadsheet or report.

Reading the results

Period 0 is the signup period, so logo retention there is normally 100%. The drop from period 0 to period 1 is usually the largest: it reflects onboarding more than long-term value.

The weighted average pools customers across cohorts, so big cohorts count more; the simple average treats each cohort equally. If they differ a lot, one large cohort behaves differently from the rest.

Late periods are observed only for your oldest cohorts. The tool tells you how many cohorts sit behind each average, so a promising period-11 figure built on one cohort is not over-read.

Worked example: two monthly cohorts worked by hand

Customers a and b sign up in January, c in February. a is active in January, February and March; b in January and March only; c in February and March. The latest activity is in March.

The January cohort (size 2) has 2, 1 and 2 active customers in periods 0, 1 and 2: 100%, 50%, 100%. The February cohort (size 1) is active in periods 0 and 1 and has not reached period 2, so that cell is blank.

Weighted period-1 retention is (1 + 1) / (2 + 1) = 66.7%; the simple average of 50% and 100% is 75%. If a paid 10, 10 and 20 and b paid 10 and 10, January's revenue retention in period 2 is 30 / 20 = 150%: upgrades can lift a cohort above where it started.

Formulas and scoring rules

Cohort
the month (or ISO week, Monday start) of a customer's earliest signup date; first activity if signup is blank
Period index
k = calendar months (or weeks) between the cohort and the activity date
Logo retention
retention(c, k) = distinct active customers in period k / cohort size
Revenue retention
revenue in period k / revenue in period 0
Weighted average
sum of active(k) / sum of sizes, over cohorts observed at period k
Simple average
mean of the cohort percentages at period kPercentages are shown to 1 decimal; the CSV keeps 6.

Limitations: what the result does not prove

  • Retention here means activity in a period (classic N-period retention). A customer who skips a month and returns is counted as retained again; that suits subscriptions and many apps but not every product.
  • It relies on the export being complete. Missing months of activity or customers deleted from the source system look exactly like churn.
  • Cohorts are defined by signup date only. Differences between cohorts may come from pricing, channel mix or seasonality, which the table cannot separate.
  • Up to 120 cohorts and 60 periods are shown; aggregate very large or long-running datasets first.

Privacy: where your data goes

Everything you paste, type or drop is processed in this browser tab. It is not uploaded, logged, stored or sent to analytics. Session recording and tag-manager scripts are switched off on this page.

Standards and sources

Frequently asked questions

What columns does a cohort analysis CSV need?

A customer or user id, the activity date and ideally the signup date and revenue. Names such as customer_id, signup_date, activity_date and revenue are detected automatically, as are common variants like user_id, order_date and amount.

Why are some cells in my retention table empty?

Those cohorts have not been customers long enough to reach that period in your data. Showing them as 0% would make recent cohorts look like total failures, so they are left blank and excluded from the averages.

Should I use weighted or simple average retention?

Use the weighted average to describe customers overall and the simple average to judge whether a typical cohort is improving. Reporting both guards against one unusually large cohort dominating the picture.

How is revenue retention different from logo retention?

Logo retention counts customers still active; revenue retention compares the money a cohort pays in later periods with what it paid at first. Revenue retention above 100% means expansion outweighs churn within that cohort.

Can I paste a cohort table from a spreadsheet instead of raw events?

Yes. Switch to the matrix format and paste one row per cohort: label, size, then active counts for period 0, 1, 2 and so on. Values ending in % are read as a share of the cohort size.

Is my customer data uploaded anywhere?

No. The file is read with the browser's file API and processed in JavaScript on this page. Nothing is sent to a2z.tools or anyone else, and nothing is stored after you close the tab.

Last reviewed by the A2Z.Tools team against the sources listed above.

Rate this tool

Was this tool useful? Your feedback helps us improve it.

No ratings yet — be the first to rate this tool.
Your rating (required)
0 / 2000

Please do not include passwords, payment details or other sensitive information.

Your feedback is sent privately to the A2Z.Tools team and will not be posted publicly.