★ COMPARISONS · STOCKS VS ETFS · 2026

Stocks vs ETFs: Which Wins Over 10, 20 and 30 Years?

On the defaults — $10,000.00 over 20 years, stocks at 10.20% gross minus 0.50% trading costs, the ETF at 10.00% gross minus 0.03% expenses — the ETF reaches $66,908.99 and the stock portfolio $63,698.99: the ETF wins by $3,210.00. This one is the STOCKS-vs-ETFS comparison — two ways of owning STOCKS, a 10-stock portfolio against a 500-stock ETF, same money, same market, the fee drag and the diversification gap — the stocks-vs-bonds page is the STOCKS-vs-BONDS comparison — stocks against bonds at 10.2% vs 4.6%, and the 2008 fall — not stocks against ETFs; and the target-date-fund-vs-three-fund-portfolio page is a FUND-vs-FUND comparison — two kinds of fund, not stocks against an ETF.

1410

Stocks vs ETFs calculator

Put your amount, years, both returns, both fees and your stock count in: $10,000.00 over 20 years is $63,698.99 in 10 stocks and $66,908.99 in the ETF. The fee drag, not the return, is the decision.

The lump sum you invest once — $10,000 on the defaults. No extra contributions in this model.

How many years the money stays invested — 20 on the defaults.

The gross yearly return of your 10 stocks before trading costs — 10.2% on the defaults, the S&P 500 long-run figure the site uses elsewhere.

The gross yearly return of the ETF before expenses — 10.0% on the defaults, the S&P 500 long-run average of about 10% a year.

Commissions, spreads and turnover on your 10 stocks — 0.50% a year on the defaults, the model's illustrative assumption.

The ETF's yearly fee — 0.03% on the defaults, VOO's published expense ratio ($3 per $10,000 a year).

How many individual stocks your portfolio holds — 10 on the defaults. The ETF holds about 500.

Stocks $63,698.99 over 20 years (9.70% net) — ETF $66,908.99 (9.97% net). The ETF wins by $3,210.00.$3,210.00Stocks $63,698.99 over 20 years (9.70% net) — ETF $66,908.99 (9.97% net). The ETF wins by $3,210.00. The fee drag is the quiet winner here — 0.50% a year costs $6,065.09 over 20 years, while 0.03% costs $366.01.

Stock portfolio (20 years): $63,698.99

ETF (20 years): $66,908.99

Difference: $3,210.00

Winner: ETF

Winner margin: $3,210.00

Stock net return: 9.70%

ETF net return: 9.97%

Stock fee drag (20 years): $6,065.09

ETF fee drag (20 years): $366.01

Stock gross value: $69,764.08

ETF gross value: $67,275.00

Holdings (stocks vs ETF): 10 vs 500

Branch: 10 years instead of 20: Stocks $25,238.66 over 10 years (9.70% net) — ETF $25,866.77 (9.97% net). The ETF wins by $628.11.

Branch: 30 years instead of 20: Stocks $160,767.71 over 30 years (9.70% net) — ETF $173,071.98 (9.97% net). The ETF wins by $12,304.27.

Branch: Stock return 12% instead of 10.2%: Stocks $88,205.84 over 20 years (11.50% net) — ETF $66,908.99 (9.97% net). The stock portfolio wins by $21,296.85.

Branch: ETF return 8% instead of 10%: Stocks $63,698.99 over 20 years (9.70% net) — ETF $46,351.31 (7.97% net). The stock portfolio wins by $17,347.68.

Branch: Stock trading costs 1.00% instead of 0.50%: Stocks $58,137.02 over 20 years (9.20% net) — ETF $66,908.99 (9.97% net). The ETF wins by $8,771.97.

Branch: ETF expense 0.10% instead of 0.03%: Stocks $63,698.99 over 20 years (9.70% net) — ETF $66,062.32 (9.90% net). The ETF wins by $2,363.33.

Branch: $50,000 instead of $10,000: Stocks $318,494.95 over 20 years (9.70% net) — ETF $334,544.97 (9.97% net). The ETF wins by $16,050.02.

Branch: $1,000 instead of $10,000: Stocks $6,369.90 over 20 years (9.70% net) — ETF $6,690.90 (9.97% net). The ETF wins by $321.00.

Reverse: Stock return that ties the ETF over 20 years: 10.47% a year

At the star the figures are: Stocks $66,908.99 over 20 years (9.97% net) — ETF $66,908.99 (9.97% net). An exact tie — both reach the same value over 20 years.

