The 4% rule spends the same inflation-adjusted amount every year, market be damned. Guyton-Klinger guardrails let spending move with the portfolio instead. This calculator runs a real 1,000-scenario simulation of both, side by side, against the numbers a reader enters — not a rule of thumb, the actual trade-off. 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-swr> — same engine, different question.
Full explanation: Flexible Spending Guardrails →
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-withdrawal> 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-withdrawal {
--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/withdrawal.js"></script>
<retirement-calc-withdrawal></retirement-calc-withdrawal>
Or pre-seed values relevant to your audience:
<retirement-calc-withdrawal
plan-type="household"
retirement-age="50"
nest-egg="2000000"
life-expectancy="95"
initial-wr-pct="4.5">
</retirement-calc-withdrawal>
| Attribute | Default | Range |
|---|---|---|
plan-type | household | single or household |
retirement-age | 65 | 45 – 80 |
nest-egg | 1000000 | 100,000 – 10,000,000 (portfolio at retirement) |
life-expectancy | 90 | retirementAge + 5 – 105 (defines retirement horizon) |
initial-wr-pct | 4.0 | 2.5 – 6.0 (% of portfolio withdrawn in year 1) |
refsrc | (none) | partner attribution tag |
Honest scope: Portfolio-only (no Social Security, no pension). The comparison is apples-to-apples with the original Trinity Study + Bengen 4% rule framing. Constant strategy holds spending at initialWRpct × nestEgg / 12 per month (inflation-adjusted). Guyton-Klinger uses ±20% band (engine default) and ±10% spending adjustment when triggered — the FIRE-community canonical GK setup. Both run at 1,000-sim Monte Carlo (same fidelity as the Spend / SWR embeds). Engine assumes 3% inflation; returns 7% nominal pre/post-retirement. For multi-event plans (staggered retirement, lump sums, real estate), use the full app.
Override CSS custom properties on the host:
retirement-calc-withdrawal {
--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-withdrawal')
.addEventListener('rc-calculated', (e) => {
console.log('Constant strategy:', e.detail.constant); // { successRate, p10End, p50End, p90End, avgRealSpend }
console.log('GK strategy:', e.detail.gk); // same + gkPerSimStats { medianCutCount, medianRaiseCount, ... }
console.log('Monthly starting spend:', e.detail.monthlyStartingSpend);
console.log('Initial WR:', e.detail.initialWRpct + '%');
});
document.querySelector('retirement-calc-withdrawal')
.addEventListener('rc-cta-clicked', (e) => {
console.log('User clicked CTA to:', e.detail.url);
});