[{"data":1,"prerenderedAt":1008},["ShallowReactive",2],{"content-query-l5HUYe5rvn":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"heading":8,"prompt":10,"tags":14,"files":16,"nav":6,"presets":17,"gallery":35,"body":37,"_type":1001,"_id":1002,"_source":1003,"_file":1004,"_stem":1005,"_extension":1006,"sitemap":1007},"/tools/cohort-retention","tools",false,"","Cohort Retention Analysis","Analyze cohort retention online from Excel or CSV data. Build retention heatmaps, benchmark churn, and compare cohorts with AI.",{"prefix":11,"label":12,"placeholder":13},"Analyze cohort retention","Describe your cohort definition and retention metric","e.g. monthly user cohorts defined by signup date; retention = active in each subsequent month; retention heatmap; average retention curve; compare Jan vs Feb cohort; Day-1, Day-7, Day-30 benchmarks",[15],"statistics",true,[18,24,29],{"label":19,"prompt":20,"dataset_url":21,"dataset_title":22,"dataset_citation":23},"Monthly User Retention Heatmap","Cohort retention analysis: define cohorts by signup month; retention = any activity in each subsequent month; retention heatmap (cohorts × months since signup); average retention curve; Day-1/Week-1/Month-1/Month-3 retention benchmarks; identify cohorts with best and worst 3-month retention","https://data.cdc.gov/api/views/iuq5-y9ct/rows.csv?accessType=DOWNLOAD","NHANES Mental Health Assessment","CDC",{"label":25,"prompt":26,"dataset_url":27,"dataset_title":28,"dataset_citation":23},"Treatment Adherence Cohorts","Clinical cohort retention: define cohorts by treatment start quarter; retention = adherent at each monthly follow-up; retention heatmap; average adherence curve; compare cohorts started in different quarters; identify the month with steepest adherence drop","https://data.cdc.gov/api/views/dppn-5tm3/rows.csv?accessType=DOWNLOAD","NCHS Health and Nutrition Examination Survey",{"label":30,"prompt":31,"dataset_url":32,"dataset_title":33,"dataset_citation":34},"Annual Enrollment Cohorts","Longitudinal cohort retention: define cohorts by enrollment year; retention = enrolled in each subsequent year; retention heatmap; average retention curve; survival-style plot of time-to-dropout; compare cohorts with line chart","https://ourworldindata.org/grapher/pisa-test-score-mean-performance-on-the-reading-scale.csv","PISA Mean Reading Performance Scores","Our World in Data",[36],"/img/tools/cohort-retention.png",{"type":38,"children":39,"toc":990},"root",[40,49,82,101,113,119,177,183,193,348,358,488,493,499,649,655,812,818,872,878,915,921,959,980],{"type":41,"tag":42,"props":43,"children":45},"element","h2",{"id":44},"what-is-cohort-retention-analysis",[46],{"type":47,"value":48},"text","What Is Cohort Retention Analysis?",{"type":41,"tag":50,"props":51,"children":52},"p",{},[53,59,61,66,68,73,75,80],{"type":41,"tag":54,"props":55,"children":56},"strong",{},[57],{"type":47,"value":58},"Cohort retention analysis",{"type":47,"value":60}," tracks groups of users (or patients, customers, or students) who share a common starting event — the ",{"type":41,"tag":54,"props":62,"children":63},{},[64],{"type":47,"value":65},"cohort",{"type":47,"value":67}," — and measures what fraction remain active, engaged, or retained at each subsequent time period. The defining feature is that all members of a cohort share the same starting point: users who signed up in January form the January cohort, patients who started treatment in Q1 form the Q1 cohort. By tracking each cohort separately rather than aggregating all users together, retention analysis separates the ",{"type":41,"tag":54,"props":69,"children":70},{},[71],{"type":47,"value":72},"age effect",{"type":47,"value":74}," (how long someone has been with a product or treatment) from the ",{"type":41,"tag":54,"props":76,"children":77},{},[78],{"type":47,"value":79},"calendar effect",{"type":47,"value":81}," (whether recent months were better or worse overall), enabling genuine comparison of product versions, acquisition channels, or intervention cohorts over time.",{"type":41,"tag":50,"props":83,"children":84},{},[85,87,92,94,99],{"type":47,"value":86},"The signature output of cohort retention analysis is the ",{"type":41,"tag":54,"props":88,"children":89},{},[90],{"type":47,"value":91},"retention heatmap",{"type":47,"value":93},": a matrix where each row is a cohort, each column is a time period since cohort formation (Period 0, 1, 2, …), and each cell contains the retention rate (% of the original cohort still active). The diagonal empty triangle in the bottom-right reflects the fact that newer cohorts haven't had time to accumulate later-period data. Color gradients — green for high retention, red for low — make it visually immediate to spot which cohorts are performing well and at which periods retention drops most sharply. A complementary ",{"type":41,"tag":54,"props":95,"children":96},{},[97],{"type":47,"value":98},"retention curve",{"type":47,"value":100}," plots the average across cohorts, showing the overall shape of engagement decay over time.",{"type":41,"tag":50,"props":102,"children":103},{},[104,106,111],{"type":47,"value":105},"A concrete example: a SaaS product tracks 8 monthly user cohorts. The January cohort shows 62% retention at Month 1, 44% at Month 3, and 27% at Month 7. The May cohort — acquired after a product improvement — shows 70% at Month 1 and 52% at Month 3, suggesting the product change meaningfully improved early retention. The average retention curve flattens around Month 5 at ~23%, indicating a \"power user\" floor — a stable segment who remain active long-term. ",{"type":41,"tag":54,"props":107,"children":108},{},[109],{"type":47,"value":110},"Day-30 retention",{"type":47,"value":112}," (the Month 1 cell) is typically the most critical benchmark for SaaS: above 40% is considered good, above 60% excellent.",{"type":41,"tag":42,"props":114,"children":116},{"id":115},"how-it-works",[117],{"type":47,"value":118},"How It Works",{"type":41,"tag":120,"props":121,"children":122},"ol",{},[123,134,150],{"type":41,"tag":124,"props":125,"children":126},"li",{},[127,132],{"type":41,"tag":54,"props":128,"children":129},{},[130],{"type":47,"value":131},"Upload your data",{"type":47,"value":133}," — provide a CSV or Excel file with individual-level event logs (one row per user-period activity) or a pre-built cohort summary matrix (rows = cohorts, columns = periods, cells = retention rates or active counts).",{"type":41,"tag":124,"props":135,"children":136},{},[137,142,144],{"type":41,"tag":54,"props":138,"children":139},{},[140],{"type":47,"value":141},"Describe the analysis",{"type":47,"value":143}," — e.g. ",{"type":41,"tag":145,"props":146,"children":147},"em",{},[148],{"type":47,"value":149},"\"monthly cohorts defined by signup_month column; retention = any login in each subsequent month; retention heatmap; average retention curve; compare top and bottom cohorts\"",{"type":41,"tag":124,"props":151,"children":152},{},[153,158,160,167,169,175],{"type":41,"tag":54,"props":154,"children":155},{},[156],{"type":47,"value":157},"Get full results",{"type":47,"value":159}," — the AI writes Python code using ",{"type":41,"tag":161,"props":162,"children":164},"a",{"href":163},"https://pandas.pydata.org/",[165],{"type":47,"value":166},"pandas",{"type":47,"value":168}," and ",{"type":41,"tag":161,"props":170,"children":172},{"href":171},"https://plotly.com/python/",[173],{"type":47,"value":174},"Plotly",{"type":47,"value":176}," to build the cohort matrix, compute retention rates, generate the heatmap and retention curve, and annotate key benchmark periods",{"type":41,"tag":42,"props":178,"children":180},{"id":179},"required-data-format",[181],{"type":47,"value":182},"Required Data Format",{"type":41,"tag":50,"props":184,"children":185},{},[186,191],{"type":41,"tag":54,"props":187,"children":188},{},[189],{"type":47,"value":190},"Option 1 — Event log",{"type":47,"value":192}," (one row per user per active period):",{"type":41,"tag":194,"props":195,"children":196},"table",{},[197,221],{"type":41,"tag":198,"props":199,"children":200},"thead",{},[201],{"type":41,"tag":202,"props":203,"children":204},"tr",{},[205,211,216],{"type":41,"tag":206,"props":207,"children":208},"th",{},[209],{"type":47,"value":210},"Column",{"type":41,"tag":206,"props":212,"children":213},{},[214],{"type":47,"value":215},"Description",{"type":41,"tag":206,"props":217,"children":218},{},[219],{"type":47,"value":220},"Example",{"type":41,"tag":222,"props":223,"children":224},"tbody",{},[225,253,281,307],{"type":41,"tag":202,"props":226,"children":227},{},[228,239,244],{"type":41,"tag":229,"props":230,"children":231},"td",{},[232],{"type":41,"tag":233,"props":234,"children":236},"code",{"className":235},[],[237],{"type":47,"value":238},"user_id",{"type":41,"tag":229,"props":240,"children":241},{},[242],{"type":47,"value":243},"Unique user identifier",{"type":41,"tag":229,"props":245,"children":246},{},[247],{"type":41,"tag":233,"props":248,"children":250},{"className":249},[],[251],{"type":47,"value":252},"U1234",{"type":41,"tag":202,"props":254,"children":255},{},[256,265,270],{"type":41,"tag":229,"props":257,"children":258},{},[259],{"type":41,"tag":233,"props":260,"children":262},{"className":261},[],[263],{"type":47,"value":264},"cohort_period",{"type":41,"tag":229,"props":266,"children":267},{},[268],{"type":47,"value":269},"Period when user joined",{"type":41,"tag":229,"props":271,"children":272},{},[273,279],{"type":41,"tag":233,"props":274,"children":276},{"className":275},[],[277],{"type":47,"value":278},"2024-01",{"type":47,"value":280}," (signup month)",{"type":41,"tag":202,"props":282,"children":283},{},[284,293,298],{"type":41,"tag":229,"props":285,"children":286},{},[287],{"type":41,"tag":233,"props":288,"children":290},{"className":289},[],[291],{"type":47,"value":292},"active_period",{"type":41,"tag":229,"props":294,"children":295},{},[296],{"type":47,"value":297},"Period when user was active",{"type":41,"tag":229,"props":299,"children":300},{},[301],{"type":41,"tag":233,"props":302,"children":304},{"className":303},[],[305],{"type":47,"value":306},"2024-03",{"type":41,"tag":202,"props":308,"children":309},{},[310,319,324],{"type":41,"tag":229,"props":311,"children":312},{},[313],{"type":41,"tag":233,"props":314,"children":316},{"className":315},[],[317],{"type":47,"value":318},"segment",{"type":41,"tag":229,"props":320,"children":321},{},[322],{"type":47,"value":323},"Optional: grouping variable",{"type":41,"tag":229,"props":325,"children":326},{},[327,333,335,341,342],{"type":41,"tag":233,"props":328,"children":330},{"className":329},[],[331],{"type":47,"value":332},"mobile",{"type":47,"value":334},", ",{"type":41,"tag":233,"props":336,"children":338},{"className":337},[],[339],{"type":47,"value":340},"paid",{"type":47,"value":334},{"type":41,"tag":233,"props":343,"children":345},{"className":344},[],[346],{"type":47,"value":347},"organic",{"type":41,"tag":50,"props":349,"children":350},{},[351,356],{"type":41,"tag":54,"props":352,"children":353},{},[354],{"type":47,"value":355},"Option 2 — Pre-built matrix",{"type":47,"value":357}," (one row per cohort):",{"type":41,"tag":194,"props":359,"children":360},{},[361,379],{"type":41,"tag":198,"props":362,"children":363},{},[364],{"type":41,"tag":202,"props":365,"children":366},{},[367,371,375],{"type":41,"tag":206,"props":368,"children":369},{},[370],{"type":47,"value":210},{"type":41,"tag":206,"props":372,"children":373},{},[374],{"type":47,"value":215},{"type":41,"tag":206,"props":376,"children":377},{},[378],{"type":47,"value":220},{"type":41,"tag":222,"props":380,"children":381},{},[382,414,440],{"type":41,"tag":202,"props":383,"children":384},{},[385,393,398],{"type":41,"tag":229,"props":386,"children":387},{},[388],{"type":41,"tag":233,"props":389,"children":391},{"className":390},[],[392],{"type":47,"value":65},{"type":41,"tag":229,"props":394,"children":395},{},[396],{"type":47,"value":397},"Cohort label",{"type":41,"tag":229,"props":399,"children":400},{},[401,407,408],{"type":41,"tag":233,"props":402,"children":404},{"className":403},[],[405],{"type":47,"value":406},"Jan 2024",{"type":47,"value":334},{"type":41,"tag":233,"props":409,"children":411},{"className":410},[],[412],{"type":47,"value":413},"Q1 2024",{"type":41,"tag":202,"props":415,"children":416},{},[417,426,431],{"type":41,"tag":229,"props":418,"children":419},{},[420],{"type":41,"tag":233,"props":421,"children":423},{"className":422},[],[424],{"type":47,"value":425},"cohort_size",{"type":41,"tag":229,"props":427,"children":428},{},[429],{"type":47,"value":430},"Users who started",{"type":41,"tag":229,"props":432,"children":433},{},[434],{"type":41,"tag":233,"props":435,"children":437},{"className":436},[],[438],{"type":47,"value":439},"1240",{"type":41,"tag":202,"props":441,"children":442},{},[443,461,466],{"type":41,"tag":229,"props":444,"children":445},{},[446,452,453,459],{"type":41,"tag":233,"props":447,"children":449},{"className":448},[],[450],{"type":47,"value":451},"period_0",{"type":47,"value":334},{"type":41,"tag":233,"props":454,"children":456},{"className":455},[],[457],{"type":47,"value":458},"period_1",{"type":47,"value":460},", …",{"type":41,"tag":229,"props":462,"children":463},{},[464],{"type":47,"value":465},"Retention count or % per period",{"type":41,"tag":229,"props":467,"children":468},{},[469,474,475,481,482],{"type":41,"tag":233,"props":470,"children":472},{"className":471},[],[473],{"type":47,"value":439},{"type":47,"value":334},{"type":41,"tag":233,"props":476,"children":478},{"className":477},[],[479],{"type":47,"value":480},"812",{"type":47,"value":334},{"type":41,"tag":233,"props":483,"children":485},{"className":484},[],[486],{"type":47,"value":487},"540",{"type":41,"tag":50,"props":489,"children":490},{},[491],{"type":47,"value":492},"For event logs, the AI will build the cohort matrix by counting how many users from each cohort were active in each subsequent period. Specify whether \"active\" means any event, a specific event type, or a purchase.",{"type":41,"tag":42,"props":494,"children":496},{"id":495},"interpreting-the-results",[497],{"type":47,"value":498},"Interpreting the Results",{"type":41,"tag":194,"props":500,"children":501},{},[502,518],{"type":41,"tag":198,"props":503,"children":504},{},[505],{"type":41,"tag":202,"props":506,"children":507},{},[508,513],{"type":41,"tag":206,"props":509,"children":510},{},[511],{"type":47,"value":512},"Output",{"type":41,"tag":206,"props":514,"children":515},{},[516],{"type":47,"value":517},"What it means",{"type":41,"tag":222,"props":519,"children":520},{},[521,537,553,569,585,601,617,633],{"type":41,"tag":202,"props":522,"children":523},{},[524,532],{"type":41,"tag":229,"props":525,"children":526},{},[527],{"type":41,"tag":54,"props":528,"children":529},{},[530],{"type":47,"value":531},"Retention heatmap",{"type":41,"tag":229,"props":533,"children":534},{},[535],{"type":47,"value":536},"Matrix of retention % — rows = cohorts, columns = periods since start; green = high, red = low",{"type":41,"tag":202,"props":538,"children":539},{},[540,548],{"type":41,"tag":229,"props":541,"children":542},{},[543],{"type":41,"tag":54,"props":544,"children":545},{},[546],{"type":47,"value":547},"Day-1/Week-1/Month-1 retention",{"type":41,"tag":229,"props":549,"children":550},{},[551],{"type":47,"value":552},"% of cohort active in the first return period — the most important leading indicator of long-term retention",{"type":41,"tag":202,"props":554,"children":555},{},[556,564],{"type":41,"tag":229,"props":557,"children":558},{},[559],{"type":41,"tag":54,"props":560,"children":561},{},[562],{"type":47,"value":563},"Average retention curve",{"type":41,"tag":229,"props":565,"children":566},{},[567],{"type":47,"value":568},"Mean retention % across all cohorts at each period — shows the typical engagement decay shape",{"type":41,"tag":202,"props":570,"children":571},{},[572,580],{"type":41,"tag":229,"props":573,"children":574},{},[575],{"type":41,"tag":54,"props":576,"children":577},{},[578],{"type":47,"value":579},"Cohort size",{"type":41,"tag":229,"props":581,"children":582},{},[583],{"type":47,"value":584},"Number of users who entered each cohort — smaller cohorts have noisier retention estimates",{"type":41,"tag":202,"props":586,"children":587},{},[588,596],{"type":41,"tag":229,"props":589,"children":590},{},[591],{"type":41,"tag":54,"props":592,"children":593},{},[594],{"type":47,"value":595},"Churn rate",{"type":41,"tag":229,"props":597,"children":598},{},[599],{"type":47,"value":600},"1 − retention rate — fraction of users lost each period",{"type":41,"tag":202,"props":602,"children":603},{},[604,612],{"type":41,"tag":229,"props":605,"children":606},{},[607],{"type":41,"tag":54,"props":608,"children":609},{},[610],{"type":47,"value":611},"Retention plateau",{"type":41,"tag":229,"props":613,"children":614},{},[615],{"type":47,"value":616},"The asymptote of the retention curve — the \"power user\" floor who remains indefinitely",{"type":41,"tag":202,"props":618,"children":619},{},[620,628],{"type":41,"tag":229,"props":621,"children":622},{},[623],{"type":41,"tag":54,"props":624,"children":625},{},[626],{"type":47,"value":627},"Cohort comparison",{"type":41,"tag":229,"props":629,"children":630},{},[631],{"type":47,"value":632},"Retention curves overlaid for multiple cohorts — reveals whether product changes improved retention",{"type":41,"tag":202,"props":634,"children":635},{},[636,644],{"type":41,"tag":229,"props":637,"children":638},{},[639],{"type":41,"tag":54,"props":640,"children":641},{},[642],{"type":47,"value":643},"Period-over-period change",{"type":41,"tag":229,"props":645,"children":646},{},[647],{"type":47,"value":648},"How retention at a given age (e.g., Month 3) has changed across successive cohort vintages",{"type":41,"tag":42,"props":650,"children":652},{"id":651},"example-prompts",[653],{"type":47,"value":654},"Example Prompts",{"type":41,"tag":194,"props":656,"children":657},{},[658,674],{"type":41,"tag":198,"props":659,"children":660},{},[661],{"type":41,"tag":202,"props":662,"children":663},{},[664,669],{"type":41,"tag":206,"props":665,"children":666},{},[667],{"type":47,"value":668},"Scenario",{"type":41,"tag":206,"props":670,"children":671},{},[672],{"type":47,"value":673},"What to type",{"type":41,"tag":222,"props":675,"children":676},{},[677,694,711,727,744,761,778,795],{"type":41,"tag":202,"props":678,"children":679},{},[680,685],{"type":41,"tag":229,"props":681,"children":682},{},[683],{"type":47,"value":684},"Basic heatmap",{"type":41,"tag":229,"props":686,"children":687},{},[688],{"type":41,"tag":233,"props":689,"children":691},{"className":690},[],[692],{"type":47,"value":693},"monthly cohorts defined by signup_month; retention = any activity; heatmap with % in each cell; color green=high, red=low",{"type":41,"tag":202,"props":695,"children":696},{},[697,702],{"type":41,"tag":229,"props":698,"children":699},{},[700],{"type":47,"value":701},"Average curve",{"type":41,"tag":229,"props":703,"children":704},{},[705],{"type":41,"tag":233,"props":706,"children":708},{"className":707},[],[709],{"type":47,"value":710},"average retention curve across all cohorts; mark Day-1, Week-1, Month-1, Month-3 with vertical lines",{"type":41,"tag":202,"props":712,"children":713},{},[714,718],{"type":41,"tag":229,"props":715,"children":716},{},[717],{"type":47,"value":627},{"type":41,"tag":229,"props":719,"children":720},{},[721],{"type":41,"tag":233,"props":722,"children":724},{"className":723},[],[725],{"type":47,"value":726},"overlay retention curves for Jan, Apr, Jul cohorts; line chart; which cohort has best Month-3 retention?",{"type":41,"tag":202,"props":728,"children":729},{},[730,735],{"type":41,"tag":229,"props":731,"children":732},{},[733],{"type":47,"value":734},"Churn analysis",{"type":41,"tag":229,"props":736,"children":737},{},[738],{"type":41,"tag":233,"props":739,"children":741},{"className":740},[],[742],{"type":47,"value":743},"compute monthly churn rate (1 − step-retention) for each cohort; heatmap of churn rates; average churn curve",{"type":41,"tag":202,"props":745,"children":746},{},[747,752],{"type":41,"tag":229,"props":748,"children":749},{},[750],{"type":47,"value":751},"Segment breakdown",{"type":41,"tag":229,"props":753,"children":754},{},[755],{"type":41,"tag":233,"props":756,"children":758},{"className":757},[],[759],{"type":47,"value":760},"retention heatmap separately for mobile and desktop users; compare Day-30 retention by segment",{"type":41,"tag":202,"props":762,"children":763},{},[764,769],{"type":41,"tag":229,"props":765,"children":766},{},[767],{"type":47,"value":768},"Retention by acquisition",{"type":41,"tag":229,"props":770,"children":771},{},[772],{"type":41,"tag":233,"props":773,"children":775},{"className":774},[],[776],{"type":47,"value":777},"split cohorts by acquisition channel (organic, paid, social); compare retention curves; which channel retains best?",{"type":41,"tag":202,"props":779,"children":780},{},[781,786],{"type":41,"tag":229,"props":782,"children":783},{},[784],{"type":47,"value":785},"Power users",{"type":41,"tag":229,"props":787,"children":788},{},[789],{"type":41,"tag":233,"props":790,"children":792},{"className":791},[],[793],{"type":47,"value":794},"what % of users from each cohort are still active after 6 months? plot as bar chart by cohort vintage",{"type":41,"tag":202,"props":796,"children":797},{},[798,803],{"type":41,"tag":229,"props":799,"children":800},{},[801],{"type":47,"value":802},"LTV estimate",{"type":41,"tag":229,"props":804,"children":805},{},[806],{"type":41,"tag":233,"props":807,"children":809},{"className":808},[],[810],{"type":47,"value":811},"estimate cumulative sessions per user over 12 months from retention curve; multiply by revenue per session",{"type":41,"tag":42,"props":813,"children":815},{"id":814},"assumptions-to-check",[816],{"type":47,"value":817},"Assumptions to Check",{"type":41,"tag":819,"props":820,"children":821},"ul",{},[822,832,842,852,862],{"type":41,"tag":124,"props":823,"children":824},{},[825,830],{"type":41,"tag":54,"props":826,"children":827},{},[828],{"type":47,"value":829},"Consistent cohort definition",{"type":47,"value":831}," — all cohorts must be defined by the same event (first purchase, signup date, treatment start) applied consistently; if some cohorts are defined by first login and others by first purchase, the cohorts are not comparable",{"type":41,"tag":124,"props":833,"children":834},{},[835,840],{"type":41,"tag":54,"props":836,"children":837},{},[838],{"type":47,"value":839},"Activity definition",{"type":47,"value":841}," — define precisely what counts as \"retained\": any login, a qualifying action (purchase, session ≥ 2 minutes), or a specific event; different definitions produce dramatically different retention rates and are not interchangeable across reports",{"type":41,"tag":124,"props":843,"children":844},{},[845,850],{"type":41,"tag":54,"props":846,"children":847},{},[848],{"type":47,"value":849},"Cohort size adequacy",{"type":47,"value":851}," — small cohorts produce noisy retention estimates; a cohort of 50 users will show large random fluctuations between periods; as a rule of thumb, cohorts of \u003C 100 should be interpreted cautiously, and cohorts of \u003C 30 should be merged or excluded",{"type":41,"tag":124,"props":853,"children":854},{},[855,860],{"type":41,"tag":54,"props":856,"children":857},{},[858],{"type":47,"value":859},"Calendar vs age effects",{"type":47,"value":861}," — a dip in Month 3 retention across all cohorts simultaneously may reflect a seasonal calendar effect (e.g., summer holiday) rather than a product aging effect; look for patterns that are consistent across cohort vintages vs. patterns that appear at the same calendar month for all cohorts",{"type":41,"tag":124,"props":863,"children":864},{},[865,870],{"type":41,"tag":54,"props":866,"children":867},{},[868],{"type":47,"value":869},"Right-censoring of recent cohorts",{"type":47,"value":871}," — newer cohorts have missing later-period data (the triangular gap in the heatmap); never compare the average Month-6 retention of January cohorts to that of May cohorts — the May cohort hasn't reached Month 6 yet; compute averages only over the periods available for all compared cohorts",{"type":41,"tag":42,"props":873,"children":875},{"id":874},"related-tools",[876],{"type":47,"value":877},"Related Tools",{"type":41,"tag":50,"props":879,"children":880},{},[881,883,889,891,897,899,905,907,913],{"type":47,"value":882},"Use the ",{"type":41,"tag":161,"props":884,"children":886},{"href":885},"/tools/survival-curve",[887],{"type":47,"value":888},"Survival Curve Generator",{"type":47,"value":890}," when the event of interest is time-to-churn rather than binary retention per period — survival analysis correctly handles users who haven't churned yet (right-censored observations) and produces a continuous survival curve with confidence intervals. Use the ",{"type":41,"tag":161,"props":892,"children":894},{"href":893},"/tools/ab-test-calculator",[895],{"type":47,"value":896},"A/B Test Calculator",{"type":47,"value":898}," to test whether a product change significantly improved retention at a specific period (e.g., Day-30 retention for the pre- vs post-change cohorts). Use the ",{"type":41,"tag":161,"props":900,"children":902},{"href":901},"/tools/conversion-funnel",[903],{"type":47,"value":904},"Conversion Funnel Analysis",{"type":47,"value":906}," tool to analyze the sequential steps new users take before becoming retained users — funnel analysis shows where users drop off on the path to activation, while cohort retention shows what happens after activation. Use the ",{"type":41,"tag":161,"props":908,"children":910},{"href":909},"/tools/time-series-decomposition",[911],{"type":47,"value":912},"Time Series Decomposition",{"type":47,"value":914}," tool to separate calendar seasonality from cohort-level retention trends when analyzing retention data over a long time horizon.",{"type":41,"tag":42,"props":916,"children":918},{"id":917},"frequently-asked-questions",[919],{"type":47,"value":920},"Frequently Asked Questions",{"type":41,"tag":50,"props":922,"children":923},{},[924,929,931,936,938,943,945,950,952,957],{"type":41,"tag":54,"props":925,"children":926},{},[927],{"type":47,"value":928},"What is a good retention rate?",{"type":47,"value":930},"\nRetention benchmarks vary dramatically by product type and time horizon. For ",{"type":41,"tag":54,"props":932,"children":933},{},[934],{"type":47,"value":935},"mobile apps",{"type":47,"value":937},": Day-1 retention of 25–40% is typical; Day-30 retention of 10–15% is average, 20%+ is good. For ",{"type":41,"tag":54,"props":939,"children":940},{},[941],{"type":47,"value":942},"SaaS products",{"type":47,"value":944},": Month-1 retention of 60–80% is expected for B2B, 40–60% for B2C; Month-12 retention of 40%+ is considered healthy. For ",{"type":41,"tag":54,"props":946,"children":947},{},[948],{"type":47,"value":949},"consumer e-commerce",{"type":47,"value":951},": 3-month repeat purchase rate of 20–30% is typical. For ",{"type":41,"tag":54,"props":953,"children":954},{},[955],{"type":47,"value":956},"clinical treatments",{"type":47,"value":958},": the relevant benchmark is protocol-specific adherence targets, often 70–80% at 3 months for chronic condition management. Rather than comparing to industry averages, the most actionable benchmark is your own historical cohorts — is the trend improving, flat, or declining?",{"type":41,"tag":50,"props":960,"children":961},{},[962,967,972,974,978],{"type":41,"tag":54,"props":963,"children":964},{},[965],{"type":47,"value":966},"What is the difference between retention and churn?",{"type":41,"tag":54,"props":968,"children":969},{},[970],{"type":47,"value":971},"Retention rate",{"type":47,"value":973}," at period T = % of the original cohort still active at period T. ",{"type":41,"tag":54,"props":975,"children":976},{},[977],{"type":47,"value":595},{"type":47,"value":979}," at period T = % of users active at period T-1 who became inactive by period T (1 − step-retention). They describe the same phenomenon from different angles. Retention is more intuitive for understanding long-term engagement (62% of January users were still active in February). Churn is more useful for identifying which specific transitions are problematic (the Month-2-to-Month-3 transition has a 28% churn rate — the worst in the funnel). Many teams track both: retention for executive dashboards, churn for operational monitoring.",{"type":41,"tag":50,"props":981,"children":982},{},[983,988],{"type":41,"tag":54,"props":984,"children":985},{},[986],{"type":47,"value":987},"My retention heatmap has a triangular gap in the bottom-right — is that normal?",{"type":47,"value":989},"\nYes, this is expected and correct. The triangular missing region represents cohort-period combinations that haven't happened yet — the August cohort hasn't reached Month 7 because only 1 month has passed since August. The heatmap naturally shows this \"frontier\": each cohort only has data up to the number of periods since it was formed. This is why you should never compute a simple column average across all cohorts for later periods — the average for Month 6 is based only on older cohorts, which may have been acquired under different conditions than newer cohorts. Use cohort comparisons only for periods available to all cohorts in the comparison.",{"title":7,"searchDepth":991,"depth":991,"links":992},2,[993,994,995,996,997,998,999,1000],{"id":44,"depth":991,"text":48},{"id":115,"depth":991,"text":118},{"id":179,"depth":991,"text":182},{"id":495,"depth":991,"text":498},{"id":651,"depth":991,"text":654},{"id":814,"depth":991,"text":817},{"id":874,"depth":991,"text":877},{"id":917,"depth":991,"text":920},"markdown","content:tools:084.cohort-retention.md","content","tools/084.cohort-retention.md","tools/084.cohort-retention","md",{"loc":4},1775502475416]