One timeline, every decision. It crushes your debt, redirects what frees up into investing, finds the best Social Security claiming age, and solves for the earliest age you can actually retire — and confirms the money lasts.
One engine, two phases with detailed tax tracking. Before retirement, your savings compound at the growth rate while you invest each month; after retirement, the portfolio earns the (usually lower) drawdown return while you withdraw what your spending needs beyond your income. Everything sits on a single age timeline, and the retirement years are broken down into an annual cash flow table showing every income stream, expense, and tax.
Debt first, then redirect. Your debts are paid highest-rate-first (the avalanche method, which minimizes total interest). By default the model assumes payment rollover: when one debt clears, its payment attacks your remaining debts, so your total monthly debt budget stays committed until everything's paid — this is where a surprising amount of the plan's power comes from, and it quietly assumes discipline: the freed money keeps working instead of drifting into spending. Untick the rollover box to model each debt on its own schedule instead; freed payments then start investing immediately (if redirecting is on) rather than accelerating other debts. Once all debts clear, the full amount — minimums plus your extra — is redirected into investing. The model assumes those payments come from your working income, so it's built around clearing debt before the retirement date it recommends.
Employer match, while you’re working. If you set an employer match, the plan adds free money to your portfolio during the accumulation years: it contributes your match percentage of the first match-up-to percent of pay that you actually put in. Example: on a $75,000 salary with a 50% match up to 6% of pay, the match caps at 6% × $75,000 = $4,500 of your contributions, and the employer adds 50% of that — $2,250/yr — for as long as you’re contributing before retirement. Your salary grows each year at the salary-increase rate you set (0% by default, so the cap holds flat), and the match stops at your retirement age along with your own contributions. The match defaults to 0%, so it changes nothing unless you turn it on. Not modeled: IRS annual contribution and compensation limits, vesting schedules, and true-up provisions — treat a large match as an upper bound.
Federal income tax calculated annually. For each year in retirement, the calculator computes taxable income from your pension, a portion of Social Security (using the official 0–85% formula, with the taxability thresholds set by your filing status — $25k/$34k single, $32k/$44k married), other income, and your 401(k) drawdown — a traditional-account withdrawal, taxed as ordinary income. That income is reduced by your standard deduction (a 2026 base figure that grows each year with your inflation rate — the same index applied to the federal brackets, so the two stay in step), then taxed using 2024 federal brackets adjusted for inflation each year. From age 65 on, the calculator automatically adds the IRS age-65+ additional standard deduction ($1,650 per spouse for joint filers — both spouses assumed 65+ — or $2,050 single, for 2026, escalated alongside the base). The separate, temporary OBBBA "senior bonus" deduction ($6,000 per person 65+, for tax years 2025–2028, phased out at higher incomes) is not modeled, so a low-to-moderate-income couple in those specific years would owe a bit less than shown. You choose Single or Married filing jointly. And don’t be surprised by $0 tax years in the ledger once Social Security starts — they’re real and common: when the checks cover most of your spending, the drawdown is small, most of the benefit stays out of the taxable column at low provisional income, and the standard deduction absorbs the rest. They don’t always last, though — the $25k/$32k thresholds never adjust for inflation, so each year drags a little more of the benefit into the taxable column, and from your RMD age on, required minimum distributions force taxable withdrawals whether you need the cash or not \u2014 the ledger\u2019s RMD column shows exactly when the zeros end. State tax is applied at a flat rate you set, on your income excluding Social Security — most states, Virginia included, exempt Social Security from state income tax, so it's removed from the state base. Virginia defaults to 5.75% (its top bracket); adjust the rate for your own state or use a blended rate. This stays a flat-rate approximation: it doesn't model state-specific deductions such as Virginia's 65+ age deduction or its graduated lower brackets, so treat it as close rather than exact.
Annual cash flow table. For each retirement year the table totals your guaranteed income (Pension + Social Security + Other) and your total expenses (Federal tax, State tax, Debt until cleared, Living, Medical), and shows the Drawdown — the cash pulled from your 401(k) to cover the gap, equal to Total Expenses minus Total Income. Like every other number on the page, this table follows the "Show in today's dollars" toggle above the chart. Ticked (the default), it shows buying power and matches the chart and verdict exactly. Untick it and the whole tool — this table included — switches to future (nominal) dollars: a ledger of the actual transactions, where each figure is the amount that would really hit your bank account or tax bill that year. That's why Social Security climbs year over year in future-dollar view (its COLA) while in today's-dollar view it holds steady buying power. Flip the toggle back and forth once — watching the same ending balance change size is the clearest picture of what inflation does to a decades-long plan. In future-dollar view the Total row sums dollars from different years, so treat it as rough scale, not a precise figure — a 2040 dollar and a 2060 dollar aren't worth the same. The 401(k) keeps compounding untaxed inside the account; only the drawdown is taxed, as ordinary income. If a plan fails, the ledger stays honest past the failure point: the Drawdown column shows only what the portfolio could actually supply (the account drains to exactly zero in the depletion year), taxes are recomputed on what was really withdrawn — no tax on money that never moved — and the rust short figure beside it is the yearly gap the plan can't fund. That gap is the actionable number: it's the part-time income, spending cut, or extra working years that would close the hole. Because the withdrawal is itself taxable and also nudges more of your Social Security into the taxable column, the drawdown and the tax on it are solved together each year rather than one before the other. One thing that surprises people: your balance can rise in a year you also drew from it, because the untaxed growth on the account outran what you pulled out. Required minimum distributions are modeled from your RMD age on and get their own column — see the RMD paragraph below.
Inflation, honestly. Living and taxes grow with general inflation; medical grows at its own faster rate; Social Security always carries a COLA; pensions and other income only do if you tick the box. You can also step living expenses down at future ages — say when a mortgage is paid off — and each new amount (entered in today's dollars) holds its real value and inflates from there. Standard deduction and federal brackets are also escalated by inflation each year. Every number on the page follows the "Show in today's dollars" toggle: ticked (the default), balances reflect real buying power; unticked, they're the raw future amounts your statements will show. The honest view is the default on purpose — future dollars always look bigger than they'll feel.
Social Security earnings test. If you claim Social Security before your full retirement age and tick "other income is earned," the model applies the IRS earnings test: for years before FRA, $1 of benefit is withheld for every $2 of earnings above the annual limit (an editable field, set to the 2026 figure of $24,480, which then grows with inflation across the projection — update it each year when SSA announces the new number). The test only touches earned income — wages and self-employment — never pensions or investments, so leave the box unticked for passive income. Withheld benefits aren't lost: at FRA the model credits the withheld months back, recomputing your benefit as if you had claimed that many months later, which permanently lifts it from FRA on (you'll see Social Security step up at 67). The partial earnings test in the year you reach FRA is approximated as no test.
Married couples: two benefits, a spousal top-up, and the survivor step-down. When filing status is Married, the model runs two Social Security records on one household timeline: each spouse's own benefit from their own claiming age (same reduction and delayed-credit schedule, each against their own FRA), plus the spousal top-up — if the lower earner's full benefit is less than half the higher earner's, the difference is added under post-2015 deemed-filing rules: it can't begin until the higher earner has filed, it's reduced (25/36 of 1% per month for the first 36 months, then 5/12 of 1%) if it starts before the recipient's own FRA, and it never grows for waiting past FRA — delayed credits apply to your own record only. The optimizer searches every claiming-age pairing 62–70 for both of you. If you enter a pass-away age, from that year on the survivor keeps the larger of their own benefit or the deceased's — with an 82.5%-of-PIA floor when the deceased claimed early, or the deceased's PIA plus delayed credits earned to death if they hadn't claimed — and the household's taxes flip to single filing: tighter brackets, half the standard deduction, and lower Social Security taxability thresholds. That's the "widow's tax torpedo": income falls and the tax rate on what's left rises, at the same time. Simplifications, stated plainly: the survivor benefit is applied unreduced from the death year (no pre-FRA survivor reduction is modeled), the survivor/own switch-up strategy (take a survivor benefit early, let your own grow to 70) is not searched, the earnings test is applied to your benefit only, and no WEP/GPO offset applies — both were repealed in January 2025.
The retire-sooner line in the verdict. When it has something true to say, the verdict closes with what it would take to retire five years earlier than the optimizer's pick (never earlier than your current age). The spending cut shown is solved by binary search: the smallest reduction in retirement living costs (today's dollars, applied to the base amount and any step-downs) that lets the earlier age pass the exact same test as the verdict itself — crash-stressed, lasting to plan age, claiming ages re-optimized for the earlier date. It rounds up to the next $500, so the shown figure genuinely clears the bar. The line disappears when there's nothing sooner to price: the base plan doesn't work yet, the optimizer already has you retiring now, or no spending cut alone can bridge the gap.
RMDs and the side account. From your required-minimum-distribution age — 73 if you were born 1951–1959, 75 if 1960 or later (derived from your current age; born before 1951 is simplified to 72) — the IRS forces money out of the 401(k) every year: prior year-end balance divided by the Uniform Lifetime Table divisor for that age, taxed as ordinary income whether you need the cash or not. The ledger shows this in its own RMD column, and Drawdown becomes only the extra withdrawn on top. When the forced amount exceeds what your spending needs, the after-tax leftover is banked in a side account — deliberately modeled as a plain checking account: zero interest, zero tax on withdrawals, no crash exposure (cash doesn't crash; the crash test hits the 401(k) only). Any year's surplus income beyond expenses is banked the same way. Money then flows in strict order: guaranteed income and RMD cash pay the bills first, the side account fills any gap next (spending the dead, tax-free money first is both tax-smart and drag-smart), and only then does an extra taxable 401(k) withdrawal happen. The chart and verdict show the two accounts combined; the ledger splits them into 401(k) and Side acct columns whenever the side account actually holds money. The zero-interest choice is deliberately conservative — in today's-dollar view you can watch banked cash lose buying power, which is real. Not modeled, stated plainly: the April-1 deferral of the very first RMD, a separate IRA for your spouse with its own RMD clock (the model holds one household account keyed to your age), the spouse-10-years-younger Joint Life divisor table, and deliberate bracket-filling or Roth-conversion strategies that pull extra 401(k) money in cheap-tax years on purpose.
The crash test (sequence-of-returns risk). Steady average returns hide the single biggest danger in retirement: a bad market year right after you stop working, while withdrawals have already begun. Two retirees can earn the same average return and end up in wildly different places depending on when the bad year lands. So the optimizer doesn't ask "does this age work if everything goes fine?" — it asks "does this age still work if your portfolio drops by your crash-test percentage in the very first year of retirement?" The recommended age must survive that shock and still fund spending to your plan age. Normal returns resume the year after the crash — no bounce-back rally is assumed, because modeling a convenient recovery would sneak the optimism right back in. The chart shows both paths: the green line is your expected journey, the dashed rust line is the same plan surviving the crash. Withdrawals are modeled on the mid-year convention — spread across each year — so money you spend isn't credited a full year of growth it never had time to earn.
Outside the crash-test year, returns are assumed steady; real markets are messier than any single number, so a plan that only barely survives the crash test should still be treated as a yellow flag, and a plan tested at 0% should be treated as having no margin at all. Tax calculations are simplified (no capital gains treatment, no state tax brackets, no deductions beyond standard) — this is a planning tool, not a full tax return.