bracketfilling.com

Methodology

How the calculator computes every figure it shows you, and where the numbers come from. Tax-data files are in src/calc/data/2026/; each carries a verifiedOn date and a source URL so the math can be audited independently.

Federal income tax

Marginal-bracket tax is computed against the 2026 ordinary-income brackets from IRS Rev. Proc. 2025-32, for all four filing statuses: single, married filing jointly (MFJ), married filing separately (MFS), and head of household (HOH). Bracket cutoffs and standard deductions live in src/calc/data/2026/federal.json. The taxable-income stack is: ordinary income first (wages, IRA distributions, Roth conversions, Social Security taxable portion), then long-term capital gains on top, consistent with the stacking rule under IRC §1(h). For a plain-language explanation of how these brackets interact with Roth conversions, see What is bracket filling?

Source: IRS Rev. Proc. 2025-32 (PDF)

Long-term capital gains

LTCG rates (0%, 15%, 20%) are applied to the capital-gains portion of income using the stacking method: the taxable LTCG amount is placed on top of the ordinary-income stack and the applicable LTCG bracket rate is determined by where that stack lands relative to the LTCG thresholds for the filer's status. The 2026 thresholds are from Rev. Proc. 2025-32 and stored alongside the ordinary-income brackets in federal.json.

Source: IRS Rev. Proc. 2025-32 (PDF)

Standard deduction and the 65+ add-on

The 2026 standard deduction is $16,100 (single/MFS), $32,200 (MFJ), and $24,150 (HOH). Filers aged 65 or older receive an additional $2,050 (single) or $1,650 per qualifying spouse (MFJ). These figures come from Rev. Proc. 2025-32 and are stored in federal.json under standardDeduction and additional65Plus. The calculator applies the standard deduction unless the user provides SALT inputs large enough to exceed it after applying the SALT cap (see SALT section below).

Source: IRS Rev. Proc. 2025-32 (PDF)

Social Security taxation

The taxable portion of Social Security benefits is determined by the IRS Pub 915 worksheet. Provisional income equals other income plus tax-exempt interest plus 50% of gross Social Security benefits. Below the base threshold ($25,000 single; $32,000 MFJ; $0 MFS), no benefits are taxable. Between the base and the second threshold ($34,000 single; $44,000 MFJ), up to 50% of benefits are taxable. Above the second threshold, up to 85% of benefits are taxable under a two-tier formula. The taxable amount is always capped at 85% of gross benefits. The implementation is in src/calc/social-security.ts.

Source: IRS Publication 915 (PDF)

IRMAA (Medicare Part B and D surcharges)

Income-Related Monthly Adjustment Amounts (IRMAA) are Medicare premium surcharges that step up at discrete MAGI thresholds. The 2026 IRMAA tiers are sourced from the CMS announcement and stored in src/calc/data/2026/irmaa.json. A critical detail is the 2-year lookback: 2026 IRMAA is assessed on 2024 MAGI. The calculator models this by using the projected MAGI for the lookback year when determining which IRMAA tier applies. For single filers in 2026, the base tier (no surcharge) covers MAGI up to $109,000; the top tier begins above $500,000. Each tier jump represents a cliff, not a gradual phase-in, so a $1 Roth conversion above a threshold can trigger hundreds of dollars in additional annual premiums.

Source: CMS: 2026 Medicare Part B Premiums and Deductibles

Required Minimum Distributions

RMD amounts are calculated using the Uniform Lifetime Table (IRS Pub 590-B, Table III). The applicable table divisor is looked up by age for each projection year. The Required Beginning Date (RBD) age follows the SECURE 2.0 cohort rules: age 72 for those born before 1951, age 73 for those born 1951-1959 (current cohort), and age 75 for those born in 1960 or later (takes effect beginning in 2033). The implementation is in src/calc/rmd.ts and src/calc/secure2.ts. Uniform Lifetime Table divisors are stored in src/calc/data/uniform-lifetime.json.

Source: IRS Publication 590-B, Uniform Lifetime Table (PDF)

Net Investment Income Tax (NIIT)

