Skip to content
Back to Growth & Acquisition

K-Factor Measurement

Measure the viral coefficient k = (invites per user) × (signup rate per invite) to know if your product is genuinely viral.

Why

The k-factor is the single number that tells you whether organic growth is exponential (k > 1), linear (k = 1), or decaying (k < 1) — it is the growth team's north star for the viral channel. When k > 1, each user brings more than one user, and growth compounds without paid spend; when k < 1, paid acquisition must fill the gap or growth stalls. Measuring k honestly (per cohort, per channel, with a time window) prevents the common self-deception of counting invites sent but not signups converted, which inflates k by 3-5x. The k-factor also decomposes into its two factors, telling you whether to optimize invite frequency (more invites per user) or invite quality (higher signup rate) — these require completely different experiments.

When

When you have a referral mechanic live and 4+ weeks of data. Measure continuously, report in every growth review.

How

1. Define the time window: k is measured per user-cohort over a fixed window (e.g. 30 days from signup) — without a window, the number is meaningless
2. Factor 1 — invites per user (i): count invites sent by each user in the cohort within the window; average across the cohort
3. Factor 2 — signup rate per invite (c): count invites that resulted in a signup ÷ total invites sent; use a unique code per inviter to attribute
4. k = i × c; report k per cohort, per channel, and per week so you see the trend, not a single misleading number
5. Decompose: if k = 0.3 with i = 2.0 and c = 0.15, the lever is c (signup rate) — improve invite quality/preview/landing
6. If k = 0.3 with i = 0.6 and c = 0.5, the lever is i (invite frequency) — improve trigger placement/motivation
7. Set a target k and size experiments to hit it: to reach k = 1.0 from 0.3, you need ~3x on one factor or ~1.7x on both
8. Report k alongside paid CAC: when k rises, paid spend can fall; when k falls, paid must rise to hold growth

Example

# k-factor for the July cohort (30-day window)
Cohort: 1,000 users who signed up in July
Invites sent by cohort (within 30d): 1,800
Invites that resulted in signup:       216

i = 1800 / 1000 = 1.80 invites per user
c = 216 / 1800  = 0.12 signup rate per invite
k = 1.80 × 0.12 = 0.216  (decaying — paid must fill the gap)

# Decomposition → next experiments
Lever is c (0.12 is low): invite preview/landing underperforms
  Exp A: render artifact preview in invite (target c: 0.18)
  Exp B: deep-link to shared artifact, not homepage (target c: 0.20)
  If both hit: k = 1.80 × 0.20 = 0.36 (still <1, but +66%)

# Trend (weekly k)
W1: 0.18  W2: 0.21  W3: 0.22  W4: 0.24  → improving but still <1
# Decision: keep optimizing c; paid CAC holds at $14 until k > 0.5

Common Problems

  • ⚠Counting invites sent as 'k' instead of invites that converted to signups — this inflates k by 3-5x and hides that the channel is broken.
  • ⚠Measuring k without a time window, so late-converting invites from old cohorts inflate the current week's number.
  • ⚠Reporting a single blended k instead of per-cohort/per-channel, which hides that one channel is viral and another is dead.
  • ⚠Treating k > 1 as the only goal; for most B2B products k = 0.3-0.5 is a healthy viral supplement to paid acquisition.

Best Practices

  • ✓Measure k as (invites sent) × (signups converted) per cohort in a fixed window; counting only sends inflates the number 3-5x.
  • ✓Decompose k into i (invites/user) and c (signup rate) to know which lever to pull; the two require different experiments.
  • ✓Report k per cohort and per channel, not as a single blended number; one viral channel can hide three dead ones.
  • ✓Set a realistic k target for your category — B2B k of 0.3-0.5 is healthy; expecting k > 1 in B2B usually leads to broken mechanics.