Investment Calculator
Project the future value of a starting amount plus regular monthly contributions at an assumed return — with a clear split between what you put in and what growth added.
Investment growth
Example: $10,000 to start, $500/mo at 7% for 30 years → about $691,150.
What this calculator computes
The Investment Calculator projects one quantity: the future value of a starting amount plus a level monthly contribution, compounded monthly at an assumed annual return, over a chosen number of years. It reports that future value as the projected balance and splits it into two lines — Total you contribute, the starting amount plus every monthly deposit with no growth applied, and Investment growth, everything else. The three figures always reconcile, because growth is defined as the balance minus the contributions.
This is the accumulation engine behind most of the tools on this site, stripped of any account-specific framing: the Roth IRA Calculator and the saving phase of the Retirement Calculator run the same arithmetic. Which account a dollar sits in changes when tax lands, not how the dollar compounds. The companion guide, 401(k), Roth IRA, and Taxable Accounts: How They Fit Together, lays out those tax timings and uses this calculator for the taxable-brokerage leg of a multi-account projection. For a lump sum alone at daily, quarterly, or annual compounding, the Compound Interest Calculator runs the general form of the same formula. More explainers are collected under Guides.
The future-value formula, term by term
The calculation is the standard future value of a series, as documented on the methodology page:
FV = P·(1+r)ⁿ + PMT·[((1+r)ⁿ − 1) / r]
- P is the starting amount.
- PMT is the monthly contribution — the same amount every month, never escalated.
- r is the monthly rate: the annual return entered, divided by 12. An entered 7% is applied as 7 ÷ 12 of a percent per month.
- n is the number of months: the years entered times 12, rounded to a whole month. A 30-year horizon is 360 months.
The first term, P·(1+r)ⁿ, is the starting amount compounded on its own. Each month the balance is multiplied by (1 + r); after n months it has been multiplied by that factor n times over. In the reference example — $10,000 to start at an assumed 7% for 30 years — the growth factor works out to 8.116, so the lump sum alone becomes $81,165.
The second term, PMT·[((1+r)ⁿ − 1) / r], is the annuity term: the combined future value of every contribution. Under the default end-of-month timing the first deposit compounds for n − 1 months, the second for n − 2, and the final deposit for none at all. Adding up that series of growth factors produces the bracketed expression, and multiplying by PMT scales it to the contribution. For $500 a month over the same 30 years at 7%, the stream alone becomes $609,985.
The two terms are independent and simply add. $81,165 plus $609,985 is $691,150 — the same $691,150 the calculator shows for both inputs together, and the locked reference figure the engine is tested against. That additivity is useful in itself: entering the starting amount and the contribution separately and summing the two results gives the same answer as entering them together, so either piece of a projection can be examined on its own.
| Run (30 years at an assumed 7%) | Total contributed | Investment growth | Projected balance |
|---|---|---|---|
| $10,000 starting amount only | $10,000.00 | $71,164.97 | $81,164.97 |
| $500 a month only | $180,000.00 | $429,985.50 | $609,985.50 |
| Both together (reference) | $190,000.00 | $501,150.47 | $691,150.47 |
End-of-month versus start-of-month contributions
The formula above is the ordinary-annuity form: each contribution arrives at the end of its month, so the last deposit earns nothing. Choosing Start of each month moves every deposit one month earlier, and every deposit therefore compounds for one additional month. In the engine this is a single extra step — the annuity term is multiplied by (1 + r). The principal term is untouched, because the starting amount is in place from the first day under either convention.
That gives an exact way to size the effect: the start-of-month balance exceeds the end-of-month balance by the annuity term times the monthly rate — one month's growth on the whole contribution stream, no more. In the reference example the stream is worth $609,985 under end timing, so the switch adds $3,558 and the balance becomes $694,709. The contributions line is identical in both cases; only the growth line moves.
A second worked case with different inputs shows the same mechanism at a lower rate and a shorter horizon. Take $25,000 to start plus $300 a month at an assumed 5% for 20 years. With end-of-month deposits the model projects $191,126, of which $97,000 is contributed and $94,126 is growth. With start-of-month deposits the balance is $191,640. The difference, $514, is again the contribution stream ($123,310 under end timing) times a monthly rate of 5 ÷ 12 of a percent. Because the monthly rate is lower and the stream has had less time to build, the timing gap is smaller than in the 7%, 30-year case both in dollars and as a share of the balance.
The reading that follows: the timing option is a precision setting, not a lever. It matters when matching a statement or another calculator that uses the other convention; it does not change the shape of the projection.
Why the annuity term takes over on long horizons
The reference example ends with $609,985 from the contribution stream against $81,165 from the starting amount, even though the starting amount was invested for the full 30 years and every contribution for less. The reason is in the formula. The principal term is one amount times one growth factor. The annuity term is a stack of growth factors, one for each of the n deposits, and the stack gains a new layer every month while the principal's single factor only grows taller. Rerunning the reference inputs at three horizons shows the two terms pulling apart:
| Horizon | Starting-amount term | Contribution-stream term | Projected balance | Total contributed | Investment growth | Growth share |
|---|---|---|---|---|---|---|
| 10 years | $20,097 | $86,542 | $106,639 | $70,000 | $36,639 | 34.4% |
| 20 years | $40,387 | $260,463 | $300,851 | $130,000 | $170,851 | 56.8% |
| 30 years | $81,165 | $609,985 | $691,150 | $190,000 | $501,150 | 72.5% |
Two things happen as the horizon lengthens. First, the stream term's lead over the principal term widens: at 10 years it is 4.3 times the principal term, at 30 years 7.5 times. The ratio does not grow without limit — it approaches a ceiling equal to the monthly contribution divided by the product of the starting amount and the monthly rate — but on the horizons this tool accepts it is still climbing. Second, growth overtakes contributions. At 10 years the growth line is 34.4% of the balance and contributions are the larger part; by 20 years growth is already the larger part, and by 30 years it is 72.5%. The final decade of the 30-year run adds $390,300, more than the $300,851 the first two decades produced together — which is what a compounding curve looks like read left to right: shallow for a long time, then steep.
Whether the starting amount or the contribution matters more therefore depends on the inputs, not on a rule. A large starting amount with a small contribution is principal-dominated on any horizon the tool accepts; a small starting amount with a meaningful contribution is stream-dominated after the first several years. The split in the calculator's output lines makes that balance visible for any set of inputs.
The 0% case
The annuity term divides by r, so at a 0% return the formula as written is undefined — zero over zero. The engine handles this explicitly: when the monthly rate is exactly zero it replaces the bracketed expression with n, so the stream term becomes PMT × n and the principal term becomes P × 1. The projection collapses to simple addition. The reference inputs at 0% for 30 years give $190,000: $10,000 plus 360 deposits of $500, with the growth line at $0.
That figure has a second meaning. It is exactly the Total you contribute line at any rate — $190,000 in the 7% case — because that line is always computed as P + PMT × n and never includes growth. A 0% run is therefore a way to see the contribution path on its own, and the gap between a 0% run and any other run is that run's growth line. The engine accepts 0% as an ordinary input, not an error.
Reading the output
Nominal dollars. The balance is in future dollars, with no adjustment for what those dollars will buy. Entering a real (after-inflation) return instead of a nominal one produces a figure in today's purchasing power; the calculator does not know which kind of rate was entered and treats both identically.
The rate is annual but applied monthly. The entered return is divided by 12 and compounded twelve times a year. That is why a lump sum grows by slightly more than the entered figure over a single year: at an assumed 7%, the engine's monthly compounding produces 7.23% of growth on a starting amount in twelve months. Over long horizons that convention is part of why the projected figures run a little above a rough "7% a year" mental estimate.
Growth is a residual, not a receipt. The growth line is the balance minus the contributions. It is not interest that has been paid, a dividend record, or a realized gain; it is the difference between what was put in and what the constant-return model says the account would hold.
One path, not a range. The model applies a single unchanging rate every month for the whole horizon. Real returns arrive unevenly, and the order in which they arrive changes the outcome for an account that is receiving contributions — the sequence-of-returns risk the methodology page names. A projection at one rate shows the shape of the compounding, not the spread of outcomes around it. Running the same inputs at more than one assumed rate shows how much rides on that single assumption; for the reference inputs over 30 years, the balance is $460,807 at an assumed 5%, $691,150 at 7%, and $1,062,678 at 9%, with the contributions line fixed at $190,000 in all three.
Short horizons look different. Compounding needs time to show, so on a short run the contributions line dominates and the growth line is modest. $1,000 a month at an assumed 6% for 8 years, with no starting amount, projects to $122,829 — $96,000 contributed and $26,829 of growth. A reader who expects the 30-year picture on an 8-year run is not seeing a weak rate; they are seeing the shallow part of the same curve.
Pre-tax, pre-fee. Nothing is deducted. The model has one lever for anything that reduces growth — the entered return — and no representation of tax at all. Whether a balance is taxed as ordinary income on withdrawal, not taxed on qualified withdrawal, or taxed along the way depends on the account type, which 401(k), Roth IRA, and Taxable Accounts lays out.
Where the model stops
The engine validates every input before computing. Amounts must be zero or positive, and at least one of the starting amount and the monthly contribution must be greater than zero. The annual return must be between 0% and 100%. The horizon must be greater than zero and at most 80 years, and a fractional number of years is converted to whole months. Outside those ranges the calculator reports the specific problem instead of a number.
Within those ranges, the model still leaves out most of what happens to a real account: taxes, investment fees, contribution limits, inflation, changes to the contribution over time, withdrawals, and variable returns. It cannot represent a contribution that rises with salary — the 401(k) Calculator simulates that month by month, along with an employer match — and it does not run in reverse; the Savings Goal Calculator solves the same equation for the contribution that reaches a target. What comes after accumulation, turning a balance into income, is a different model altogether, covered by the Retirement Withdrawal Calculator and The 4% Rule guide.
Frequently asked questions
What return does the calculator assume?
None. The annual return is an input, and the model applies whatever is entered as a single constant rate every month for the whole horizon. The worked examples on this page use 5%, 6%, 7%, and 9% purely as assumptions chosen to show the arithmetic, not as forecasts. Running the same inputs at more than one rate shows how sensitive the projection is to that assumption: $10,000 plus $500 a month for 30 years projects to $460,807 at 5%, $691,150 at 7%, and $1,062,678 at 9%.
Does this account for inflation?
No. The projection is in nominal (future) dollars and makes no adjustment for what those dollars will buy. Entering a real, after-inflation return instead of a nominal one produces a balance in today’s purchasing power; the calculator treats both kinds of rate identically and does not know which was entered.
End-of-month or start-of-month contributions — what is the difference?
The end-of-month option (the default) is the ordinary-annuity form of the formula: each deposit arrives at the end of its month, so the final deposit earns nothing. The start-of-month option moves every deposit one month earlier, which the engine implements by multiplying the contribution term by (1 + r), where r is the monthly rate. The starting amount is unaffected. In the reference example the switch adds $3,558 to a $691,150 balance — exactly one month’s growth on the contribution stream.
Why is the growth line larger than the contributions line in the example?
Because the reference example runs for 30 years at an assumed 7%, long enough for compounding to overtake the deposits. Of the $691,150 balance, $190,000 is money contributed and $501,150 is growth. At shorter horizons the order is reversed: the same inputs at 10 years give $70,000 contributed and $36,639 of growth. Where the crossover falls depends on the rate and the horizon together.
What happens at a 0% return?
The contribution term of the formula divides by the monthly rate, so at exactly 0% the engine switches to simple addition: the balance is the starting amount plus the contribution times the number of months, and the growth line is zero. $10,000 plus $500 a month for 30 years at 0% is $190,000 — which is also the "Total you contribute" line at any other rate, because that line never includes growth.
How is the annual return applied?
It is divided by 12 and compounded monthly, the convention documented on the methodology page. An entered 7% is applied as 7 ÷ 12 of a percent each month, which is why a lump sum grows by slightly more than the entered figure in a year: the engine’s monthly compounding turns a 7% nominal rate into 7.23% of growth on a starting amount over twelve months.
Can the number of years be fractional?
Yes. The engine converts the horizon to whole months by multiplying by 12 and rounding, so 2.5 years runs as 30 months. The horizon must be greater than zero and at most 80 years; the annual return must be between 0% and 100%; and the starting amount and monthly contribution must each be zero or positive, with at least one of them greater than zero.
What about fees and taxes?
Neither is modeled. The engine has one lever for anything that reduces growth — the entered return — and no representation of tax at all. When and whether a balance is taxed depends on the account it sits in: traditional 401(k) and IRA withdrawals are generally taxed as ordinary income, qualified Roth withdrawals are not, and a taxable brokerage account pays tax along the way on dividends and realized gains. The guide "401(k), Roth IRA, and Taxable Accounts: How They Fit Together" lays out those mechanics; this calculator projects growth only.
Is the projected balance the amount that would be available to spend?
No. It is a pre-tax, pre-fee, nominal-dollar figure produced by a constant-return model. Real returns vary from year to year, and the order in which they arrive changes the outcome for an account receiving contributions — the sequence-of-returns risk the methodology page names. The projection shows the shape of the compounding for one set of assumptions, not a range of outcomes and not a guarantee.
Not financial advice: a general educational estimate in nominal dollars that assumes a constant return and excludes fees and taxes. Markets are volatile and returns are not guaranteed. Values are processed locally in your browser and never transmitted. See the methodology page.