✦ Roth Conversion Calculator

How much should you convert to Roth this year?

Most Roth conversion advice stops at "it depends." This calculator doesn't — it checks your MAGI against three real constraints at once (your federal bracket, IRMAA Tier 1, the ACA subsidy cliff) and tells you the exact dollar amount where the first one starts costing you money. Drop it into your own article in one script tag, and it looks like it was built for your site, not bolted onto it.

Sibling of <retirement-calc-spend> — same engine, different question.

Full explanation: The Roth Conversion Sweet Spot →

See it in context

Here's exactly what that looks like — a live instance embedded inside a sample article, using someone else's fonts and colors, not ours.

conversionclarity.com/blog/how-much-roth-conversion-before-it-costs-you
Tax-Bracket Planning · 7 min read

How Much Roth Conversion Before It Starts Costing You?

CC
Conversion Clarity
Roth conversion & tax-bracket strategy

Almost every client with a traditional IRA asks a version of the same question once they get near retirement: "Should I be converting to Roth?" The honest answer is always "convert up to X, not a dollar more" — and X is different for every household. Here's how to actually find yours.

The bet you're making

A Roth conversion is a bet on tax rates: pay tax on the converted amount now, at a rate you know, instead of later, at a rate you don't. That bet is most attractive in a year your income is unusually low — the gap between retiring and claiming Social Security, a sabbatical, a job change. Convert in a high-income year and you're just paying tax early for no reason.

Why "fill the bracket" is the classic play

The standard move is converting just enough to use up the rest of your current federal bracket without spilling into the next one. That's the cheapest tax rate you'll ever get on that money again — every dollar above it costs more per dollar converted. The tricky part is knowing exactly where that line sits once your other income, deductions, and filing status are factored in.

The bracket isn't always the binding constraint — IRMAA and the ACA cliff can bite first, and both are cliffs, not slopes.

Two constraints that bite before your bracket does

If you're 65 or older, converting too much can push your MAGI over an IRMAA threshold two years later — a Medicare premium surcharge that applies to your entire income, not just the amount over the line, so a single extra dollar of conversion can cost thousands. If you're under 65 and buying ACA coverage, a big conversion can shrink or erase your premium tax credit entirely once you cross the subsidy cliff. Both matter more than the bracket line for a lot of households — and most calculators only check the bracket.

A worked example

A single filer, 63, with $58,000 in other MAGI has about $63,800 of room left in the 22% federal bracket before spilling into 24% (2026 thresholds). But if they're buying ACA marketplace coverage, the subsidy cliff — 400% of the federal poverty line, $63,840 for a one-person household in 2026 — binds first, at just $5,840 of conversion room. The bracket check alone would have overstated the safe amount by more than 10x.

One year vs. a coordinated ladder

This calculator answers the single-year question: how much room do you have right now. But the real decision is usually a multi-year one — converting a little each year across your entire bridge period, not one lump sum. The full app's Bridge Optimizer searches year-shaped conversion ladders across your whole bridge window, tests each one with and without 0% capital-gain harvesting, and prices the ACA subsidy cost into every candidate — the coordinated version of the math above.

Try it with your own numbers

Enter your age and current MAGI on the right and the calculator checks all three constraints — bracket, IRMAA, ACA — and tells you which one binds first and how much room you actually have.

Try it

That's the exact <retirement-calc-roth> widget, unmodified — same script tag, same math as the full app. See the full picture → · Jump to the embed code ↓

For developers

Everything below is for embedding this calculator on your own site — integration code, theming, and events.

Live demos

Default (single, defaults)

Themed (orange accent, pre-Medicare household, ACA-constrained)

Preview your theme

Pick colors that match your site, then copy the CSS snippet at the bottom.

Theme colors

Big number, slider thumb, CTA button
#4f8ec9
Outer surface of the calc
#ffffff
Result area + toggle background
#f7f9fc
Title, slider values, result subline
#1a1f2e
retirement-calc-roth {
  --rc-accent: #4f8ec9;
  --rc-bg: #ffffff;
  --rc-surf: #f7f9fc;
  --rc-text: #1a1f2e;
}

Integration code

Drop this into your HTML:

<script src="https://app.retirementscenario.com/embed/v1/roth.js"></script>

<retirement-calc-roth></retirement-calc-roth>

Or pre-seed values relevant to your audience:

<retirement-calc-roth
  plan-type="household"
  current-age="62"
  annual-magi="75000">
</retirement-calc-roth>

Attributes

AttributeDefaultRange
plan-typehouseholdsingle or household (= MFJ)
current-age6750 – 85 (under 65 = ACA cliff applies; 65+ = IRMAA Tier 1 applies)
annual-magi10000030,000 – 1,000,000 (your MAGI before any Roth conversion)
refsrc(none)partner attribution tag

Honest scope: 2026 IRS brackets + standard deduction (refresh annually with the engine's IRS-limits refresh slice). Auto-detects your current federal bracket from your MAGI; conversion stays within current bracket (conservative). For FIRE-community strategies that fill higher brackets (e.g. "fill 22% bracket" or "fill 24% bracket"), use the full app's Roth Strategies card. Doesn't model SS taxability provisional income shifts from conversions; doesn't model state taxes; doesn't model itemized deductions. Single-year answer — for multi-year optimization across the bridge period, use the full app.

Theming

Override CSS custom properties on the host:

retirement-calc-roth {
  --rc-accent: #ff6b35;    /* primary color */
  --rc-bg: #ffffff;        /* card background */
  --rc-surf: #f7f9fc;      /* sub-surface (result area) */
  --rc-text: #1a1f2e;
  --rc-muted: #6a7280;
  --rc-border: rgba(20,30,50,0.10);
  --rc-radius: 12px;
}

Events

The element emits two custom events you can listen to:

document.querySelector('retirement-calc-roth')
  .addEventListener('rc-calculated', (e) => {
    console.log('Sweet spot conversion:', e.detail.sweetSpot);    // dollars, null if no constraints apply
    console.log('Binding constraint:', e.detail.bindingConstraint); // 'Federal X% bracket' | 'IRMAA Tier 1' | 'ACA subsidy cliff'
    console.log('All constraints:', e.detail.constraints);        // array of { name, threshold, headroom, impact, applicable }
    console.log('Current bracket:', e.detail.bracket);            // { top, rate, bracketNum }
    console.log('Medicare-eligible?', e.detail.medicareEligible);
  });

document.querySelector('retirement-calc-roth')
  .addEventListener('rc-cta-clicked', (e) => {
    console.log('User clicked CTA to:', e.detail.url);
  });