A Dividend Reinvestment Plan (DRIP) is a strategy where an investor automatically reinvests their cash dividends back into additional shares or fractional shares of the underlying stock. Instead of receiving a quarterly check, you use that income to buy more of the asset that produced the income.
How This Calculator Works
This calculator simulates the power of compounding by factoring in several variables that affect your long-term wealth. Unlike simple calculators, we account for dividend taxes and share price appreciation.
Initial Investment: The starting amount you invest today.
Annual Contribution: Extra capital you add to the account each year.
Dividend Yield: The percentage of the share price paid out annually in dividends.
Price Appreciation: The estimated annual increase in the stock's market price.
Tax Rate: The percentage of dividends lost to taxes before reinvestment.
Example Strategy: The Power of 20 Years
Suppose you start with $10,000 in a stock priced at $50 with a 4% yield. You contribute $100 per month ($1,200/year). Even with a modest 5% annual price growth, after 20 years, your reinvested dividends would have significantly accelerated your share count. Without reinvesting, you'd have much less capital working for you.
Why Reinvesting Dividends Matters
The primary benefit of a DRIP is "compounding on steroids." When you reinvest dividends, you own more shares. Those new shares then produce their own dividends in the next cycle. Over decades, this "dividend snowball" effect can account for a massive portion of total stock market returns. In fact, historically, dividends and their reinvestment have accounted for nearly 40% of the S&P 500's total return.
function calculateDRIP() {
var initialInvestment = parseFloat(document.getElementById('initialInvestment').value);
var annualContribution = parseFloat(document.getElementById('annualContribution').value);
var sharePrice = parseFloat(document.getElementById('sharePrice').value);
var divYield = parseFloat(document.getElementById('divYield').value) / 100;
var priceGrowth = parseFloat(document.getElementById('priceGrowth').value) / 100;
var years = parseInt(document.getElementById('years').value);
var taxRate = parseFloat(document.getElementById('taxRate').value) / 100;
if (isNaN(initialInvestment) || isNaN(sharePrice) || isNaN(years) || sharePrice <= 0) {
alert("Please enter valid positive numbers for all fields.");
return;
}
var totalShares = initialInvestment / sharePrice;
var currentPrice = sharePrice;
var totalDividendsEarned = 0;
for (var i = 1; i <= years; i++) {
// 1. Calculate Dividends for the year based on current shares and price
var annualDividend = (totalShares * currentPrice) * divYield;
// 2. Subtract Taxes
var afterTaxDividend = annualDividend * (1 – taxRate);
totalDividendsEarned += annualDividend;
// 3. Reinvest Dividends (Buy more shares at current price)
var sharesFromDividends = afterTaxDividend / currentPrice;
totalShares += sharesFromDividends;
// 4. Add Annual Contribution (Assume invested at end of year price)
var sharesFromContribution = annualContribution / currentPrice;
totalShares += sharesFromContribution;
// 5. Appreciate Share Price for next year
currentPrice = currentPrice * (1 + priceGrowth);
}
var finalBalance = totalShares * currentPrice;
var finalAnnualIncome = (totalShares * currentPrice) * divYield;
document.getElementById('resEndingBalance').innerText = '$' + finalBalance.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotalShares').innerText = totalShares.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotalDividends').innerText = '$' + totalDividendsEarned.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resFinalIncome').innerText = '$' + finalAnnualIncome.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('results').style.display = 'block';
}