At the lower neighbor the figures are: Stocks $66,787.41 over 20 years (9.96% net) — ETF $66,908.99 (9.97% net). The ETF wins by $121.58.

At the upper neighbor the figures are: Stocks $67,030.79 over 20 years (9.98% net) — ETF $66,908.99 (9.97% net). The stock portfolio wins by $121.79.

Reverse verdict: STEP

Reverse: ETF expense ratio that ties the stock portfolio: 0.30% a year

At the star the figures are: Stocks $63,698.99 over 20 years (9.70% net) — ETF $63,698.99 (9.70% net). An exact tie — both reach the same value over 20 years.

At the lower neighbor the figures are: Stocks $63,698.99 over 20 years (9.70% net) — ETF $63,815.22 (9.71% net). The ETF wins by $116.23.

At the upper neighbor the figures are: Stocks $63,698.99 over 20 years (9.70% net) — ETF $63,582.96 (9.69% net). The stock portfolio wins by $116.03.

Reverse verdict: STEP

Reverse: Years for the ETF to pass $50,000: 17 years

At the star the figures are: After 17 years the ETF is worth $50,310.87 — past $50,000.

At the lower neighbor the figures are: After 16 years the ETF is worth $45,749.63 — still $4,250.37 short of $50,000.

At the upper neighbor the figures are: After 18 years the ETF is worth $55,326.86 — past $50,000.

Reverse verdict: STEP

Edge: 0 years: Stocks $10,000.00 over 0 years (9.70% net) — ETF $10,000.00 (9.97% net). An exact tie — both reach the same value over 0 years.

Edge: $0 starting amount: Stocks $0.00 over 20 years (9.70% net) — ETF $0.00 (9.97% net). An exact tie — both reach the same value over 20 years.

Edge: 0% stock trading costs: Stocks $69,764.08 over 20 years (10.20% net) — ETF $66,908.99 (9.97% net). The stock portfolio wins by $2,855.09.

Edge: ETF expense ratio 1.00%: Stocks $63,698.99 over 20 years (9.70% net) — ETF $56,044.11 (9.00% net). The stock portfolio wins by $7,654.88.

$10000 over 20 years: the 10-stock portfolio at 10.20% gross minus 0.50% trading costs reaches $63,698.99, and the 500-stock ETF at 10.00% gross minus 0.03% expenses reaches $66,908.99 — the ETF wins by $3,210.00; the fee drag is $6,065.09 on the stocks and $366.01 on the ETF.

10 years instead of 20: Stocks $25,238.66 over 10 years (9.70% net) — ETF $25,866.77 (9.97% net). The ETF wins by $628.11.

30 years instead of 20: Stocks $160,767.71 over 30 years (9.70% net) — ETF $173,071.98 (9.97% net). The ETF wins by $12,304.27.

Stock return 12% instead of 10.2%: Stocks $88,205.84 over 20 years (11.50% net) — ETF $66,908.99 (9.97% net). The stock portfolio wins by $21,296.85.

ETF return 8% instead of 10%: Stocks $63,698.99 over 20 years (9.70% net) — ETF $46,351.31 (7.97% net). The stock portfolio wins by $17,347.68.

Stock trading costs 1.00% instead of 0.50%: Stocks $58,137.02 over 20 years (9.20% net) — ETF $66,908.99 (9.97% net). The ETF wins by $8,771.97.

ETF expense 0.10% instead of 0.03%: Stocks $63,698.99 over 20 years (9.70% net) — ETF $66,062.32 (9.90% net). The ETF wins by $2,363.33.

$50,000 instead of $10,000: Stocks $318,494.95 over 20 years (9.70% net) — ETF $334,544.97 (9.97% net). The ETF wins by $16,050.02.

$1,000 instead of $10,000: Stocks $6,369.90 over 20 years (9.70% net) — ETF $6,690.90 (9.97% net). The ETF wins by $321.00.

