Calculator
Tax Threshold Headroom
Roth conversions, capital-gains harvesting, an extra IRA withdrawal — they all push you toward five separate lines that don't agree with each other. This works out exactly how much room you have to each one: the top of your bracket, the 0% capital-gains breakpoint, the net investment income tax, the next IRMAA tier, and the ACA subsidy cliff. Two of those are cliffs where a single dollar costs the whole year.
Uses published 2026 federal figures
Your headroom · 2026
Fill in your income below, then press Calculate to see how much room you have to each threshold.
Income this year
Ordinary income is everything taxed at normal rates: wages, pensions, traditional IRA and 401(k) withdrawals, interest, non-qualified dividends, short-term gains, and the taxable part of Social Security. Leave out whatever you're still deciding about — that goes in the last box.
Qualified dividends and long-term gains go in their own box because they are taxed on a separate schedule, stacked on top of the ordinary income.
HSA, deductible IRA, and so on
Deduction
You and your household
Filing status sets every bracket and threshold on the page. Being 65 or older adds two separate deductions, one of which tapers away as income rises — which is why an extra dollar can cost more than your bracket rate.
Household size and region only matter for the ACA line: the subsidy cliff is 400% of the federal poverty level for a household of your size, and Alaska and Hawaii have their own schedules.
MAGI add-backs
Three of the five lines are measured against modified AGI, and the three modifications are not the same. Municipal bond interest is added back for both IRMAA and the ACA even though it is never taxed. Untaxed Social Security is added back for the ACA only.
Net investment income is what the 3.8% surtax can actually reach — interest, dividends, capital gains, rents and royalties. A Roth conversion is not investment income, but it raises MAGI, so it can drag this into the surtax without being taxed by it.
Counts for IRMAA and the ACA, though it is never taxed
Counts for the ACA line only
Interest, dividends, gains, rents — what the 3.8% surtax reaches
What you're planning
The amount of extra ordinary income you're considering realizing this year — a Roth conversion, an IRA withdrawal, a capital-gains harvest, a chunk of consulting work. Leave it at $0 to see purely how much room you have.
The two toggles decide which lines apply to you. If nobody is on Medicare and you buy your own cover, the ACA cliff is the one that matters and IRMAA is not — and the other way round after 65.
A conversion, a withdrawal, a gains harvest
Turns the IRMAA line on and prices it
For educational purposes only. Results are estimates and do not constitute financial, tax, or legal advice. Consult a qualified professional before making any financial decisions.
How to use it
Put in the income you already expect this year and leave extra income you're considering at $0. The results tell you how much room you have to each line before you commit to anything.
Then raise that last figure and watch the bars move. The moment one crosses its marker it turns amber, and if it was a cliff the results card tells you what that dollar just cost.
Turn on Real-Time Calculation to have it update as you type, or press Calculate when you're ready. Press Example to load a worked case — a retired couple on Medicare sizing up a Roth conversion — if you'd rather see it working first.
The lines you don't qualify for are left out rather than shown as irrelevant rows: no Medicare, no IRMAA line; no marketplace cover, no ACA cliff.
Cliffs and steps
Two of these five lines are cliffs. Go one dollar over an IRMAA tier and the surcharge applies to the whole year. Go one cent over 400% of the poverty level and the entire premium tax credit — often five figures — disappears and is repaid at filing.
The other three are steps. Crossing the top of your bracket, the 0% capital-gains breakpoint, or the net investment income line only charges the higher rate on the income above it. Nothing retroactive happens, and reorganizing a year around one of them is usually wasted effort.
The tool leads with the nearest cliff for that reason, and mentions the nearest line of any kind second. A $17,000 bracket top is not more urgent than a $29,000 IRMAA tier just because it is closer.
Why the numbers aren't just subtraction
The obvious way to work out headroom is to subtract where you are from where the line is. It is wrong, sometimes by thousands.
If you're 65 or over and inside the senior deduction's phase-out, every extra dollar of income raises your taxable income by $1.06 — a dollar of income plus six cents of deduction going away. Subtraction misses that entirely.
So each figure here is solved instead: the tool re-runs your whole return, narrowing in until the measure lands exactly on its line. The same machinery handles ordinary income stacking underneath your capital gains and pushing them out of the 0% band.
Assumptions and limits
- Every constant is a published 2026 federal figure — brackets and deductions from IRS Rev. Proc. 2025-32, IRMAA from the CMS fact sheet of 14 November 2025, poverty guidelines from HHS. They change every year.
- IRMAA looks back two years, so what you realize now sets the surcharge two years out. Those tiers aren't published yet; this applies the current table as the closest stand-in and says so on the results.
- “Modified AGI” means three different things here and all three are computed separately. Tax-exempt interest is added back for IRMAA and the ACA; untaxed Social Security for the ACA only.
- Not modeled: the alternative minimum tax, state income tax, tax credits, the taxable-Social-Security calculation, and the phase-outs on the qualified business income deduction.
- The ACA cliff is priced from the credit figure you enter, because what the credit is worth depends on your local benchmark plan — which no calculator can know without your zip code and everyone's ages.
- An estimate for planning. Not tax advice, and not a substitute for someone looking at your actual return.