The 3.8% NIIT under IRC §1411 applies to the lesser of net investment income or the amount by which MAGI exceeds the applicable threshold ($200,000 single/HOH; $250,000 MFJ; $125,000 MFS). The calculator counts LTCG and taxable investment income as net investment income; Roth conversion income is ordinary income and not subject to NIIT directly, though it raises MAGI and can therefore expose investment income that was previously below the threshold. The NIIT thresholds are not inflation-adjusted and are stored in federal.json under niit.threshold. Implementation is in src/calc/niit.ts.

Source: IRC §1411; see also IRS Q&A on the Net Investment Income Tax

ACA Premium Tax Credit

The Premium Tax Credit (PTC) under IRC §36B applies to households enrolled in marketplace coverage with MAGI between 100% and 400% of the federal poverty level (FPL). The enhanced subsidies enacted by the American Rescue Plan Act (ARPA) and extended through the Inflation Reduction Act expired after tax year 2025. For 2026, the pre-ARPA structure is restored: eligibility ends at 400% FPL with a hard cliff. Above 400% FPL, a $1 Roth conversion can eliminate the entire credit. The applicable percentage table for 2026 comes from Rev. Proc. 2025-25 and interpolates linearly within each income band, matching the Form 8962 applicable-figure methodology. FPL figures follow the IRC §36B(d)(3)(B) vintage rule: a coverage year uses the guidelines in effect on the first day of its open enrollment period, so 2026 coverage uses the January 2025 guidelines ($15,650 for a one-person household; the 400% cliff sits at $62,600 single, $84,600 for a two-person household). Both tables are stored in src/calc/data/2026/aca-fpl.json. Implementation is in src/calc/aca.ts.

Sources: IRS Rev. Proc. 2025-25 (PDF) and HHS Federal Poverty Guidelines

SALT deduction

The One Big Beautiful Act (OBBBA) raises the SALT cap from $10,000 to $40,000 for tax years 2025-2029. A phase-out applies to higher-income filers: for AGI above $500,000, the cap is reduced by 30% of the excess over $500,000, reaching a floor of $10,000 (the pre-OBBBA TCJA cap) at AGI of $600,000 or above. The phase-out applies equally to all filing statuses under the enacted text. After 2029 the cap reverts to $10,000 under current law. The $40,000 cap is stored in federal.json under saltCap; the phase-out logic is in src/calc/salt.ts.

Source: Tax Foundation analysis of OBBBA SALT provisions

State income tax

The calculator models state income tax for all 42 jurisdictions that impose a broad-based individual income tax, plus Washington's narrow capital gains excise tax. The seven no-income-tax states (AK, FL, NV, SD, TN, TX, WY) return zero. New Hampshire's interest and dividends tax was repealed effective January 1, 2026, so NH is now treated as a no-tax state. Each state module in src/calc/state/ cites its source DOR publication and verification date. Washington's capital gains excise tax is handled separately in src/calc/state/wa.ts: a 7% base rate applies to net taxable long-term capital gains above an annually-adjusted standard deduction ($278,000 for 2025/2026 pending DOR update), with a 2.9% surtax on gains above $1,000,000 (per RCW 82.87.040). Washington's excise tax does not apply to ordinary income, wages, or retirement distributions.

WA sources: WA DOR capital gains tax page and RCW 82.87.040

Conversion warnings

The calculator surfaces three specific warnings when inputs indicate a risk:

5-year clock under age 59.5. Roth conversions create a separate 5-year holding period for tax-free withdrawal of the converted principal. If the account owner is under 59.5, withdrawing a converted amount within 5 years of the conversion triggers a 10% early distribution penalty on that amount (not on earnings, which follow the Roth contribution 5-year rule). The calculator warns when age at conversion is under 59.5.

IRMAA cliff. When projected MAGI in the lookback year is within $10,000 of an IRMAA tier boundary, the calculator shows the dollar-per-month premium impact of crossing the tier.

ACA cliff. When projected MAGI is within 5% of the 400% FPL threshold and the household is enrolled in marketplace coverage, the calculator shows the estimated credit that would be lost at the cliff.

Annual data refresh

Federal bracket, standard deduction, IRMAA, and ACA figures are refreshed each fall when the IRS Rev. Proc. and CMS announcements are published (typically October-November). State data is updated when state DOR sources publish the following-year rates. The prep-tax-year script scaffolds the new data directory and validate-tax-year runs structural checks to catch common transcription errors. Every data file carries a verifiedOn date so the age of each dataset is visible at a glance.

