Visualizers · Visualizer

SaaS Cohort Retention Heatmap

See retention by acquisition cohort and month since signup in a single heatmap, instead of scrolling a cohort table.

Cohort rows × Month since signup columns (%)

Cohort M0 M1 M2 M3 M4 M5
Jan 2026
Feb 2026
Mar 2026
Apr 2026
May 2026
Jun 2026

How It Works

A cohort retention table is one of the most useful things a SaaS business can build — and one of the hardest to actually read once it has more than a few rows. Rows blur together, and the eye can't easily tell a cohort that's retaining well from one that's leaking customers early.

This heatmap fixes that by coloring each cell instead of just printing a number. Rows are acquisition cohorts, columns are months since signup, and color intensity does the work your eye would otherwise have to do scanning a table.

Enter a retention percentage for each cohort at each month since signup. Month 0 is normally 100% (everyone who signed up that month is still active on day one) — leave later months blank or at 0 for cohorts that haven't reached that age yet.

Each cell is colored on a scale from your chosen minimum to maximum retention percentage — darker or more saturated typically means stronger retention, depending on the color scale.

The chart re-renders live as you edit any cell, so you can paste in numbers cohort by cohort and watch the pattern form.

How to Read the Chart

  • Read across a row to see one cohort's retention curve over time — a row that stays intensely colored across many columns is a cohort that's retaining well.
  • Read down a column to compare cohorts at the same age — for example, comparing every cohort's Month 3 retention side by side.
  • A visibly weaker (lighter) row or a sudden color drop partway across a row is where retention degraded — the heatmap doesn't explain why, only where.

Example

Reading a 6x6 grid

<built-in method values of dict object at 0x7537a9961d80>

A cohort acquired in March showing 88% at Month 1 versus another cohort's 82% is retaining meaningfully better in its first month

Interpretation

  • The single lowest cell value in a column shows which cohort is currently weakest at that age.
  • A consistent downward color gradient across every row's columns is expected — retention naturally declines with age. What's worth noticing is which rows decline faster than others.
  • This chart does not identify a cause for any cohort's performance — it only shows where the numbers you entered are strong or weak.

Methodology

Each cell's color is mapped linearly between the grid's minimum and maximum values (0% and 100% by default) using a single-hue intensity scale — no smoothing, interpolation, or estimation of missing cells is applied. What you enter is exactly what's rendered.

Limitations

This tool displays exactly the retention percentages you enter — it does not calculate retention from raw signup/cancellation data, and does not distinguish customer-count retention from revenue retention (use the Revenue Cohort Heatmap for the latter). Cells left at 0 for cohorts that haven't reached that age yet are treated as empty, not as 0% retention. Manual entry only in this version; CSV/file upload and export are not yet available.

Frequently Asked Questions

What should I enter for a cohort that hasn't reached Month 4 yet?

Leave those cells at 0. Any cell after Month 0 left at 0 is treated as 'this cohort hasn't reached that age yet' and is left uncolored rather than rendered as a 0% data point, so a young cohort won't be mistaken for one that collapsed to zero retention.

Should Month 0 always be 100%?

In most cohort retention definitions, yes — Month 0 represents everyone in the cohort before any time has passed for churn to occur. If your methodology defines Month 0 differently, enter whatever your own convention produces.

Is this customer retention or revenue retention?

This tool is for customer-count retention (what share of the cohort's customers are still active). For revenue retention by cohort, use the Revenue Cohort Heatmap instead.

Can I use this for weekly cohorts instead of monthly?

Yes — the column labels are just text; use whatever period makes sense for your business (weeks, quarters), as long as you're consistent across all rows.

Does the heatmap calculate an average retention curve across cohorts?

No — it displays each cohort's row independently. Averaging across cohorts would be a different, separate calculation.

Want this tracked automatically from real data?

Connect Stripe in read-only mode and Dnoise tracks your SaaS metrics automatically every month.

Connect Stripe — free →
Back to Visualizers