Viral Cycle Time
Compress the time between a user joining and them inviting the next user — short cycle time is what makes k compound fast.
Why
The viral growth equation is users(t) = initial × (1 + k)^(t/ct), where ct is the cycle time — k determines the exponent, but ct determines how fast you reach it. A k of 0.5 with a 2-day cycle reaches 100x in 26 days; the same k with a 30-day cycle takes 390 days. Compressing cycle time is often higher-leverage than raising k, because it multiplies the effect of every k improvement. The cycle time is the sum of: time-to-first-shareable-moment, time-to-trigger-fire, and time-to-recipient-convert; each can be attacked independently. Products with long time-to-value (B2B enterprise) have inherently long cycle times and should not expect viral growth — they should optimize k for supplement, not exponent.
When
When k > 0.3 and you want growth to compound faster. Measure cycle time alongside k in every growth review.
How
1. Instrument the three sub-cycles: (a) signup → first shareable moment, (b) shareable moment → invite sent, (c) invite sent → recipient signup 2. Cycle time ct = (a) + (b) + (c); measure the median, not the mean (long tail distorts the mean) 3. Attack the longest sub-cycle first: if (a) is 7 days, push the shareable moment into onboarding (e.g. share a result in step 1) 4. For (b), reduce friction: pre-filled message, contact picker, one-click send — each removed step shaves hours off the median 5. For (c), use deep links and rendered previews so the recipient converts in the same session; email invites add 1-3 days vs in-app 6. Re-measure ct weekly; a 1-day reduction in ct compounds across every cohort forever 7. Model the impact: users(t) = initial × (1+k)^(t/ct); plot how a ct reduction changes the 90-day user count 8. Set a ct target and size experiments to hit it; for consumer products target ct < 2 days, for B2B < 7 days
Example
# Cycle time decomposition (current) (a) signup → first shareable moment: 5.0 days (user must build a dashboard first) (b) shareable moment → invite sent: 0.5 days (trigger fires, friction low) (c) invite sent → recipient signup: 2.0 days (email invite, lands in inbox) ct = 5.0 + 0.5 + 2.0 = 7.5 days # Attack (a) — push shareable moment into onboarding Exp: step 1 of onboarding = "pick a template, share with team" → (a) drops from 5.0d to 0.2d # Attack (c) — switch email invite → in-app deep link via Slack Exp: invite sends Slack message with rendered preview + deep link → (c) drops from 2.0d to 0.3d # After experiments ct = 0.2 + 0.5 + 0.3 = 1.0 day (was 7.5) # With k = 0.4, 90-day growth: # old: 1 × 1.4^(90/7.5) = 17x # new: 1 × 1.4^(90/1.0) = 2.3 million x (ct reduction >> k increase)
Common Problems
- ⚠Optimizing k while ignoring ct — a k of 0.5 with a 30-day cycle grows slower than k of 0.3 with a 2-day cycle.
- ⚠Measuring the mean cycle time instead of the median — a few users who invite on day 1 hide that the median is day 14.
- ⚠Using email invites (long (c) sub-cycle) when in-app or Slack invites could convert in the same session.
- ⚠Delaying the first shareable moment to 'after the user is fully activated' — by then the motivation peak has passed.
Best Practices
- ✓Measure ct as the median of (a + b + c) sub-cycles, not the mean; the long tail distorts the mean and hides the typical experience.
- ✓Attack the longest sub-cycle first; a 1-day reduction in the longest segment beats a 1-day reduction in the shortest.
- ✓Push the first shareable moment into onboarding, not after activation; the motivation peak is highest at the first 'wow'.
- ✓Use in-app or messaging-app invites, not email; email adds 1-3 days to sub-cycle (c) and often never gets opened.