What this SCHD dividend calculator does
This tool helps you turn the Schwab U.S. Dividend Equity ETF (SCHD) into a practical income plan.
You can (1) estimate income now, (2) solve backwards for the investment required to reach a target income,
and (3) project long-term results with optional DRIP (dividend reinvestment) and growth assumptions.
Use it for planning—not prediction.
SCHD Dividend Calculator (3 modes)
.sc-card{border:1px solid #e6e8ee;border-radius:14px;background:#fff;padding:18px;margin:18px 0}
.sc-tabs{display:flex;gap:8px;flex-wrap:wrap}
.sc-tab{border:1px solid #cfd6e4;background:#f4f6fb;border-radius:10px;padding:8px 12px;cursor:pointer}
.sc-tab.active{background:#0a63ff;color:#fff;border-color:#0a63ff}
.sc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}
@media (max-width:760px){.sc-grid{grid-template-columns:1fr}}
.sc-card label{font-weight:600;display:block;margin:6px 0 4px}
.sc-card input,.sc-card select{width:100%;padding:10px;border:1px solid #d2d7e2;border-radius:10px}
.sc-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.sc-btn{padding:10px 14px;border-radius:10px;border:1px solid #bfc7d8;background:#f5f7fb;cursor:pointer}
.sc-btn.primary{background:#0a63ff;border-color:#0a63ff;color:#fff}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:12px}
@media (max-width:760px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi{border:1px solid #eef0f6;border-radius:12px;padding:12px;background:#fbfcff}
.kpi b{display:block;font-size:1.1rem}
.note{font-size:.92rem;color:#566070}
table.proj{width:100%;border-collapse:collapse;margin-top:10px}
table.proj th,table.proj td{border:1px solid #edf0f6;padding:8px;text-align:right}
table.proj th:first-child,table.proj td:first-child{text-align:left}
.range{display:flex;gap:12px;align-items:center}
.muted{color:#6b7280}
By dollar amount
By shares
Yield (%)
DPS ($/share, TTM)
±10%
(function(){
const $ = id => document.getElementById(id);
const fmt = v => isFinite(v) ? (Math.abs(v) >= 1000 ? v.toLocaleString(undefined,{maximumFractionDigits:2}) : v.toFixed(2)) : ‘0.00’;
// Tabs
const tabs = document.querySelectorAll(‘.sc-tab’);
const panes = {quick: $(‘pane-quick’), target: $(‘pane-target’), drip: $(‘pane-drip’)};
tabs.forEach(btn=>{
btn.addEventListener(‘click’,()=>{
tabs.forEach(b=>b.classList.remove(‘active’));
btn.classList.add(‘active’);
const k = btn.dataset.tab;
Object.keys(panes).forEach(p=>panes[p].style.display = (p===k?”:’none’));
});
});
// Quick: toggles
$(‘q-mode’).addEventListener(‘change’,()=> {
const byAmt = $(‘q-mode’).value===’amount’;
$(‘q-amount-wrap’).style.display = byAmt?”:’none’;
$(‘q-shares-wrap’).style.display = byAmt?’none’:”;
});
$(‘q-divmode’).addEventListener(‘change’,()=>{
const byYield = $(‘q-divmode’).value===’yield’;
$(‘q-yield-wrap’).style.display = byYield?”:’none’;
$(‘q-dps-wrap’).style.display = byYield?’none’:”;
});
$(‘q-sens’).addEventListener(‘input’,()=>$(‘q-sens-val’).textContent=’±’+$(‘q-sens’).value+’%’);
// Quick: calculate
$(‘q-run’).addEventListener(‘click’,()=>{
const p = parseFloat($(‘q-price’).value)||0;
const byAmt = $(‘q-mode’).value===’amount’;
const amt = parseFloat($(‘q-amount’).value)||0;
const sh = byAmt ? (p>0? amt/p : 0) : (parseFloat($(‘q-shares’).value)||0);
let dps = 0;
if(($(‘q-divmode’).value===’yield’)){
const y = (parseFloat($(‘q-yield’).value)||0)/100;
dps = p*y;
} else {
dps = parseFloat($(‘q-dps’).value)||0;
}
if(!(sh>0 && dps>0)){ alert(‘Enter valid price, shares/amount, and dividend input.’); return; }
const annual = sh*dps;
$(‘q-annual’).textContent = ‘$’+fmt(annual);
$(‘q-quarterly’).textContent = ‘$’+fmt(annual/4);
$(‘q-monthly’).textContent = ‘$’+fmt(annual/12);
$(‘q-daily’).textContent = ‘$’+fmt(annual/365);
const sens = (parseFloat($(‘q-sens’).value)||0)/100;
const low = annual*(1-sens), high=annual*(1+sens);
$(‘q-band’).textContent = `Sensitivity range (${($(‘q-sens’).value)}%): $${fmt(low)} – $${fmt(high)} per year.`;
$(‘q-results’).style.display=”;
});
$(‘q-reset’).addEventListener(‘click’,()=>{
[‘q-price’,’q-amount’,’q-shares’,’q-yield’,’q-dps’].forEach(id=>$(id).value=”);
$(‘q-results’).style.display=’none’;
});
// Target solver toggles
$(‘t-divmode’).addEventListener(‘change’,()=>{
const byYield = $(‘t-divmode’).value===’yield’;
$(‘t-yield-wrap’).style.display = byYield?”:’none’;
$(‘t-dps-wrap’).style.display = byYield?’none’:”;
});
$(‘t-run’).addEventListener(‘click’,()=>{
const p = parseFloat($(‘t-price’).value)||0;
const target = parseFloat($(‘t-target’).value)||0;
if(!(p>0 && target>0)){ alert(‘Enter a valid price and target income.’); return; }
let shares, amount, quarterly, monthly;
if($(‘t-divmode’).value===’yield’){
const y = (parseFloat($(‘t-yield’).value)||0)/100;
if(!(y>0)){ alert(‘Enter a valid yield.’); return; }
// target = shares * (p*y)
shares = target/(p*y);
} else {
const dps = parseFloat($(‘t-dps’).value)||0;
if(!(dps>0)){ alert(‘Enter a valid DPS.’); return; }
// target = shares * dps
shares = target/dps;
}
amount = shares*p;
quarterly = target/4; monthly = target/12;
$(‘t-shares’).textContent = shares.toFixed(4);
$(‘t-amount’).textContent = ‘$’+fmt(amount);
$(‘t-quarterly’).textContent = ‘$’+fmt(quarterly);
$(‘t-monthly’).textContent = ‘$’+fmt(monthly);
$(‘t-results’).style.display=”;
});
$(‘t-reset’).addEventListener(‘click’,()=>{
[‘t-price’,’t-yield’,’t-dps’,’t-target’].forEach(id=>$(id).value=”);
$(‘t-results’).style.display=’none’;
});
// DRIP toggles
$(‘d-mode’).addEventListener(‘change’,()=>{
const byAmt = $(‘d-mode’).value===’amount’;
$(‘d-amount-wrap’).style.display = byAmt?”:’none’;
$(‘d-shares-wrap’).style.display = byAmt?’none’:”;
});
$(‘d-divmode’).addEventListener(‘change’,()=>{
const byYield = $(‘d-divmode’).value===’yield’;
$(‘d-yield-wrap’).style.display = byYield?”:’none’;
$(‘d-dps-wrap’).style.display = byYield?’none’:”;
});
$(‘d-run’).addEventListener(‘click’,()=>{
const p0 = parseFloat($(‘d-price’).value)||0;
const byAmt = $(‘d-mode’).value===’amount’;
const amt = parseFloat($(‘d-amount’).value)||0;
let sh = byAmt ? (p0>0?amt/p0:0) : (parseFloat($(‘d-shares’).value)||0);
if(!(p0>0 && sh>0)){ alert(‘Enter a valid price and investment/shares.’); return; }
let dps0 = 0;
if($(‘d-divmode’).value===’yield’){
const y = (parseFloat($(‘d-yield’).value)||0)/100;
dps0 = p0*y;
} else { dps0 = parseFloat($(‘d-dps’).value)||0; }
if(!(dps0>0)){ alert(‘Enter a valid dividend input.’); return; }
const yrs = Math.min(Math.max(parseInt($(‘d-years’).value||’10’,10),1),50);
const gD = (parseFloat($(‘d-divg’).value)||0)/100;
const gP = (parseFloat($(‘d-priceg’).value)||0)/100;
const dripOn = $(‘d-drip’).value===’on’;
let dps=dps0, price=p0, shares=sh, cum=0;
const tb = $(‘d-table’).querySelector(‘tbody’);
tb.innerHTML=”;
let yr1=shares*dps;
for(let y=1;y1){ dps*=1+gD; price*=1+gP; }
const divs = shares*dps; cum+=divs;
if(dripOn && price>0){ shares += divs/price; }
const tr=document.createElement(‘tr’);
tr.innerHTML = `
${y}${shares.toFixed(4)}${dps.toFixed(4)}${price.toFixed(2)}${fmt(divs)}${fmt(cum)}`;
tb.appendChild(tr);
}
$(‘d-yr1’).textContent=’$’+fmt(yr1);
$(‘d-yrn’).textContent=’$’+fmt(shares*dps);
$(‘d-shout’).textContent=shares.toFixed(4);
$(‘d-cum’).textContent=’$’+fmt(cum);
$(‘d-note’).textContent = `Projection uses annual compounding with dividend growth ${(gD*100).toFixed(1)}%/yr and price growth ${(gP*100).toFixed(1)}%/yr. DRIP ${dripOn?’enabled’:’disabled’}. Figures are estimates.`;
$(‘d-results’).style.display=”;
});
$(‘d-reset’).addEventListener(‘click’,()=>{
[‘d-price’,’d-amount’,’d-shares’,’d-yield’,’d-dps’].forEach(id=>$(id).value=”);
$(‘d-results’).style.display=’none’;
$(‘d-table’).querySelector(‘tbody’).innerHTML=”;
});
})();
Monthly and daily figures are simple averages. SCHD generally pays dividends quarterly; actual payment amounts and dates vary.
Formulas & sanity checks
- Annual income ≈
Investment × YieldorShares × DPS. - Quarterly ≈
Annual ÷ 4; Monthly (rough) ≈Annual ÷ 12; Daily (rough) ≈Annual ÷ 365. - Required shares for a target income:
Shares = Target Annual Income ÷ DPS(orTarget ÷ (Price × Yield)if using yield). - DRIP share addition per period:
New Shares = Dividends ÷ Price.
Sanity check: if your yield is 3.8% and investment is $10,000, annual income should be about $380. If a calculator shows a very different number, re-check inputs.
Choosing inputs: yield vs DPS, DRIP, growth
Yield vs DPS
Yield (%) changes as price moves; it’s fast for rough estimates. DPS ($/share) uses the sum of the last four payouts
and is useful when you track distributions closely. Use one method consistently—mixing them leads to noisy results.
DRIP
With DRIP on, dividends automatically buy more SCHD shares. Over time this can accelerate income growth—especially when dividend growth is positive.
Growth assumptions
Keep dividend growth and price growth conservative. The projection in this page compounds annually for clarity.
Real-world results will vary by distribution amounts, exact pay dates, and reinvestment timing.
Worked examples
Example 1 — Quick estimate
Investment $12,000, yield 3.6% ⇒ Annual ≈ $432; Quarterly ≈ $108; Monthly ≈ $36.
Example 2 — Target income
Goal: $3,000/year. If DPS ≈ $2.80, you’d need ≈ 1,071.43 shares. At $75/share, that’s ≈ $80,357 before fees/taxes.
Example 3 — DRIP projection (illustrative)
$10,000 starting, price $75, DPS $2.80, dividend growth 5%/yr, price growth 3%/yr, DRIP on for 10 years → watch shares and income climb each year in the table above.
FAQ
How often does SCHD pay dividends?
SCHD is a quarterly payer. Amounts and exact dates vary by quarter; always verify the latest schedule before planning around a payment.
Which is better for planning—yield or DPS?
Neither is “better” in all cases. Yield is convenient for quick math; DPS is precise if you track recent distributions. Pick one and keep it consistent.
Does the calculator include taxes or fees?
No. Results are pre-tax and ignore brokerage fees and personal tax situations.
Can I use this with dollar-cost averaging (DCA)?
Yes—rerun the calculator as your position grows. The DRIP table helps visualize compounding alongside periodic buys.
Disclaimer
This page is for education only and is not financial advice. Dividends and prices change. Always confirm current data with official fund materials before making decisions.