免费工具 同期群分析:用你的数据生成留存表
一行一次活跃(用户、注册日期、活跃日期),或者一张现成的同期群表,粘贴进来就能得到留存三角表:留存越高格子越深,每一期都有加权平均,还有留存曲线和 CSV。还没走完的期会单独标出,不会被当成 0。
- 留存三角热力表
- N 日 / 区间 / 无界留存
- 本地运行
贴数据,出三角表
两种输入都行。原始记录:用户ID, 注册日期, 活跃日期,一行一个活跃日(也可以只给 用户ID, 日期,最早的日期当注册日)。同期群表:同期群, 人数, 第0期, 第1期…,填人数或百分比都行。格式自动识别。
日期写成 2026-09-07 或 2026/9/7、2026年9月7日。每个用户的注册当天也要有一行(活跃日期 = 注册日期),否则从没回来过的人不会算进同期群。
只对原始记录生效。每周从周一开始;某个用户的第 1 周是他自己注册后的第 7–13 天。按月时用自然月。
只对原始记录生效。三种口径的定义见下面的「公式」。
读取情况
- 说明读到一张 6 个同期群的表。第一列数字等于同期群人数,按第 0 期处理。
同期群数
6
同期群总人数
12,463
第 1 期留存
47.8%
加权平均
最近一个完整的期
29.0%
加权平均
留存三角表
每行一个同期群,每列是注册后第几期。颜色越深留存越高。带 * 的格子那一期还没结束,不算进平均。
| 同期群 | 人数 | 第0周 | 第1周 | 第2周 | 第3周 | 第4周 | 第5周 |
|---|---|---|---|---|---|---|---|
| 9月1日 | 1,840 | 100% | 44.0% | 36.0% | 32.0% | 30.0% | 29.0% |
| 9月8日 | 2,012 | 100% | 45.0% | 37.0% | 33.0% | 31.0% | |
| 9月15日 | 1,966 | 100% | 47.0% | 39.0% | 35.0% | ||
| 9月22日 | 2,130 | 100% | 50.0% | 41.0% | |||
| 9月29日 | 2,205 | 100% | 52.0% | ||||
| 10月6日 | 2,310 | 100% | |||||
| 加权平均 | 100% | 47.8% | 38.3% | 33.4% | 30.5% | 29.0% |
留存曲线
cohort,users,period_0,period_1,period_2,period_3,period_4,period_5,period_0_pct,period_1_pct,period_2_pct,period_3_pct,period_4_pct,period_5_pct
9月1日,1840,1840,810,662,589,552,534,100,44.02,35.98,32.01,30,29.02
9月8日,2012,2012,905,744,664,624,,100,44.98,36.98,33,31.01,
9月15日,1966,1966,924,767,688,,,100,47,39.01,34.99,,
9月22日,2130,2130,1065,873,,,,100,50,40.99,,,
9月29日,2205,2205,1147,,,,,100,52.02,,,,
10月6日,2310,2310,,,,,,100,,,,,
weighted_average,,,,,,,,100,47.78,38.32,33.36,30.53,29.02每个格子的人数和百分比,最后一行是加权平均。
版本 v1.0更新于 更新记录
留存三角表怎么看
每一行是一个同期群——同一时间段注册的人——每一列是注册后过了几期。右下角空着的部分是还没发生的未来。
横着看:一个同期群慢慢变老
9 月 1 日这一组:44% → 36% → 32% → 30% → 29%。掉得越来越慢,说明留下来的是真正觉得有用的人。一行如果一直往 0 掉,说明还没有任何一群人真正留下来。
竖着看:同样「年龄」的同期群比一比
第 1 周留存在 5 个同期群里从 44% 升到 52%。越晚注册的人回来得越多——9 月上线的那次新手引导或投放调整起作用了。
加权平均那一行
已走完这一期的同期群里,所有回访人数 ÷ 所有人数。大的同期群占的分量更大,这本来就应该如此;和留存率计算器是同一条规则。
带 * 的格子和空着的角
上周才注册的同期群不可能有第 4 周留存。空着表示「还没到」,* 表示「进行中」;两者都不当 0,也不进平均。
两张三角表只有在同样的起始事件、回访事件、周期和留存口径下才能比较。
从导出数据到同期群表
多数统计工具、数据库和 CRM 都能导出这三列。
-
1
导出活跃记录
每个用户每个活跃日一行:用户 ID、注册日期、活跃日期。SQL 写成
SELECT DISTINCT user_id, signup_date, DATE(event_time)就够了。手上已经有同期群表也可以直接贴。 -
2
选周期
天天用的 App 按天,多数产品按周,B2B 和订阅按月。每个同期群建议有几百人以上。
-
3
选留存口径
有固定使用节奏的产品用 N 日留存;「这段时间里回来过没有」才是真问题时用区间留存;想看「后来到底回没回来」用无界留存。
-
4
看结果、导出
竖着看趋势,横着看曲线在哪里走平。下载 CSV,或者把格子切成人数核对一下算法。
同期群、期和三种留存口径
定义和 TapCub 术语表里的同期群、留存率一致。第 0 期就是注册所在的那一期,所以永远是 100%。
- 同期群:注册日期落在同一天、同一周(周一到周日)或同一个自然月的所有人。一个人进了某个同期群就一直属于它。
- 活跃属于第几期:按天 = 距该用户注册的天数;按周 = 距注册的整周数;按月 = 注册月和活跃月相差几个自然月。
- 第 N 期留存 = 第 N 期算作留存的人数 ÷ 同期群人数。
- 数据里最后一天时,同期群里每个人都已经过完第 N 期,这一格才算完整;否则标 *,不进平均。
N 日留存(经典)
第 N 期活跃人数 ÷ 同期群人数
最严格,曲线可能有升有降。通常说的「次日留存」「7 日留存」「第 1 周留存」就是它。
区间留存
第 1…N 期任一期活跃过的人数 ÷ 同期群人数
累计口径,只升不降。适合不常用的产品。
无界留存
第 N 期或之后任一期活跃过的人数 ÷ 同期群人数
回答「第 N 期以后还回来过没有」。最近的格子会偏低,因为未来还没发生。
加权平均
Σ第 N 期回访人数 ÷ Σ已走完第 N 期的同期群人数
示例第 2 周:3,046 ÷ 7,948 = 38.3%
默认表格,一期一期算
6 个按周的同期群。10 月 6 日那一组只有第 0 周,对之后各期的平均都没有贡献;只有 9 月 1 日那一组走到了第 5 周。
| 第几周 | 已走完的同期群 | 回访 ÷ 人数 | 加权平均 |
|---|---|---|---|
| 1 | 5 个(9/1 – 9/29) | 4,851 ÷ 10,153 | 47.8% |
| 2 | 4 个(9/1 – 9/22) | 3,046 ÷ 7,948 | 38.3% |
| 3 | 3 个(9/1 – 9/15) | 1,941 ÷ 5,818 | 33.4% |
| 4 | 2 个(9/1、9/8) | 1,176 ÷ 3,852 | 30.5% |
| 5 | 1 个(9/1) | 534 ÷ 1,840 | 29.0% |
第 2 周 4 个留存率(36.0%、37.0%、39.0%、41.0%)直接取平均是 38.2%,这里和加权平均接近,是因为各组人数差不多。只要混进一个大促带来的大同期群,两者就会差很多。
同期群表容易错在哪
算法很简单,问题都出在输入上。
漏掉从没回来过的人
导出里只有回访记录的话,没回来过的用户根本不在表里,留存会高得离谱。每个人的注册那一行都要有。
把边缘当成下跌
最新的那些格子只走了一部分。最后一列「掉下来」往往只是那一周还没过完——* 标的就是这个。
表格中途换口径
同一批用户的 N 日留存和区间留存能差一半;回访事件用「任意访问」还是「下单」也一样。
直接平均百分比
10 人留存 90% 和 2,000 人留存 40%,平均不是 65%。要按人数加权,就像加权平均那一行。
直接用你的事件生成同期群表
不用导出,不用表格:网站、App、小程序已经上报的事件,TapCub 直接生成同样的三角表。
什么是同期群分析?
按「什么时候开始」把用户分组——哪一周注册、哪个月首次下单——再比较各组在开始后同样时长里的表现。最常见的形式就是留存三角表。见同期群。
同期群分析用 Excel 怎么做?
导出用户 ID、注册日期、活跃日期,粘贴到这里,再把 CSV 贴回表格。纯用公式做,需要一列辅助列算「第几期」,再给每个格子写一个 COUNTIFS。
和留存率计算器有什么不同?
留存率计算器每个同期群只填一对数字(新增、回访),算的是某一期。这个工具从原始记录或整张表算出每个同期群的每一期。
为什么第 0 期总是 100%?
第 0 期就是注册的那一期,同期群里每个人按定义都在这一期活跃过。留存从第 1 期开始看。
该用哪种留存口径?
有固定使用节奏的用 N 日留存,偶尔用的用区间留存,想知道「到底回没回来」用无界留存。选哪种都行,比较同期群时别换。
能粘贴多少行?
几万行活跃记录在现在的浏览器里没问题。表格最多显示 60 个同期群、24 期;更多的话把周期放长。
用户数据会上传吗?
不会,全部在这个页面里计算。用户 ID 不会离开你的浏览器;不放心的话,粘贴前把 ID 换成行号也行。