Easily compute your investment's Compound Annual Growth Rate (CAGR) and understand its performance over time.
CAGR Calculator
Enter your investment details to calculate CAGR.
The initial value of your investment.
The final value of your investment.
The total duration of the investment in years.
Your CAGR Results
CAGR
–%
Compound Annual Growth Rate
Average Annual Growth
—
Equivalent annual growth
Total Growth (%)
—
Total percentage increase
Total Growth ($)
—
Total monetary increase
Formula Used: CAGR = ( (Ending Value / Starting Value) ^ (1 / Number of Years) ) – 1
This is expressed as a percentage.
CAGR Growth Visualization
Visual representation of investment growth over the specified period based on calculated CAGR.
Investment Growth Over Time
Year
Starting Value
Growth
Ending Value
Detailed breakdown of investment value year by year.
What is CAGR?
CAGR, or Compound Annual Growth Rate, is a financial metric used to measure the average annual rate of return of an investment over a specified period of time, assuming that profits were reinvested at the end of each year. It smooths out volatility and provides a single, representative growth rate, making it invaluable for comparing the performance of different investments or business units over time. It's a crucial tool for investors, financial analysts, and business strategists looking to understand long-term growth trends.
Who Should Use It:
Investors: To assess the historical performance of stocks, bonds, mutual funds, or entire portfolios.
Business Owners: To track revenue growth, profit growth, or customer acquisition rates over several years.
Financial Analysts: To benchmark company performance against industry averages or competitors.
Financial Planners: To project future growth scenarios for clients based on historical data.
Common Misconceptions:
CAGR is not the actual historical return: It's an average. Actual year-to-year returns can be much higher or lower.
CAGR ignores volatility: An investment with a high CAGR might have experienced significant ups and downs, while another with a slightly lower CAGR could have had a smoother, less risky trajectory.
CAGR is only for positive growth: It can also be used to calculate negative growth rates (i.e., declines).
CAGR Formula and Mathematical Explanation
The CAGR formula provides a standardized way to calculate the average annual growth rate of an investment. It accounts for compounding, meaning that growth in each period is calculated on the basis of the investment's value from the previous period, including previously earned profits. This is what makes it superior to a simple average growth rate.
The formula is derived from the compound interest formula. If we have:
FV = Future Value (Ending Value)
PV = Present Value (Starting Value)
n = Number of Periods (Years)
CAGR = Compound Annual Growth Rate
The basic compound interest formula is: FV = PV * (1 + r)^n, where 'r' is the annual rate. To find 'r' (which is our CAGR), we need to rearrange this formula:
Divide both sides by PV: FV / PV = (1 + r)^n
Raise both sides to the power of (1/n): (FV / PV)^(1/n) = 1 + r
Subtract 1 from both sides: (FV / PV)^(1/n) - 1 = r
Therefore, the CAGR formula is:
CAGR = ( (Ending Value / Starting Value) ^ (1 / Number of Years) ) - 1
To express CAGR as a percentage, you multiply the result by 100.
Variables Table
Variable
Meaning
Unit
Typical Range
Starting Value (PV)
Initial investment amount or value at the beginning of the period.
Currency (e.g., $)
Non-negative
Ending Value (FV)
Final investment amount or value at the end of the period.
Currency (e.g., $)
Non-negative
Number of Years (n)
The total duration of the investment period in whole years.
Years
> 0
CAGR
Compound Annual Growth Rate. The average annual rate of return.
Percentage (%)
Can be negative, zero, or positive.
Practical Examples (Real-World Use Cases)
Example 1: Evaluating a Stock Investment
Sarah invested $10,000 in a technology stock five years ago. Today, her investment is worth $22,000. Let's calculate the CAGR to understand her average annual return.
Interpretation: Sarah's stock investment has grown at an average annual rate of 16.99% over the past five years. This provides a clear benchmark for her investment performance.
Example 2: Assessing a Small Business Revenue Growth
A small e-commerce business started with an annual revenue of $50,000 three years ago. Their latest annual revenue is $75,000.
Interpretation: The business's revenue has grown at an average annual rate of 14.47% over the last three years. This indicates healthy growth and can be used for strategic planning and comparing against industry benchmarks. Understanding this CAGR helps in forecasting future revenue.
How to Use This CAGR Calculator
Our CAGR calculator is designed for simplicity and accuracy. Follow these steps to calculate your investment's Compound Annual Growth Rate:
Enter Starting Value: Input the initial amount of your investment (e.g., the purchase price of a stock, the initial principal of a loan).
Enter Ending Value: Input the current or final value of your investment after the specified period (e.g., the current market price, the total amount received).
Enter Number of Years: Specify the total duration of the investment period in whole years. Ensure this is accurate for meaningful results.
Calculate CAGR: Click the "Calculate CAGR" button. The calculator will process your inputs using the standard CAGR formula.
Review Results: The primary result, CAGR, will be displayed prominently. You'll also see intermediate values like average annual growth, total percentage growth, and total monetary growth.
Understand the Chart & Table: The visualization and table provide a year-by-year breakdown, illustrating how the investment might have grown at the calculated CAGR.
Copy Results: Use the "Copy Results" button to easily save or share your calculated CAGR and key assumptions.
Reset Values: Click "Reset Values" to clear the current inputs and start over with default values.
Decision-Making Guidance: Use the calculated CAGR to compare investment opportunities. A higher CAGR generally indicates better historical performance. However, always consider the risk associated with achieving that growth. Comparing the CAGR of different assets over the same time frame is a key use case. For businesses, a consistent positive CAGR suggests a sustainable growth model.
Key Factors That Affect CAGR Results
While the CAGR formula itself is straightforward, several external and internal factors can influence the starting and ending values, thereby impacting the calculated CAGR. Understanding these factors is crucial for a realistic assessment of investment performance.
Time Horizon: CAGR is highly sensitive to the number of years. A short period might show exaggerated growth or decline due to temporary market fluctuations, while longer periods provide a more stable and representative average. For instance, calculating CAGR for 10 years versus 1 year can yield vastly different numbers.
Market Volatility: Investments, especially stocks and cryptocurrencies, experience price swings. CAGR smooths these out, but extreme volatility in specific years can significantly skew the start or end points if they happen to coincide with market peaks or troughs.
Inflation: The calculated CAGR represents nominal growth. To understand the real increase in purchasing power, you need to adjust the CAGR for inflation. A 10% CAGR might be impressive, but if inflation is 8%, the real return (purchasing power growth) is only 2%.
Fees and Expenses: Investment management fees, trading commissions, and other operational costs reduce the actual returns. If these are not factored into the ending value, the calculated CAGR will be overstated. Always use net returns after all costs for accurate CAGR calculation.
Taxes: Capital gains taxes and income taxes on investment earnings reduce the net amount an investor receives. While CAGR typically measures pre-tax growth, understanding the after-tax return is essential for personal financial planning. Calculating after-tax returns is a separate but related process.
Additional Contributions or Withdrawals: The standard CAGR formula assumes a single initial investment and no further cash flows. If you add money or withdraw funds during the investment period, the simple CAGR calculation becomes inaccurate. More complex methods like Internal Rate of Return (IRR) are needed for such scenarios. Our calculator assumes no interim cash flows.
Reinvestment Assumption: The "Compound" in CAGR implies that earnings are reinvested. If profits are withdrawn or not put back to work, the actual compounded growth will differ. This calculator inherently assumes reinvestment based on the provided ending value.
Frequently Asked Questions (FAQ)
What's the difference between CAGR and simple average return?
Simple average return adds up all the yearly returns and divides by the number of years. CAGR accounts for compounding, meaning it calculates growth based on the investment's value from the previous period. CAGR provides a more accurate picture of long-term growth, especially when returns fluctuate.
Can CAGR be negative?
Yes, absolutely. If the ending value of an investment is less than the starting value, the CAGR will be negative, indicating an overall loss over the period.
Does CAGR account for risk?
No, CAGR itself does not directly measure risk. It only reflects the average rate of return. An investment with a high CAGR could have been very volatile, while another with a lower CAGR might have been more stable. Risk-adjusted returns (like the Sharpe Ratio) are needed to assess risk alongside returns.
How many years are needed to calculate CAGR?
Theoretically, you can calculate CAGR for any period longer than zero years. However, for meaningful results, it's generally recommended to use a period of at least 3-5 years to smooth out short-term fluctuations and get a representative average growth rate. Our calculator requires a minimum of 1 year.
What if I made additional investments or withdrawals?
The standard CAGR formula and this calculator assume a single initial investment and no further cash flows. If you have made multiple deposits or withdrawals, you should use a more advanced metric like the Internal Rate of Return (IRR) or Time-Weighted Rate of Return (TWRR), which can handle irregular cash flows.
Is CAGR the same as Annual Percentage Yield (APY)?
No. APY typically refers to the effective annual rate of return for a savings account or certificate of deposit, taking compounding into account. CAGR is a broader measure used for any investment over multiple years, focusing on the smoothed average annual growth.
How can I calculate CAGR in Excel?
In Excel, you can calculate CAGR using the formula: =( (Ending_Value / Starting_Value) ^ (1 / Number_of_Years) ) - 1. Replace 'Ending_Value', 'Starting_Value', and 'Number_of_Years' with the cell references containing your data. Ensure your numbers are formatted correctly, and then format the result cell as a percentage. Many prefer using Excel's RATE function for this: =RATE(Number_of_Years, 0, -Starting_Value, Ending_Value).
What does a CAGR of 0% mean?
A CAGR of 0% means that the investment's value neither increased nor decreased over the specified period, on average. The ending value was equal to the starting value after accounting for compounding.
var chartInstance = null;
function calculateCAGR() {
var startValueInput = document.getElementById("startValue");
var endValueInput = document.getElementById("endValue");
var yearsInput = document.getElementById("years");
var startValueError = document.getElementById("startValueError");
var endValueError = document.getElementById("endValueError");
var yearsError = document.getElementById("yearsError");
var cagrResultElement = document.getElementById("cagrResult");
var avgAnnualGrowthElement = document.getElementById("avgAnnualGrowth");
var totalGrowthPercentElement = document.getElementById("totalGrowthPercent");
var totalGrowthValueElement = document.getElementById("totalGrowthValue");
var growthTableBody = document.querySelector("#growthTable tbody");
var startValue = parseFloat(startValueInput.value);
var endValue = parseFloat(endValueInput.value);
var years = parseInt(yearsInput.value, 10);
var errors = false;
// Reset errors
startValueError.textContent = "";
endValueError.textContent = "";
yearsError.textContent = "";
if (isNaN(startValue) || startValue < 0) {
startValueError.textContent = "Please enter a valid non-negative number.";
errors = true;
}
if (isNaN(endValue) || endValue < 0) {
endValueError.textContent = "Please enter a valid non-negative number.";
errors = true;
}
if (isNaN(years) || years 0) {
// Handle division by zero case if start value is 0 and end value is positive
// This implies infinite growth, which is not practical to display.
// We'll set CAGR to a very high placeholder or an error state.
// For simplicity here, we'll mark it as an error for calculation.
// In a real scenario, you might show a specific message.
endValueError.textContent = "Starting value cannot be zero for positive growth calculation.";
errors = true;
}
if (errors) {
cagrResultElement.textContent = "–%";
avgAnnualGrowthElement.textContent = "–";
totalGrowthPercentElement.textContent = "–";
totalGrowthValueElement.textContent = "–";
growthTableBody.innerHTML = ""; // Clear table
updateChart([], []); // Clear chart
return;
}
var cagr = Math.pow((endValue / startValue), (1 / years)) – 1;
var totalGrowth = endValue – startValue;
var totalGrowthPercent = (totalGrowth / startValue) * 100;
var avgAnnualGrowth = cagr * 100; // Already calculated as rate, convert to percentage
cagrResultElement.textContent = (cagr * 100).toFixed(2) + "%";
avgAnnualGrowthElement.textContent = avgAnnualGrowth.toFixed(2) + "%";
totalGrowthPercentElement.textContent = totalGrowthPercent.toFixed(2) + "%";
totalGrowthValueElement.textContent = "$" + totalGrowth.toFixed(2);
// Populate table and chart data
var chartLabels = ["Year 0"];
var chartSeries1 = [startValue]; // Starting Value
var chartSeries2 = [startValue]; // Projected Value based on CAGR
growthTableBody.innerHTML = `
0
$${startValue.toFixed(2)}
–
$${startValue.toFixed(2)}
`;
for (var i = 1; i <= years; i++) {
var currentYearValue = startValue * Math.pow((1 + cagr), i);
var previousYearValue = startValue * Math.pow((1 + cagr), (i – 1));
var growthThisYear = currentYearValue – previousYearValue;
chartLabels.push("Year " + i);
chartSeries1.push(currentYearValue); // Projected Value
chartSeries2.push(currentYearValue); // For CAGR, Series 1 & 2 are the same
growthTableBody.innerHTML += `
${i}
$${previousYearValue.toFixed(2)}
$${growthThisYear.toFixed(2)}
$${currentYearValue.toFixed(2)}
`;
}
updateChart(chartLabels, [chartSeries1, chartSeries2]); // Pass both series
}
function updateChart(labels, seriesData) {
var ctx = document.getElementById('cagrChart').getContext('2d');
if (chartInstance) {
chartInstance.destroy(); // Destroy previous chart instance
}
if (!labels || labels.length === 0 || !seriesData || seriesData.length === 0) {
return; // Don't draw empty chart
}
chartInstance = new Chart(ctx, {
type: 'line',
data: {
labels: labels,
datasets: [{
label: 'Investment Value (CAGR)',
data: seriesData[0], // Use the first series for the actual projected value
borderColor: 'rgba(0, 74, 153, 1)', // Primary color
backgroundColor: 'rgba(0, 74, 153, 0.2)',
fill: true,
tension: 0.1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: false,
ticks: {
callback: function(value) {
return '$' + value.toLocaleString();
}
}
}
},
plugins: {
tooltip: {
callbacks: {
label: function(context) {
var label = context.dataset.label || ";
if (label) {
label += ': ';
}
if (context.parsed.y !== null) {
label += new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(context.parsed.y);
}
return label;
}
}
}
}
}
});
}
function resetForm() {
document.getElementById("startValue").value = "10000";
document.getElementById("endValue").value = "25000";
document.getElementById("years").value = "5";
document.getElementById("startValueError").textContent = "";
document.getElementById("endValueError").textContent = "";
document.getElementById("yearsError").textContent = "";
document.getElementById("cagrResult").textContent = "–%";
document.getElementById("avgAnnualGrowth").textContent = "–";
document.getElementById("totalGrowthPercent").textContent = "–";
document.getElementById("totalGrowthValue").textContent = "–";
document.querySelector("#growthTable tbody").innerHTML = ""; // Clear table
if (chartInstance) {
chartInstance.destroy(); // Destroy chart
chartInstance = null;
}
}
function copyResults() {
var cagr = document.getElementById("cagrResult").textContent;
var avgAnnual = document.getElementById("avgAnnualGrowth").textContent;
var totalPercent = document.getElementById("totalGrowthPercent").textContent;
var totalValue = document.getElementById("totalGrowthValue").textContent;
var startValue = document.getElementById("startValue").value;
var endValue = document.getElementById("endValue").value;
var years = document.getElementById("years").value;
var resultsText = `CAGR Calculation Results:
—————————
Assumptions:
Starting Value: $${startValue}
Ending Value: $${endValue}
Number of Years: ${years}
Key Results:
CAGR: ${cagr}
Average Annual Growth: ${avgAnnual}
Total Growth (%): ${totalPercent}
Total Growth ($): ${totalValue}
—————————
Calculated using the formula: CAGR = ((Ending Value / Starting Value) ^ (1 / Number of Years)) – 1`;
// Use modern Clipboard API if available, fallback to textarea
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(resultsText).then(function() {
alert('Results copied to clipboard!');
}).catch(function(err) {
console.error('Clipboard API failed: ', err);
fallbackCopyTextToClipboard(resultsText);
});
} else {
fallbackCopyTextToClipboard(resultsText);
}
}
function fallbackCopyTextToClipboard(text) {
var textArea = document.createElement("textarea");
textArea.value = text;
textArea.style.position = "fixed";
textArea.style.left = "-9999px";
textArea.style.top = "-9999px";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'Results copied to clipboard!' : 'Failed to copy results.';
alert(msg);
} catch (err) {
alert('Failed to copy results. Your browser might not support this feature.');
}
document.body.removeChild(textArea);
}
function toggleFaq(element) {
var faqItem = element.closest('.faq-item');
faqItem.classList.toggle('active');
var answer = faqItem.querySelector('.answer');
if (faqItem.classList.contains('active')) {
answer.style.display = 'block';
} else {
answer.style.display = 'none';
}
}
document.getElementById("calculateBtn").onclick = calculateCAGR;
document.getElementById("resetBtn").onclick = resetForm;
document.getElementById("copyResultsBtn").onclick = copyResults;
// Initial calculation on load
document.addEventListener('DOMContentLoaded', function() {
calculateCAGR();
});