Reverse: Stock return that ties the ETF over 20 years: 10.47% a year — at 10.47% a year the figures are Stocks $66,908.99 over 20 years (9.97% net) — ETF $66,908.99 (9.97% net). An exact tie — both reach the same value over 20 years.; at the lower neighbor the figures are Stocks $66,787.41 over 20 years (9.96% net) — ETF $66,908.99 (9.97% net). The ETF wins by $121.58.; at the upper neighbor the figures are Stocks $67,030.79 over 20 years (9.98% net) — ETF $66,908.99 (9.97% net). The stock portfolio wins by $121.79. — verdict: STEP. Reverse: ETF expense ratio that ties the stock portfolio: 0.30% a year — at 0.30% a year the figures are Stocks $63,698.99 over 20 years (9.70% net) — ETF $63,698.99 (9.70% net). An exact tie — both reach the same value over 20 years.; at the lower neighbor the figures are Stocks $63,698.99 over 20 years (9.70% net) — ETF $63,815.22 (9.71% net). The ETF wins by $116.23.; at the upper neighbor the figures are Stocks $63,698.99 over 20 years (9.70% net) — ETF $63,582.96 (9.69% net). The stock portfolio wins by $116.03. — verdict: STEP. Reverse: Years for the ETF to pass $50,000: 17 years — at 17 years the figures are After 17 years the ETF is worth $50,310.87 — past $50,000.; at the lower neighbor the figures are After 16 years the ETF is worth $45,749.63 — still $4,250.37 short of $50,000.; at the upper neighbor the figures are After 18 years the ETF is worth $55,326.86 — past $50,000. — verdict: STEP.

Edges: 0 years gives Stocks $10,000.00 over 0 years (9.70% net) — ETF $10,000.00 (9.97% net). An exact tie — both reach the same value over 0 years. $0 starting amount gives Stocks $0.00 over 20 years (9.70% net) — ETF $0.00 (9.97% net). An exact tie — both reach the same value over 20 years. 0% stock trading costs gives Stocks $69,764.08 over 20 years (10.20% net) — ETF $66,908.99 (9.97% net). The stock portfolio wins by $2,855.09. ETF expense ratio 1.00% gives Stocks $63,698.99 over 20 years (9.70% net) — ETF $56,044.11 (9.00% net). The stock portfolio wins by $7,654.88.

What does the ETF winning by $3,210.00 mean?

It means that, over 20 years, the same $10,000.00 grows to $66,908.99 in the ETF and to $63,698.99 in the 10-stock portfolio — a $3,210.00 gap, on identical gross returns of about 10% a year. The gap is not the return: the stock portfolio actually aims higher, 10.20% gross against the ETF's 10.00%. The gap is the fee drag. The stock portfolio pays 0.50% a year in trading costs — commissions, spreads, turnover — which takes $6,065.09 off the $69,764.08 it would have reached for free. The ETF pays 0.03% — $3 a year per $10,000.00 — which takes only $366.01 off its $67,275.00. The net returns are 9.70% against 9.97%, and 0.27 points a year, compounded for 20 years, is $3,210.00.

Three things to check before you trust the number

The fee drag grows with time, not with the fee. At 10 years the gap is only $628.11; at 30 years it is $12,304.27 — the same 0.47-point fee difference, compounding for a decade longer. A 0.50% trading cost sounds small against a 10.2% return, but over 20 years it takes $6,065.09 off a $10,000.00 investment — about 8.7% of the gross value. Raise the trading costs to 1.00% a year and the gap jumps to $8,771.97; raise the ETF expense to 0.10% and it shrinks to $2,363.33. The fee is the lever, and time is the multiplier.

The stock portfolio has to earn its fee back. Your 10 stocks start 0.47 points a year behind the ETF, so they need a gross return of 10.47% a year just to tie — and at 12% gross they win by $21,296.85 over 20 years. That is the whole stock-picking question in one number: can you beat the market by half a point a year, every year, for 20 years? Over the past 15 years the S&P 500 beat about 90% of managed large-cap funds, which is the honest base rate for the attempt. If the answer is no, the ETF wins by default — and if the answer is yes, the calculator says exactly how much the win is worth.

Ten stocks is a concentration bet, not a market bet. One bad pick in a 10-stock portfolio is 10% of the money; one bad pick in the 500-stock ETF is 0.2%. In a 2008-style year the market fell 37% — the site's own stocks-vs-bonds page works that year out — and a 10-stock portfolio can fall further than the market if one of its ten is the one that falls hardest. The model does not price that risk: both sides compound at a smooth yearly rate, with no down years at all. The ETF's case is not just the fee — it is that the fee buys 500 stocks of diversification, and the stock portfolio's case has to be worth giving that up.

Worked example

