Calculators are made available to you as tools for independent use and are not intended to provide advice. We cannot and do not guarantee their applicability or accuracy. All examples are hypothetical and are for illustrative purposes only. Please visit your branch to seek personalized advice from qualified professionals for all personal finance issues.
Retirement Planner
Project your savings through retirement and see whether your plan keeps you on track.
Retirement planner
Will your savings last?
Project your savings to retirement and see whether they cover the income you'll need.
About you
Current age
Retirement age
The age you plan to stop working and start drawing on your savings.
Years to draw on funds
How long your savings need to produce income after you retire.
Savings
Current retirement savings
Annual contribution
What you add to your retirement savings each year, at year end.
Return before retirement
Expected annual growth of your investments while you're saving.
Return during retirement
Expected annual growth after retirement — typically lower as investments shift to safer assets.
Annual inflation
How fast prices rise. This is what converts today's dollars into future dollars — at 2.5%, what costs $100 today costs about $240 in 35 years. Your income need grows with it, before and during retirement.
Required annual income
What you'd need per year if you retired today — in today's dollars, meaning today's prices. We grow it with inflation automatically, so the amount withdrawn at retirement buys the same lifestyle at that year's higher prices.
Government pension
CPP and OAS, in today's dollars. These benefits rise with inflation, so they keep their buying power throughout retirement.
Employer pension
Annual pension from an employer plan. Unlike the today's-dollar figures above, this is a fixed dollar amount — it doesn't grow with inflation, so its buying power slowly shrinks over time.
Other annual income
Rental income, annuities, or other sources. A fixed dollar amount — it doesn't grow with inflation, so its buying power slowly shrinks over time.
You'll save by retirement
That's
more than your goal of — you're on track.
You'll need
more to meet your goal of .
Consider raising your annual contribution to
.
Balance over time
By age
Saving years
Retirement years
Goal at retirement
The lump sum your savings need to reach by your retirement year. It's in future dollars — the prices of that year, not today's.
First-year withdrawal
Bigger than the income you entered because it's in future dollars: your today's-dollar need, grown by inflation over every year between now and retirement, buying the same lifestyle at that year's prices.
Funds last to age
Max annual income
In today's dollars so you can compare it directly with the Required annual income you entered — today's dollars describe buying power at today's prices.
Retirement report
Year by year| Age | Contribution | Return | Withdrawal Withdrawals are in future dollars — the amount grows with inflation each year so your buying power stays level through retirement. | Balance |
|---|---|---|---|---|
Compare
When should you retire?
Each scenario has its own retirement age, return rates, and inflation. Savings, contributions, and income needs are shared from the Plan tab.
Saved by retirement
Retirement age
setScenarioField(i, 'retirementAge', val))(Math.max(50, Math.min(75, parseFloat(String($event.target.value).replace(/[^0-9.-]/g, '')) || scenario.retirementAge)))"
@blur="$event.target.value = fmtInt(scenario.retirementAge)"
/>
setScenarioField(i, 'retirementAge', val))(+$event.target.value)"
@pointerdown="dragging = true"
@pointerup.window="dragging = false"
@pointercancel="dragging = false"
@blur="dragging = false"
:style="`background: linear-gradient(to right, var(--theme-card-accent) 0%, var(--theme-card-accent) ${(((scenario.retirementAge) - (50)) / ((75) - (50))) * 100}%, var(--theme-separator) ${(((scenario.retirementAge) - (50)) / ((75) - (50))) * 100}%, var(--theme-separator) 100%)`"
/>
Return while saving
setScenarioField(i, 'preRate', val))(Math.max(0, Math.min(12, parseFloat(String($event.target.value).replace(/[^0-9.-]/g, '')) || scenario.preRate)))"
@blur="$event.target.value = fmtPct2(scenario.preRate)"
/>
setScenarioField(i, 'preRate', val))(+$event.target.value)"
@pointerdown="dragging = true"
@pointerup.window="dragging = false"
@pointercancel="dragging = false"
@blur="dragging = false"
:style="`background: linear-gradient(to right, var(--theme-card-accent) 0%, var(--theme-card-accent) ${(((scenario.preRate) - (0)) / ((12) - (0))) * 100}%, var(--theme-separator) ${(((scenario.preRate) - (0)) / ((12) - (0))) * 100}%, var(--theme-separator) 100%)`"
/>
Return in retirement
setScenarioField(i, 'postRate', val))(Math.max(0, Math.min(12, parseFloat(String($event.target.value).replace(/[^0-9.-]/g, '')) || scenario.postRate)))"
@blur="$event.target.value = fmtPct2(scenario.postRate)"
/>
setScenarioField(i, 'postRate', val))(+$event.target.value)"
@pointerdown="dragging = true"
@pointerup.window="dragging = false"
@pointercancel="dragging = false"
@blur="dragging = false"
:style="`background: linear-gradient(to right, var(--theme-card-accent) 0%, var(--theme-card-accent) ${(((scenario.postRate) - (0)) / ((12) - (0))) * 100}%, var(--theme-separator) ${(((scenario.postRate) - (0)) / ((12) - (0))) * 100}%, var(--theme-separator) 100%)`"
/>
Inflation
setScenarioField(i, 'inflation', val))(Math.max(0, Math.min(8, parseFloat(String($event.target.value).replace(/[^0-9.-]/g, '')) || scenario.inflation)))"
@blur="$event.target.value = fmtPct2(scenario.inflation)"
/>
setScenarioField(i, 'inflation', val))(+$event.target.value)"
@pointerdown="dragging = true"
@pointerup.window="dragging = false"
@pointercancel="dragging = false"
@blur="dragging = false"
:style="`background: linear-gradient(to right, var(--theme-card-accent) 0%, var(--theme-card-accent) ${(((scenario.inflation) - (0)) / ((8) - (0))) * 100}%, var(--theme-separator) ${(((scenario.inflation) - (0)) / ((8) - (0))) * 100}%, var(--theme-separator) 100%)`"
/>
Goal at retirement
Max annual income
The most this scenario could sustain each year (today’s dollars), ending retirement at exactly $0.