Skip to main content

Roth vs 401(k) comparison

Same gross paycheck commitment, different tax treatment. Compares two scenarios: sending all future contributions to 401(k) vs all to Roth. All values in today's dollars.

Inputs

10%

$7,500/yr

4%

$3,000/yr (always pre-tax)

$0

Max $7,500/yr. Goes to Roth in all scenarios.

45
65
5%
0.5%

Social Security, pensions, etc. Determines what bracket 401(k) withdrawals land in.

All contributions going to pre-tax 401(k)

Enable "Roth 401(k) available" to compare scenarios and find the optimal split.

Tax comparison

Tax paid withdrawing from 401(k)
(per year in retirement)
$2,471/yr
$15,174 withdrawal × 16.3% marginal rate

All future → 401(k)

New contributions / year
$7,500
Full amount — no tax upfront
Balance at retirement
401(k): $379,359 · Roth: $0
$379,359
4% withdrawal
$15,174 taxable · $0 tax-free
$2,471 tax (16.3%)
Spendable income
$12,704/yr
$1,059/mo

Key numbers

Working marginal rate
27.0%
401(k) path ret. rate
16.3%

Combined balance growth (today's dollars)

Blue shows the combined portfolio balance if all future contributions go to 401(k). Green shows the balance if all go to Roth. The dashed amber line shows the optimal split. The 401(k) path has a higher total because more dollars go in (no upfront tax), but a larger share is taxable on withdrawal.

How this works

All three scenarios start with the same existing balances — $0 in 401(k) and $0 in Roth — and commit the same 10% of gross salary ($7,500/yr) toward retirement.

All → 401(k): The full $7,500 goes in pre-tax each year. No tax now, but withdrawals in retirement are taxed as ordinary income on top of your $24,000/yr in other income.

All → Roth: You pay 27.0% marginal tax on the contribution first ($0 total over your career), so less goes in. But withdrawals are completely tax-free in retirement, reducing the taxable share of your 4% withdrawal.

Optimal (100% / 0%): The split that maximizes spendable income by balancing the working-year tax cost of Roth against the retirement tax savings. It finds the point where the marginal benefit of shifting one more dollar to Roth equals the marginal cost. In this case, 100% pre-tax is optimal — your working marginal rate exceeds your retirement rate at every split level.

Employer match is always deposited to pre-tax in all scenarios. Roth IRA contributions go to Roth in all scenarios (not affected by the 401(k) split). This comparison does not model RMDs, Social Security interaction, or full retirement spending. Use the main calculator for comprehensive planning.

Understanding marginal tax rates

The U.S. uses progressive tax brackets — different portions of your income are taxed at different rates. Your marginal rate is the rate applied to your next dollar of income, not your average rate across all income.

For example, a single filer with $60,000 in taxable income (after the standard deduction) pays 10% on the first $12,400, then 12% on $12,400–$50,400, then 22% on $50,400–$60,000. The total tax is $7,912 — an average rate of 13.2% — but the marginal rate is 22% because that's the bracket where the last dollar lands.

Why this matters for Roth vs 401(k): A 401(k) contribution removes income from the top of your stack, saving tax at your marginal rate. A Roth contribution doesn't reduce your taxable income, so you pay that marginal rate now. In retirement, 401(k) withdrawals stack on top of your other income (Social Security, pensions) and are taxed at whatever marginal rate that combined income falls into.

The core question: is your marginal rate higher now or in retirement? If higher now, 401(k) wins — you avoid tax at the expensive rate today and pay the cheaper rate later. If higher in retirement, Roth wins — you pay the cheaper rate today and avoid the expensive rate later. The optimal split finds the crossover point where both rates equalize.

This calculator computes the marginal rate precisely using the actual federal bracket math plus your state's income tax, not a flat estimate. It runs the calculation twice — with and without the deduction — and takes the difference, which correctly handles cases where a contribution spans two brackets.