Once your income clears the IRS phase-out, a direct Roth IRA contribution is off the table — but the backdoor route usually isn't. This calculator runs all three strategies (Direct, Backdoor, Mega Backdoor) against your real numbers and flags the pro-rata trap before it costs you. Drop it into your own article in one script tag, and it looks like it was built for your site, not bolted onto it.
Composes with <retirement-calc-irmaa> (Medicare surcharge cliff) and <retirement-calc-roth> (Roth conversion sweet spot) as the Roth-strategies discovery trio.
Full explanation: Backdoor Roth Conversions →
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.
That's the exact <retirement-calc-backdoor> widget, unmodified — same script tag, same math as the full app. See the full picture → · Jump to the embed code ↓
Everything below is for embedding this calculator on your own site — integration code, theming, and events.
Pick colors that match your site, then copy the CSS snippet at the bottom.
retirement-calc-backdoor {
--rc-accent: #4f8ec9;
--rc-bg: #ffffff;
--rc-surf: #f7f9fc;
--rc-text: #1a1f2e;
}
Drop this into your HTML:
<script src="https://app.retirementscenario.com/embed/v1/backdoor.js"></script>
<retirement-calc-backdoor></retirement-calc-backdoor>
Or pre-seed values relevant to your audience:
<retirement-calc-backdoor
plan-type="household"
current-age="45"
annual-magi="300000"
current-401k="24500"
employer-match="20000"
existing-trad-ira="0"
plan-allows-mega="yes">
</retirement-calc-backdoor>
| Attribute | Default | Range |
|---|---|---|
plan-type | household | single or household (= MFJ — affects MAGI phase-out threshold) |
current-age | 45 | 25 – 70 (≥50 enables IRA catch-up + 401(k) catch-up; 60-63 enables SECURE 2.0 super catch-up) |
annual-magi | 300000 | 30,000 – 500,000 (household combined modified AGI) |
current-401k | 24500 | 0 – 35,750 (your employee 401(k) deferral this year) |
employer-match | 20000 | 0 – 50,000 (annual employer match contribution) |
existing-trad-ira | 0 | 0 – 1,000,000 (pre-tax Trad IRA balance — triggers pro-rata warning) |
plan-allows-mega | yes | yes or no (does your 401(k) support after-tax + Roth conversion?) |
refsrc | (none) | partner attribution tag |
Honest scope: 2026 IRS limits (refresh annually with the engine's IRS-limits refresh slice). Models USER's IRA only — for HH plans, the spouse can do the same backdoor strategy independently (effectively doubling the total). Mega Backdoor room is calculated from YOUR plan; spouse's plan has its own separate 415(c) room. Pro-rata rule warning is informational — doesn't compute the actual tax bill (depends on marginal rate). Doesn't model 415(c) reductions for other employer contributions (profit-sharing, etc.) beyond direct match. For multi-year contribution planning + plan modeling, use the full app.
Override CSS custom properties on the host:
retirement-calc-backdoor {
--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;
}
The element emits two custom events you can listen to:
document.querySelector('retirement-calc-backdoor')
.addEventListener('rc-calculated', (e) => {
console.log('Total Roth potential:', e.detail.totalRoth); // $ across all 3 strategies
console.log('Direct Roth IRA:', e.detail.directRoth); // { limit, status: 'full'|'partial'|'phased_out', phaseoutLow, phaseoutHigh }
console.log('Backdoor Roth IRA:', e.detail.backdoorRoth); // { limit, proRataPct, proRataWarning, existingTradIra }
console.log('Mega Backdoor:', e.detail.megaBackdoor); // { limit, room, status: 'available'|'plan_doesnt_allow'|'no_room', cap415c }
});
document.querySelector('retirement-calc-backdoor')
.addEventListener('rc-cta-clicked', (e) => {
console.log('User clicked CTA to:', e.detail.url);
});