Calculate the power of compounding by reinvesting your dividends over time.
Total Ending Balance:$0.00
Total Dividends Earned:$0.00
Annual Dividend Income at End:$0.00
Total Principal Contributed:$0.00
How Does Dividend Reinvestment Work?
A Dividend Reinvestment Plan (DRIP) is a strategy where the cash dividends paid by a company or fund are automatically used to purchase additional shares of that same investment. Instead of receiving a check or cash in your brokerage account, you increase your ownership stake.
The Power of Compounding Dividends
The real magic happens through "compounding on compounding." When you reinvest dividends, you own more shares. Those new shares then pay their own dividends in the next cycle, which buys even more shares. Over 10, 20, or 30 years, this cycle can turn a modest investment into a significant nest egg.
Key Factors in Your DRIP Strategy
Dividend Yield: The percentage of the share price a company pays out annually. High yields aren't always better if the company isn't growing.
Share Appreciation: While dividends provide income, the growth of the underlying stock price accelerates your total return.
Taxation: In many jurisdictions, dividends are taxed in the year they are received, even if reinvested. This calculator includes a tax rate field to show the "real world" net growth.
Example Scenario
Imagine you start with $10,000 in a stock with a 4% yield and 5% annual price growth. If you contribute $100 per month ($1,200/year) and reinvest all dividends after a 15% tax, after 20 years, your portfolio would grow significantly more than if you had simply taken the cash dividends.
function calculateDRIP() {
var principal = parseFloat(document.getElementById("initialPrincipal").value);
var annualContrib = parseFloat(document.getElementById("annualContribution").value);
var years = parseInt(document.getElementById("yearsToGrow").value);
var yieldPct = parseFloat(document.getElementById("dividendYield").value) / 100;
var growthPct = parseFloat(document.getElementById("priceAppreciation").value) / 100;
var taxPct = parseFloat(document.getElementById("taxRate").value) / 100;
if (isNaN(principal) || isNaN(annualContrib) || isNaN(years) || isNaN(yieldPct)) {
alert("Please enter valid numbers in all fields.");
return;
}
var currentBalance = principal;
var totalDivEarned = 0;
var totalInvested = principal;
// Monthly calculation for better accuracy
var months = years * 12;
var monthlyGrowth = Math.pow(1 + growthPct, 1/12) – 1;
var monthlyYield = yieldPct / 12;
var monthlyContrib = annualContrib / 12;
for (var i = 1; i <= months; i++) {
// 1. Calculate Dividend for the month
var monthlyDiv = currentBalance * monthlyYield;
// 2. Apply Tax
var netDiv = monthlyDiv * (1 – taxPct);
totalDivEarned += monthlyDiv;
// 3. Reinvest Dividend and add Monthly Contribution
currentBalance += netDiv;
currentBalance += monthlyContrib;
totalInvested += monthlyContrib;
// 4. Apply Share Price Appreciation
currentBalance = currentBalance * (1 + monthlyGrowth);
}
var finalIncome = currentBalance * yieldPct;
document.getElementById("endBalance").innerText = "$" + currentBalance.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("totalDividends").innerText = "$" + totalDivEarned.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("finalAnnualIncome").innerText = "$" + finalIncome.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("totalPrincipal").innerText = "$" + totalInvested.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resultBox").style.display = "block";
}