Dilution Calculator
More tools →
Free Tool
Funding Round Dilution Calculator
See exactly how your equity changes with every funding round. Add multiple rounds, track your cap table live, and understand what you'll own at exit.
Founder setup
Total: 100% ✓
₹
Funding rounds
Dilution summary
Ownership at each stage
Full cap table
Founder tips on dilution
Stay above 50% as long as possible
Majority ownership means you control board decisions. Indian VCs often push for board seats after Series A — negotiate carefully.
Keep ESOP pool lean early
Investors often demand a 10–15% ESOP pool pre-money, which dilutes founders. Negotiate to create it post-money instead.
Anti-dilution provisions matter
Ask for broad-based weighted average anti-dilution protection. Avoid full ratchet clauses — they heavily punish founders in down rounds.
Raise at the right valuation
Raising too early at a low valuation causes maximum dilution. Get to meaningful traction (₹10L+ MRR) before your Series A.
For educational purposes only — not legal or financial advice. Actual cap table structures depend on term sheets, DPIIT regulations, FEMA compliance, and legal documentation. Consult a startup lawyer or CA before finalising any round.
A free tool by StartupIndiaX.com — India's startup knowledge portal
A free tool by StartupIndiaX.com — India's startup knowledge portal
' +
'Round ' + (i + 1) + '' +
'' +
'
' +
'' +
'
' +
'' +
'
' +
'' +
'
' +
'' +
'
' +
'' +
'Post-money: ' + fmtCr(postmoney) + '' +
'Investor stake: ' + dilPct + '%' +
'Valuation step-up: ' + (i === 0 ? '—' : 'from prev') + '' +
'
';
c.appendChild(div);
});
}
function updateRoundSummary(i) {
var r = rounds[i];
var postmoney = (r.premoney || 0) + (r.investment || 0);
var dilPct = postmoney > 0 ? (r.investment / postmoney * 100).toFixed(1) : '0.0';
var el = document.getElementById('rsummary-' + i);
if (el) {
el.innerHTML =
'Post-money: ' + fmtCr(postmoney) + '' +
'Investor stake: ' + dilPct + '%' +
(i > 0 ? 'Step-up: ' + (((r.premoney / (rounds[i-1].premoney + rounds[i-1].investment)) - 1) * 100).toFixed(0) + '%' : '');
}
}
function addRound() {
var last = rounds[rounds.length - 1] || { investment: 2, premoney: 8 };
var postLast = last.premoney + last.investment;
rounds.push({ name: 'Series ' + 'ABCDE'[rounds.length] || 'Next', investment: last.investment * 3, premoney: postLast * 3 });
renderRounds();
calc();
}
function removeRound(i) {
rounds.splice(i, 1);
renderRounds();
calc();
}
function calc() {
var f1name = document.getElementById('f1name').value || 'Founder 1';
var f2name = document.getElementById('f2name').value || 'Co-founder 2';
var f1 = parseFloat(document.getElementById('f1pct').value) || 0;
var f2 = parseFloat(document.getElementById('f2pct').value) || 0;
var esop = parseFloat(document.getElementById('esoppct').value) || 0;
var pm0 = parseFloat(document.getElementById('premoney0').value) || 5;
var totShares= parseFloat(document.getElementById('totalshares').value)||1000000;
var total = p2(f1 + f2 + esop);
var ec = document.getElementById('equity-check');
if (Math.abs(total - 100) < 0.05) {
ec.textContent = 'Total: 100% ✓';
ec.className = 'equity-check ok';
} else {
ec.textContent = 'Total: ' + total.toFixed(1) + '% — must equal 100%';
ec.className = 'equity-check err';
}
var stages = [{ label: 'Pre-funding', f1: f1, f2: f2, esop: esop, investors: [], postmoney: pm0 }];
rounds.forEach(function(r, i) {
var prev = stages[stages.length - 1];
var postmoney = (r.premoney || 0) + (r.investment || 0);
var dilFrac = postmoney > 0 ? r.investment / postmoney : 0;
var keep = 1 - dilFrac;
var newInvestors = prev.investors.map(function(inv) {
return { name: inv.name, pct: p2(inv.pct * keep), colorIdx: inv.colorIdx };
});
newInvestors.push({ name: r.name + ' investors', pct: p2(dilFrac * 100), colorIdx: i });
stages.push({
label: r.name,
f1: p2(prev.f1 * keep),
f2: p2(prev.f2 * keep),
esop: p2(prev.esop * keep),
investors: newInvestors,
postmoney: postmoney
});
});
var final = stages[stages.length - 1];
var foundersStart = f1 + f2;
var foundersFinal = p2(final.f1 + final.f2);
var totalDil = p2(foundersStart - foundersFinal);
var finalPM = rounds.length > 0 ? (rounds[rounds.length-1].premoney + rounds[rounds.length-1].investment) : pm0;
var qualClass = foundersFinal > 50 ? 'good' : foundersFinal > 30 ? 'warn' : 'bad';
document.getElementById('stat-grid').innerHTML =
'' + fmtPct(foundersFinal) + '
Founders retain
' + fmtPct(totalDil) + '
Total diluted
' + fmtPct(final.f1) + '
' + f1name + '\'s stake
' + fmtCr(finalPM) + '
Final post-money
' +
'
';
});
document.getElementById('ownership-bars').innerHTML = barsHtml;
var legendHtml =
'' +
'' + stage.label + '' +
'founders ' + fmtPct(founderCombined) + ' · valuation ' + fmtCr(stage.postmoney) + '' +
'
' +
'';
function seg(pct, bg, tx, lbl) {
if (pct < 0.1) return '';
return '
' +
(pct > 5 ? fmtPct(pct) : '') + '
';
}
barsHtml += seg(stage.f1, '#E6F5F3', '#0F6E56', f1name);
barsHtml += seg(stage.f2, '#E6F1FB', '#185FA5', f2name);
barsHtml += seg(stage.esop, '#FEF5E7', '#854F0B', 'ESOP');
stage.investors.forEach(function(inv) {
var c = PALETTE[inv.colorIdx % PALETTE.length];
barsHtml += seg(inv.pct, c.bg, c.tx, inv.name);
});
barsHtml += '' + f1name + '
' +
(f2 > 0 ? '' + f2name + '
' : '') +
'ESOP pool
';
rounds.forEach(function(r, i) {
var c = PALETTE[i % PALETTE.length];
legendHtml += '' + r.name + ' investors
';
});
document.getElementById('bar-legend').innerHTML = legendHtml;
var colHeaders = '