Use this savings calculator to estimate how your balance can grow from a starting amount, regular contributions, and compound interest. You can also switch modes to find how long it may take to reach a goal or how much you need to save each period to hit a goal by a certain time.
Advanced options
How to use our Savings Calculator
- Choose a mode in "What do you want to solve for?" (project an ending balance, find time to a goal, or find the required contribution).
- Enter your "Starting balance (USD)" (what you have saved today).
- Enter your "Regular contribution (USD per period)" and pick a "Contribution frequency" (monthly is common). Use a negative number to model withdrawals.
- If you are projecting an ending balance (or solving for contribution), enter "Time to save (years)". Decimals are OK (example: 7.5).
- Open "Advanced options" and choose your "Interest rate type" (APY or APR), then enter "Interest rate (percent per year)".
- Pick a "Compounding frequency" and "Contribution timing" (start vs end of each period). This can change results.
- If you are using a goal mode, enter a positive "Savings goal (USD)" and (for time-to-goal) set a "Maximum years to search" so the calculator can return N/A if the goal is not reached.
- Optional: enter "Tax rate on interest" to estimate after-tax results, and/or "Inflation rate" to show the ending balance in today's dollars.
- Optional: enter low/high rate deltas to see low, base, and high ending balances.
- Click "Calculate". If you turned on the schedule table, scroll to see the year-by-year breakdown.
Definitions
Starting balance: The amount you have saved right now, before any new deposits or interest.
Regular contribution: The amount you add each period (or withdraw if negative).
Contribution frequency: How often you add the contribution (weekly, monthly, etc.).
Compound interest: Interest that is added to your balance, and then future interest is earned on the larger balance (interest on interest) [1] [4].
Compounding frequency: How often interest is added to the account (example: monthly = 12 times per year).
APR (nominal): A stated yearly rate that depends on how often it compounds. It is not automatically the true yearly growth rate.
APY (effective): The true yearly growth rate after compounding is included. Banks often advertise APY [1].
Contribution timing (start vs end): Whether you deposit at the start of each period (earns interest sooner) or at the end (earns interest later).
Inflation: Prices rising over time, which makes future dollars buy less than today. The calculator uses inflation to estimate purchasing power (today's dollars).
Tax on interest (estimate): A simple estimate of taxes applied to interest earnings (not to your starting balance or deposits). Interest income is generally taxable [3].
Methodology
1) Period counts and frequencies
We convert your "Contribution frequency" into periods per year:
Daily=365, Weekly=52, Biweekly=26, Monthly=12, Quarterly=4, Annually=1.
Let periods_per_year be that value. Let years be "Time to save (years)". Let total_periods = round(years * periods_per_year) only when years * periods_per_year is very close to a whole number; otherwise we keep it as a whole-number count by using total_periods = floor(years * periods_per_year) and then adding one more period when needed to cover the remaining partial time. (This avoids pretending you can do a fraction of a weekly or monthly deposit.)
2) Convert APR or APY into a periodic rate
If you choose APY, we treat it as an effective yearly rate (after compounding) [1].
r_period = (1 + APY/100)^(1/m) - 1
Here m is the compounding periods per year from "Compounding frequency".
If you choose APR (nominal), we first convert it to an implied APY using the selected compounding frequency.
APY = (1 + (APR/100)/m)^m - 1
Then we compute r_period from that APY using the same r_period formula above. We also output "APY implied by APR and compounding" as 100*APY.
3) Simulate balance growth period-by-period
We use an iterative (step-by-step) simulation so withdrawals (negative contributions), different frequencies, and goal searches behave consistently.
Let B_k be the balance at the start of period k. Let C be the regular contribution per period (can be negative). Let r_period be the periodic interest rate.
If timing = start: B_{k+1} = (B_k + C) * (1 + r_period)
If timing = end: B_{k+1} = B_k * (1 + r_period) + C
Negative balances are not allowed. If the simulation would make the balance go below 0 at any step, we stop and show an error explaining that withdrawals exceed the available balance.
4) Core outputs (base rate)
After simulating for total_periods, we compute:
EndingBalance = B_total_periods
TotalContributions = C * total_periods
InterestEarned = EndingBalance - StartingBalance - TotalContributions
5) Inflation and tax adjustments (optional)
If you enter an inflation rate, we estimate the ending balance in today's dollars (purchasing power) by discounting the future amount.
RealEnding = EndingBalance / (1 + inflation/100)^years
If you enter a tax rate on interest, we estimate taxes on interest only (not on your deposits). Interest income is generally taxable [3].
Tax = max(0, InterestEarned) * tax_rate/100
EndingAfterTax = EndingBalance - Tax
6) Goal modes
Time to reach goal: If you choose the time-to-goal mode, we simulate forward one contribution period at a time until the balance is at least the goal, or until we exceed the cap.
Stop when B_k >= goal, else N/A if k > cap_years * periods_per_year
If your starting balance already meets the goal, the time to goal is 0.
Required contribution to hit goal by a time: If you choose the solve-for-contribution mode, we use bisection (a split-in-half search) to find the contribution that makes the simulated ending balance match the goal.
Find C such that SimulatedEnding(C) - goal = 0 using bisection
We start with a low bound (usually 0) and increase a high bound until the goal is reachable, or return N/A if it cannot be reached within safe limits or if years = 0 and starting balance is below the goal.
7) Low, base, and high rate scenarios
If you enter low/high deltas (in percentage points), we run the same simulation three times using base_rate - low_delta, base_rate, and base_rate + high_delta.
If a scenario rate would be less than or equal to -100% per year, that scenario is shown as N/A (because the math would break or imply losing more than the entire balance in a year).
8) Year-by-year schedule (optional)
If you turn on the schedule table, we still simulate period-by-period, but we group results by year and show each year's starting balance, contributions added during that year, interest earned during that year, and ending balance. For performance, we may limit displayed rows for very long timelines while keeping the final totals correct.