Limitations and approximations

Inflation indexing assumes statutory current law. Federal brackets, standard deductions, LTCG breakpoints, IRMAA tiers, and ACA FPL multiples inflate each projection year at the user's inflation rate. NIIT thresholds (IRC §1411), the SALT cap (OBBBA), and Social Security provisional income thresholds (IRC §86) are not indexed and are held nominal. This preserves the real-world SS tax torpedo and the slow NIIT creep into middle-income retirees, but projections beyond ~10 years embed the assumption that those statutes stay frozen. If the SS thresholds are re-indexed (periodically proposed), late-year numbers will be off.

No itemized deductions other than SALT. The calculator compares the standard deduction against SALT-only itemized. Mortgage interest, charitable contributions, medical expenses above the 7.5% AGI floor, and casualty losses are not modeled. Users with significant deductions in those categories should expect actual federal taxable income to be lower than the calculator shows.

No IRA basis (pro rata) modeling. The calculator treats traditional balances as fully pretax. If your IRAs carry nondeductible basis (Form 8606), the taxable share of each conversion drops by the pro rata fraction: basis divided by the December 31 value of all traditional, SEP, and SIMPLE IRAs plus the year's conversions and distributions (IRC §408(d)(2)). The worked math is at the pro rata rule guide.

ACA benchmark plan cost is a national-average approximation. The PTC calculation interpolates a benchmark SLCSP from $4,800 at age 21 to $9,600 at age 64. Real Marketplace premiums vary substantially by rating area: rural and aging-population markets (West Virginia, parts of Florida) skew higher; competitive urban markets (Los Angeles, New York) skew lower. The estimated subsidy can be off by $1,000–$3,000 per year in either direction.

No multi-state residency. The state engine assumes a single state of residence for the entire projection. Snowbirds, mid-projection moves, and partial-year resident sourcing are not modeled.

State-specific exemptions modeled approximately. The engine supports income-conditioned retirement exclusions (AGI-gated stepwise schedules), and AL and CT use it exactly: AL's $6,000-per-person exemption for defined-contribution distributions at 65+ (Ala. Code §40-18-19, Act 2022-297) and CT's retirement deduction with the PA 23-204 phase-out (full below $75,000 single / $100,000 MFJ federal AGI, stepping down to zero at $100,000 / $150,000; Conn. Gen. Stat. §12-701(a)(20)(B)). Remaining gaps: NJ's pension exclusion is still modeled as a flat $75,000 cap rather than its income-conditioned phase-out (fully phased out above $150,000 NJ gross income); AL's unlimited defined-benefit pension exemption is not modeled (the engine cannot distinguish pension source, so DB pensioners see overstated AL tax); CT's partial SS taxation above the AGI thresholds is modeled as fully exempt; MN's income-based SS subtraction is applied conservatively, over-taxing lower-income MN retirees; MD's 2% CG surtax above $350,000 AGI and MO's full LTCG subtraction (effective 2025) are not yet wired in.

No property tax in SALT calculation. SALT is computed against state income tax only. Users in high-property-tax states (NJ, IL, NH) may have meaningfully higher itemized deductions in reality.

No LTCG harvesting integration. The math layer has a working LTCG module, but the orchestrator does not automate harvesting in years with bracket headroom. Run those scenarios manually.

No Roth conversion 5-year-clock penalty modeling. The calculator warns when a conversion is scheduled before age 54.5 but does not compute the 10% early-withdrawal penalty on withdrawals within the 5-year window. For the 60+ target audience this is rare; for users in their early 50s the warning is the right disclosure level but not a substitute for manual review.

Foreign earned income exclusion not modeled. IRC §1411 NIIT MAGI adds back the §911 exclusion; this calculator uses AGI directly. Users with substantial foreign earned income should expect NIIT figures to be slightly understated.

Tax data carries a verification date. Each src/calc/data/<year>/*.json file carries a verifiedOn date and a source URL. State data was sourced May 2026; 2026 federal data from Rev. Proc. 2025-32; IRMAA from the CMS announcement; ACA FPL from HHS; ULT divisors from Pub. 590-B Appendix B Table III. Changes published after the verifiedOn date are not yet reflected.