Resource
·
Retention
How to read a retention curve

The short answer
A retention curve that flattens means a business; one that keeps falling means a leak. How to draw it from the data you already have, where to read it, and the two mistakes that make a good curve look bad.
Published
Oct 2, 2026
·
Updated
Oct 2, 2026
What data do you need?
Three columns. Nothing else.
An identifier for the person or the account.
The date they signed up or first paid, one date per identifier.
The date of each retention event, one row per event.
Every product has this somewhere. A Stripe or Razorpay export gives you columns 1 and 2. The application database, an event tool, GA4's BigQuery export or a HubSpot report gives you column 3. If the only event you can export today is a login, start there and replace it later.
Which event counts as retention?
The action that means the person got what they came for. Not a login, not a page view, not an email open. For a reporting product it is a report run. For a marketplace it is a completed order. For a messaging product it is a message sent. For a product sold to a team it is often the core action performed by anyone in the account, with a second curve for the account's named champion.
Pick one, write it on the chart, and never change it mid-quarter without redrawing the history. A changed definition and a changed product look identical on a curve.
How do you build it in a spreadsheet?
Thirty minutes, once you have the three columns.
Pick the period length. A day for a product used daily, a week for one used weekly, a month for anything bought on a contract. Using months for a daily product hides everything interesting in the first month.
Assign each identifier a cohort: the period in which they signed up.
Give each event row a period index: the whole number of periods between that identifier's signup date and the event date. Signup period is 0.
Pivot it. Rows are cohorts, columns are period index, values are the count of distinct identifiers. You now have a triangle: the oldest cohort stretches furthest to the right, the newest has one or two columns.
Divide each row by that cohort's size to turn counts into percentages.
Plot the line. Either one line per cohort, which is the honest version, or an average across cohorts that have complete data for the period in question.
Here is the shape of it, with the number of cohorts behind each point written out, which is the habit that saves you from the second mistake below.
Cohort | P0 | P1 | P2 | P3 | P4 | P5 | P6 |
|---|---|---|---|---|---|---|---|
Jan | 100% | 54% | 44% | 39% | 37% | 36% | 36% |
Feb | 100% | 57% | 46% | 41% | 38% | 37% | |
Mar | 100% | 55% | 45% | 40% | 38% | ||
Apr | 100% | 61% | 49% | 43% | |||
May | 100% | 58% | 47% | ||||
Jun | 100% | 60% | |||||
Cohorts behind the average | 6 | 6 | 5 | 4 | 3 | 2 | 1 |
Bounded, bracket or unbounded?
Three definitions get called retention, they give different numbers from the same data, and mixing them is why two people in the same company quote different figures.
Bounded, sometimes called N-day: did the event on exactly that day. Honest and very noisy for anything not used daily. Use it for products with a daily habit.
Bracket, sometimes called range: did the event at any point inside the window, so week 2 means days 8 to 14. This is the right default for most products and the one I use unless there is a reason not to.
Unbounded, sometimes called rolling: did the event on that day or any day after it. The line can only ever fall slowly, which makes it flattering and makes it the right choice for products used a few times a year.
Write which one you used next to the chart title. A curve with no definition on it will be argued about within a week.
What does each shape mean?
Falling toward zero. People try the product and leave. No amount of acquisition fixes this, and spending while the curve looks like this is the most expensive mistake in growth.
Falling, then flat. A business. The height of the flat part is how much of each cohort the product actually holds. A curve that flattens at 20% with cheap acquisition is a better company than one that flattens at 45% with expensive acquisition, which is why the curve has to be read next to payback in the Revenue stage.
A cliff into period 1, then flat. Almost always a signup-quality or first-session problem rather than a retention problem. The flat part tells you the product works for the people who get to it. Take the cliff to the Activation stage.
Flat, then rising. The smile. Real, and rarer than the internet suggests. Check first whether lapsed users who came back are being counted into their original cohort, which manufactures a smile out of nothing.
A step down at period 12. The shape of annual contracts rather than of behavior. Read monthly and annual plans as separate curves.
Which two mistakes make a good curve look bad?
One: signups who never activated are in the cohort. If a quarter of your signups never reach the product's first value, every cohort loses that quarter between period 0 and period 1, forever, and the curve looks like it collapses. Draw two curves side by side: all signups, and only the people who reached the activation event. The gap between them is your activation problem and the second line is your retention. Teams that draw only the first line spend quarters on lifecycle messaging for a problem that lives in the signup flow.
Two: immature cohorts are averaged into the tail. This is the one I see most often, and it is quietly severe. If the average at period 5 includes cohorts that are only three periods old, those cohorts contribute a blank that spreadsheet software may treat as a zero, or they get silently excluded in a way nobody checks. Either way the right-hand end of the line bends down and the curve appears never to flatten. The fix is in the table above: write the number of cohorts behind every point, and stop the average where the count gets thin. A tail based on one cohort is one cohort's story, not a trend.
Two smaller ones. Counting logins rather than the value event flatters the start of the curve and explains nothing. And if one cohort is three times the size of the others, because of a campaign month, show the cohorts separately rather than averaged.
What do the benchmarks say?
Read them as the altitude of your category, not as a target.
Lenny Rachitsky's ranges, collected from 20 growth leads in June 2020, put "good" 6-month user retention at around 25% for consumer social, 40% for consumer SaaS, 60% for SMB and mid-market SaaS and 75% for enterprise SaaS, with "great" roughly 20 points higher. ChartMogul's 2023 report across more than 2,100 SaaS businesses put top-quartile net revenue retention at 94% between $1M and $3M of ARR and above 105% past $15M. AppsFlyer data reported by Braze in July 2026 put mobile day 30 retention across categories at roughly 1% to 15%, which is a reminder that a consumer app and a B2B tool should not be compared at all.
How I use it
A consumer app I worked with showed me a retention chart in a board deck that fell from 100% to 8% over six months and kept falling. The founders had concluded the product was not sticky and were about to rebuild onboarding for the third time.
I asked for the raw export and rebuilt it. Two things were wrong, and neither was the product. Their average included every cohort regardless of age, so the right-hand end of the line was carried by one cohort with 400 users while the left-hand end was carried by eleven cohorts with 40,000. And the cohort was every signup, including the 38% who never completed the one setup step the app needed to do anything.
Redrawn as bracket retention, on activated users only, with the average stopped where fewer than three cohorts had data, the line fell to about 31% by month 3 and sat between 29% and 31% from month 4 to month 7. It had been flattening for a year and nobody could see it.
The real problem was the 38%, which is an activation problem with a completely different fix and a much shorter one. We spent the next six weeks on the setup step rather than on a rebuild. The thing I would do differently: I would have asked for the raw export in the first meeting instead of the second, because the chart in the deck had already set the agenda.
Takeaways
Pull the three columns today and build the triangle in a spreadsheet, with the number of cohorts written under every point.
Draw two lines, all signups and activated users only, and treat the gap between them as an activation problem rather than a retention one.
Write the definition you used, bounded, bracket or unbounded, on the chart, and refuse to compare curves that do not say.
Related
Up to the stage
More from this stage
Questions
What is a good retention curve?
One that flattens. A line that settles at 20% is a business you can grow; a line that keeps falling is not, however high it starts.
How much data do you need before the curve means anything?
Should retention be measured on users or on revenue?
Sources
Lenny Rachitsky, "What is good retention?", Lenny's Newsletter, June 9, 2020, with ranges collected from 20 growth leads, link
ChartMogul, SaaS Retention Report 2023, published November 1, 2023, from more than 2,100 SaaS businesses, report
AppsFlyer data reported by Braze, "App retention: how to measure, benchmark, and improve it", July 24, 2026, link