Viral coefficient

바이럴 계수

The average number of new users one user brings into the next generation.

···
html
<div class="stage"><div class="label">INVITES / USER <b id="invites">2</b> · JOIN RATE 40%</div><input id="invite-range" type="range" min="1" max="4" value="2"><div class="generations" id="generations"></div><div class="hint">EACH BAR = NEW USERS IN A GENERATION</div></div>
css
.stage{position:relative;width:min(94vw,760px);height:min(88vh,310px);font:800 clamp(10px,max(3.4vmin,1vw),15px)/1.25 sans-serif}.stage *{box-sizing:border-box}.label{font-size:clamp(10px,max(3.4vmin,1vw),12px);letter-spacing:.1em;color:var(--muted)}.accent{color:var(--accent)}.pill{border:1.5px solid var(--fg);border-radius:999px;background:var(--surface);padding:.5em .8em}.hint{position:absolute;right:2%;bottom:0;font-size:clamp(10px,max(3.4vmin,1vw),12px);color:var(--muted)}.stage input{position:absolute;top:15%;left:3%;width:54%;accent-color:var(--accent)}.generations{position:absolute;inset:35% 3% 12%;display:flex;align-items:end;gap:3%}.generation{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;text-align:center;font-size:clamp(10px,max(3.4vmin,1vw),14px)}.generation i{display:block;width:100%;height:var(--h);background:var(--accent);margin-bottom:6px;transition:height .4s}.generation:nth-child(even) i{background:var(--fg)}
js
const range=document.querySelector('#invite-range'),count=document.querySelector('#invites'),bars=document.querySelector('#generations');let auto=0;function draw(){const invitations=Number(range.value),k=invitations*.4;count.textContent=String(invitations);bars.innerHTML=Array.from({length:5},(_,i)=>{const value=Math.pow(k,i),height=Math.max(7,Math.min(100,value*55));return '<div class="generation"><i style="--h:'+height+'%"></i>G'+i+'</div>'}).join('')}range.addEventListener('input',()=>{auto=Date.now();draw()});draw();setInterval(()=>{if(Date.now()-auto<6000)return;range.value=String(Number(range.value)%4+1);draw()},1400);

The viral coefficient is invitations per user multiplied by the invitee signup rate. Below one, referrals alone produce fewer new users in each generation.

The demo changes invitations while keeping conversion fixed and redraws successive generations. Real growth also depends on other acquisition, churn, and the time between invitations.

When to use

Use it to assess referral spread while separating invites from successful signups.

Open as page ↗