On the defaults: $10,000 over 20 years, stocks at 10.2% gross minus 0.50% trading costs, the ETF at 10.0% gross minus 0.03% expenses.

  1. Stock net return: 10.2% − 0.50% is 9.70%.
  2. ETF net return: 10.0% − 0.03% is 9.97%.
  3. Stock future value: $10,000 × 1.0970^20 is $63,698.99.
  4. ETF future value: $10,000 × 1.0997^20 is $66,908.99.
  5. The fee drag: $69,764.08 − $63,698.99 is $6,065.09 on the stocks; $67,275.00 − $66,908.99 is $366.01 on the ETF.
  6. The difference: $66,908.99 − $63,698.99 is $3,210.00 — the ETF wins.

And the other way: the stock portfolio needs 10.47% a year gross to tie the ETF, the ETF expense would have to rise to 0.30% a year to tie the stocks, and the ETF passes $50,000 in 17 years.

Every branch, checked

The reverses, worked backwards

What the defaults assume

The defaults are $10,000 invested once, 20 years, a 10-stock portfolio at 10.2% gross a year minus 0.50% trading costs, and a 500-stock ETF at 10.0% gross a year minus a 0.03% expense ratio. The stock gross return of 10.2% is the site's own figure — the stocks-vs-bonds page turns $10,000 into $69,764 in 20 years at 10.2% — and the ETF gross return of 10.0% is the S&P 500 long-run average of about 10% a year since 1957 (Fidelity: 20-year average 11%, 30-year 10.4% through December 2025). The 0.03% ETF expense is VOO's published ratio — $3 a year per $10,000 invested. The 0.50% stock trading-cost drag is the model's own illustrative assumption — commissions, spreads and turnover on a portfolio that trades — not a measured average, and the page says so. The model compounds once a year at a smooth rate: no down years, no dividends taken out, no tax, no extra contributions, and no rebalancing. The past decade ran far above the long-run average — VOO averaged 15.4% a year over the 10 years to August 2026 — and the next decade may not repeat it. The reverses are checked at 0.01 points either side, because a 0.01-point change in a yearly return moves a 20-year future value by about $130 and shows the tie clearly. The holdings count does not change the future value in this model — it is shown because one bad pick is 10% of a 10-stock portfolio and 0.2% of the ETF, and that is the diversification gap the fee buys.

These notes repeat in every explainer section because this page is built to be read start to finish: the fee drag grows with time, not with the fee; the stock portfolio has to earn its fee back; and ten stocks is a concentration bet, not a market bet.

Output · formula · meaning

OutputFormulaWhat it means
Stock net returnstock gross return − trading costs9.70% — 10.20% − 0.50%.
ETF net returnETF gross return − expense ratio9.97% — 10.00% − 0.03%.
Stock future valueamount × (1 + stock net)^years$63,698.99 — $10,000.00 × 1.0970^20.
ETF future valueamount × (1 + ETF net)^years$66,908.99 — $10,000.00 × 1.0997^20.
Stock fee dragstock gross value − stock net value$6,065.09 — $69,764.08 − $63,698.99.
ETF fee dragETF gross value − ETF net value$366.01 — $67,275.00 − $66,908.99.
DifferenceETF value − stock value$3,210.00 — $66,908.99 − $63,698.99.
Reverse: Stock return that ties the ETF over 20 yearsstep10.47% a year: Stocks $66,908.99 over 20 years (9.97% net) — ETF $66,908.99 (9.97% net). An exact tie — both reach the same value over 20 years.
Reverse: ETF expense ratio that ties the stock portfoliostep0.30% a year: Stocks $63,698.99 over 20 years (9.70% net) — ETF $63,698.99 (9.70% net). An exact tie — both reach the same value over 20 years.
Reverse: Years for the ETF to pass $50,000step17 years: After 17 years the ETF is worth $50,310.87 — past $50,000.
10 years instead of 20same modelStocks $25,238.66 over 10 years (9.70% net) — ETF $25,866.77 (9.97% net). The ETF wins by $628.11.
30 years instead of 20same modelStocks $160,767.71 over 30 years (9.70% net) — ETF $173,071.98 (9.97% net). The ETF wins by $12,304.27.
Stock return 12% instead of 10.2%same modelStocks $88,205.84 over 20 years (11.50% net) — ETF $66,908.99 (9.97% net). The stock portfolio wins by $21,296.85.
ETF return 8% instead of 10%same modelStocks $63,698.99 over 20 years (9.70% net) — ETF $46,351.31 (7.97% net). The stock portfolio wins by $17,347.68.
Stock trading costs 1.00% instead of 0.50%same modelStocks $58,137.02 over 20 years (9.20% net) — ETF $66,908.99 (9.97% net). The ETF wins by $8,771.97.
ETF expense 0.10% instead of 0.03%same modelStocks $63,698.99 over 20 years (9.70% net) — ETF $66,062.32 (9.90% net). The ETF wins by $2,363.33.
$50,000 instead of $10,000same modelStocks $318,494.95 over 20 years (9.70% net) — ETF $334,544.97 (9.97% net). The ETF wins by $16,050.02.
$1,000 instead of $10,000same modelStocks $6,369.90 over 20 years (9.70% net) — ETF $6,690.90 (9.97% net). The ETF wins by $321.00.
0 yearssame modelStocks $10,000.00 over 0 years (9.70% net) — ETF $10,000.00 (9.97% net). An exact tie — both reach the same value over 0 years.
$0 starting amountsame modelStocks $0.00 over 20 years (9.70% net) — ETF $0.00 (9.97% net). An exact tie — both reach the same value over 20 years.
0% stock trading costssame modelStocks $69,764.08 over 20 years (10.20% net) — ETF $66,908.99 (9.97% net). The stock portfolio wins by $2,855.09.
ETF expense ratio 1.00%same modelStocks $63,698.99 over 20 years (9.70% net) — ETF $56,044.11 (9.00% net). The stock portfolio wins by $7,654.88.

