{"tool":{"slug":"roth-vs-traditional","name":"Roth vs traditional calculator","version":"2026-08-22","canonicalUrl":"https://carlo.finance/tools/roth-vs-traditional","jsonUrl":"https://carlo.finance/tools/roth-vs-traditional.json","pageUrl":"https://carlo.finance/tools/roth-vs-traditional","parameters":[{"key":"contribution","label":"Annual contribution","unit":"usd-per-year","min":0,"max":100000,"default":7000,"sourceId":null,"help":"What goes into the account each year. It is the same figure on both sides on purpose: the statutory limit does not change when you switch wrapper, because § 402(g) covers pre-tax and designated Roth deferrals together and § 219 covers traditional and Roth IRAs together."},{"key":"income","label":"Wages","unit":"usd-per-year","min":0,"max":100000000,"default":120000,"sourceId":null,"help":"Box 1 of your W-2 before this contribution. It decides the rate the traditional deduction saves you, which is measured here by computing your whole return twice rather than by reading a bracket chart. On a joint return, the couple's combined wages."},{"key":"retirementRate","label":"Your marginal rate in retirement","unit":"percent","min":0,"max":60,"default":22,"sourceId":null,"help":"The rate you expect the traditional withdrawals to be taxed at. Nobody knows this number, which is exactly why it is an input and not a default assumption buried in the code. Set it equal to your current rate and the two accounts tie."},{"key":"years","label":"Years until you withdraw","unit":"years","min":1,"max":60,"default":30,"sourceId":null,"integer":true,"help":"How long the money compounds before you take it out. Longer does not favour one wrapper over the other on the rate question, but it does grow the tax drag on an invested refund, which moves the crossover down."},{"key":"rate","label":"Assumed annual return","unit":"percent","min":0,"max":20,"default":7,"sourceId":null,"help":"The return both accounts earn. It is an assumption, not a forecast. It scales both piles equally, so it moves the size of the gap without moving which side is ahead."},{"key":"gainsRate","label":"Tax rate on the invested refund","unit":"percent","min":0,"max":40,"default":15,"sourceId":"usc-title-26","help":"What the growth on the refund costs when it is finally sold, if the refund goes into an ordinary brokerage account. 15% is the middle long-term capital gain band of § 1(h)(1)(C). Set it to 0 to see the pure rate comparison with no drag."}],"options":[{"key":"saving","label":"The tax the deduction saves","options":[{"value":"invested","label":"Invested"},{"value":"spent","label":"Spent"}],"default":"invested","sourceId":null,"help":"A traditional contribution costs less take-home than a Roth contribution of the same size, because the deduction hands tax back. Invested, that refund is a real part of what the traditional side is worth and the comparison costs you the same either way. Spent, it is gone, and the traditional account is simply the cheaper of two unequal choices."},{"key":"status","label":"Filing status","options":[{"value":"single","label":"Single"},{"value":"married-joint","label":"Married filing jointly"},{"value":"married-separate","label":"Married filing separately"},{"value":"head-of-household","label":"Head of household"},{"value":"qualifying-surviving-spouse","label":"Qualifying surviving spouse"}],"default":"single","sourceId":null,"help":"Your status on the last day of the year. It sets the standard deduction and where each rate starts, so it moves what the deduction saves you today and therefore where the crossover sits."}]},"taxYear":2025,"inputs":{"contribution":7000,"income":120000,"retirementRate":22,"years":30,"rate":7,"gainsRate":15,"saving":"invested","status":"single"},"result":{"contributions":210000,"balance":661225.5,"growth":451225.5,"rothAfterTax":661225.5,"tradTaxAtWithdrawal":145469.61,"tradFromAccount":515755.89,"refundPerYear":1552,"sideBasis":46560,"sideBalance":146603.14,"sideGain":100043.14,"sideTax":15006.47,"sideAfterTax":131596.67,"tradAfterTax":647352.56,"gap":13872.94,"ahead":"roth","crossoverRate":19.9,"crossoverGap":2.1,"rothCost":7000,"tradCost":5448,"taxRoth":17867,"taxTraditional":16315,"taxSaved":1552,"savingRate":22.17,"bracketRate":24,"bracketGapPoints":-1.83,"driftPoints":2.27,"agiRoth":120000,"agiTraditional":113000,"bracketStep":1000,"form1040":[{"line":"1z","label":"Wages","roth":120000,"traditional":113000,"change":-7000},{"line":"11","label":"Adjusted gross income","roth":120000,"traditional":113000,"change":-7000},{"line":"12","label":"Standard deduction","roth":15750,"traditional":15750,"change":0},{"line":"15","label":"Taxable income","roth":104250,"traditional":97250,"change":-7000},{"line":"16","label":"Tax on that income","roth":17867,"traditional":16315,"change":-1552,"emphasis":true},{"line":"21","label":"Credits, including the saver's credit","roth":0,"traditional":0,"change":0},{"line":"22","label":"Tax after credits","roth":17867,"traditional":16315,"change":-1552},{"line":"23","label":"Other taxes","roth":0,"traditional":0,"change":0},{"line":"24","label":"Total tax","roth":17867,"traditional":16315,"change":-1552,"emphasis":true}],"computability":{"status":"final","deductedStatus":"final","fileReady":true,"blocking":[]}},"drivers":[{"key":"income","label":"Wages","step":10000,"gapDelta":-10853.33,"sentence":"Earning $10,000 more moves the deduction's value to $1,680, a 24% rate, and the crossover to 21.54%. A raise today is the ordinary reason a reader's answer changes."},{"key":"retirementRate","label":"Your rate in retirement","step":1,"gapDelta":6612.26,"sentence":"One more point of retirement tax, 23% instead of 22%, moves $6,612 toward the Roth. This is the input nobody can know, and it is the one that decides the answer."},{"key":"rate","label":"Assumed return","step":1,"gapDelta":4155.99,"sentence":"One more point of return, 8% instead of 7%, scales both piles, so it changes the size of the gap by $4,156 without changing which side is ahead. The crossover barely moves: 19.73% instead of 19.9%."},{"key":"years","label":"One more year","step":1,"gapDelta":1447.99,"sentence":"Waiting one more year, 31 instead of 30, changes the gap by $1,448. Time alone does not pick a wrapper, but it does grow the tax owed on an invested refund, which nudges the crossover down to 19.86%."}],"sensitivity":{"byRetirementRate":[{"retirementRate":0,"rothAfterTax":661225.5,"tradAfterTax":792822.17,"gap":-131596.67,"ahead":"traditional"},{"retirementRate":10,"rothAfterTax":661225.5,"tradAfterTax":726699.62,"gap":-65474.12,"ahead":"traditional"},{"retirementRate":12,"rothAfterTax":661225.5,"tradAfterTax":713475.11,"gap":-52249.61,"ahead":"traditional"},{"retirementRate":19.9,"rothAfterTax":661225.5,"tradAfterTax":661238.3,"gap":-12.79,"ahead":"tie"},{"retirementRate":22,"rothAfterTax":661225.5,"tradAfterTax":647352.56,"gap":13872.94,"ahead":"roth"},{"retirementRate":24,"rothAfterTax":661225.5,"tradAfterTax":634128.05,"gap":27097.45,"ahead":"roth"},{"retirementRate":32,"rothAfterTax":661225.5,"tradAfterTax":581230.01,"gap":79995.49,"ahead":"roth"}],"byStatus":[{"status":"single","label":"Single","taxSaved":1552,"savingRate":22.17,"crossoverRate":19.9,"gap":13872.94},{"status":"married-joint","label":"Married filing jointly","taxSaved":840,"savingRate":12,"crossoverRate":10.77,"gap":74244.61},{"status":"married-separate","label":"Married filing separately","taxSaved":1552,"savingRate":22.17,"crossoverRate":19.9,"gap":13872.94},{"status":"head-of-household","label":"Head of household","taxSaved":1540,"savingRate":22,"crossoverRate":19.75,"gap":14890.44},{"status":"qualifying-surviving-spouse","label":"Qualifying surviving spouse","taxSaved":840,"savingRate":12,"crossoverRate":10.77,"gap":74244.61}],"bySaving":[{"saving":"invested","label":"Invested","tradAfterTax":647352.56,"gap":13872.94,"crossoverRate":19.9},{"saving":"spent","label":"Spent","tradAfterTax":515755.89,"gap":145469.61,"crossoverRate":0}]},"assumptions":[{"key":"contribution","label":"Annual contribution","value":7000,"unit":"usd-per-year","provided":false,"source":null},{"key":"income","label":"Wages","value":120000,"unit":"usd-per-year","provided":false,"source":null},{"key":"retirementRate","label":"Your marginal rate in retirement","value":22,"unit":"percent","provided":false,"source":null},{"key":"years","label":"Years until you withdraw","value":30,"unit":"years","provided":false,"source":null},{"key":"rate","label":"Assumed annual return","value":7,"unit":"percent","provided":false,"source":null},{"key":"gainsRate","label":"Tax rate on the invested refund","value":15,"unit":"percent","provided":false,"source":{"id":"usc-title-26","name":"26 U.S.C. (Internal Revenue Code)","url":"https://uscode.house.gov/browse/prelim@title26","asOf":"2025-01-01","note":"The sections this comparison is built out of: § 1 rates, § 1(h) capital gain rates on the invested refund, § 63 standard deduction, § 25B saver's credit, § 219 and § 402(g) contribution limits, § 408A(d) tax-free qualified Roth distributions, and § 401(a)(9) required minimum distributions."}},{"key":"saving","label":"The tax the deduction saves","value":"invested","unit":"choice","provided":false,"source":null},{"key":"status","label":"Filing status","value":"single","unit":"choice","provided":false,"source":null}],"sources":[{"id":"rev-proc-2024-40","name":"IRS Rev. Proc. 2024-40 (2025 inflation-adjusted items)","url":"https://www.irs.gov/pub/irs-drop/rp-24-40.pdf","asOf":"2025-01-01","note":"The rate tables, standard deduction, and credit thresholds for tax year 2025, as published by the IRS. These are what the current rate on this page is measured against."},{"id":"pl-119-21-obbba","name":"One Big Beautiful Bill Act (P.L. 119-21)","url":"https://www.govinfo.gov/app/details/PLAW-119publ21","asOf":"2025-07-04","note":"The statute behind the standard deduction and the rate schedule used for 2025. It is also the reason the retirement rate on this page has to be an input: a rate schedule is a law, and laws change."},{"id":"usc-title-26","name":"26 U.S.C. (Internal Revenue Code)","url":"https://uscode.house.gov/browse/prelim@title26","asOf":"2025-01-01","note":"The sections this comparison is built out of: § 1 rates, § 1(h) capital gain rates on the invested refund, § 63 standard deduction, § 25B saver's credit, § 219 and § 402(g) contribution limits, § 408A(d) tax-free qualified Roth distributions, and § 401(a)(9) required minimum distributions."}],"warnings":[{"code":"bracket-gap","message":"Your next $1,000 of wages is taxed at 24%, but the deduction saved 22.17% across the whole $7,000. The contribution straddles a bracket boundary, so only the top slice came off at 24%. Multiplying by your bracket would have overstated the saving by $128. /tools/marginal-rate shows the same arithmetic on the next dollar of income."},{"code":"rates-equal","message":"You have set the retirement rate to 22%, within half a point of the 22.17% the deduction saves you today. At exactly equal rates the two wrappers are arithmetically identical. The only thing still separating them is the 15% tax on the growth of the invested refund, worth $15,006 by the end. That tax is the entire reason the crossover sits at 19.9% rather than at 22.17%: set it to 0 and the two numbers coincide."}],"disclaimer":"This compares two wrappers on federal income tax alone, for tax year 2025, on wage income with the standard deduction and no dependents. It does not know what rates will be when you retire, and it leaves out state and local tax, required minimum distributions, the five-year rule, employer matching contributions, Medicare premium surcharges, and every eligibility limit on who may contribute or deduct. It is arithmetic, not advice, and it does not pick a side. Check anything that matters against your own return and your own plan documents."}