Who uses this

Accuracy & limitations

Figures are the model's own future values on the numbers you type, computed from unrounded values: each net return is the gross return minus the annual fee, each future value is the amount times one plus the net return to the power of the years, the fee drag is the gross future value minus the net future value, and the difference is the ETF value minus the stock value. The displayed figures are rounded to 2dp. The returns are illustrative assumptions, not forecasts: the S&P 500 has averaged about 10% a year over many decades, the past 10 years averaged 15.4% for VOO, and any single 20-year period can land well above or below the average. The model compounds once a year at a smooth rate — it has no down years, no sequence-of-returns risk, no dividends taken out, no tax, no extra contributions and no rebalancing. The 0.50% stock trading-cost drag is the model's illustrative assumption, not a measured average. The ETF expense of 0.03% is VOO's published ratio as of October 2026; other ETFs charge more. The holdings count does not change the future value — it is shown to frame the diversification gap. This page is a calculation tool, not financial advice, and not an investment recommendation.

Cite this calculator

$10,000 over 20 years: a 10-stock portfolio at 10.2% gross minus 0.50% trading costs reaches $63,698.99, and a 500-stock ETF at 10.0% gross minus 0.03% expenses reaches $66,908.99 — the ETF wins by $3,210.00. Returns: S&P 500 long-run average about 10% a year (Fidelity); VOO expense ratio 0.03% (Vanguard). Source: Bright Side Kit, brightoolbox.com.

Embed this calculator

Frequently asked questions

Do stocks or ETFs make more money?

On the defaults, the ETF — $66,908.99 against $63,698.99 over 20 years, a $3,210.00 win. The stocks aim higher (10.2% gross) but pay 0.50% a year in trading costs against the ETF's 0.03%.

How much do ETF fees cost over 20 years?

$366.01 on $10,000 at 0.03% a year. The same $10,000 in a 10-stock portfolio paying 0.50% a year in trading costs loses $6,065.09 to fees.

What return do my stocks need to beat an ETF?

10.47% a year gross, to tie the ETF over 20 years. At 12% gross the stocks win by $21,296.85.

How many stocks do I need to be diversified?

The ETF holds about 500. One bad pick is 10% of a 10-stock portfolio and 0.2% of the ETF — that is the diversification gap the 0.03% fee buys.

How long does $10,000 take to reach $50,000 in an ETF?

17 years at the 9.97% net return. After 16 years it is worth about $45,750 — still short of $50,000.

Does the winner change over 10 or 30 years?

No — the ETF wins by $628.11 over 10 years and by $12,304.27 over 30 years. The fee drag grows with time, so the longer the horizon, the bigger the ETF's win.

What if the ETF charges 0.10% instead of 0.03%?

The ETF still wins, by $2,363.33. The expense would have to rise to 0.30% a year to tie the stock portfolio.

Are these returns guaranteed?

No — they are illustrative assumptions, not forecasts. The S&P 500 has averaged about 10% a year over many decades, but the past decade averaged 15.4% and any 20-year period can land well above or below the average.