CAGR Calculator

Compute the compound annual growth rate from a beginning value, an ending value, and a number of years — plus total growth and the growth multiple — with the Excel, Sheets, and SQL formulas.

Runs in your browser — your numbers are never sent

How to calculate compound annual growth rate in Excel and SQL

Decimals: use a period or a comma — 99.5 or 99,5. Years may be fractional (2.5).

CAGR (annual)
Total growth
Growth multiple

What CAGR tells you, and when a single growth rate is the honest one

CAGR — the compound annual growth rate — is the single constant yearly rate that turns a beginning value into an ending value over a number of periods, as if it grew by the same percentage every year. The formula is (ending / beginning)^(1/n) − 1, where n is the number of periods that elapsed; multiply by 100 to read it as a percent. Because it is a geometric mean rather than a simple average, CAGR absorbs the ups and downs of the individual years and reports the one smooth rate that would have produced the same end result. The answer is signed: positive is growth, zero is flat, and a negative CAGR is a real, valid decline — 1,000 falling to 500 over three years is −20.63% per year, not an error.

This calculator returns three figures at once so you don't have to run the arithmetic by hand: the CAGR itself (the annualized rate), the total growth (the whole-period change, (ending / beginning − 1) × 100, which is not annualized), and the growth multiple (ending / beginning, so 2× means the value doubled). Total growth answers 'how much overall'; CAGR answers 'how much per year, compounded'. The two are linked — CAGR = (1 + total growth / 100)^(1/n) − 1 — because CAGR simply spreads the total change evenly across the periods by compounding rather than by dividing. The inputs accept both US (1,234.56) and European or Spanish (1.234,56 or 99,5) number formats.

A few inputs have no meaningful answer, and the calculator says so instead of showing NaN or infinity: a beginning value of zero (nothing to grow from), a number of years of zero or less (zero divides by zero in the exponent, and a negative number of years is meaningless), and any negative value (a fractional root of a negative number is not a real number). Watch one classic trap when n comes from a list of years: n is the number of periods that elapsed, which is the count of data points minus one — revenue for 2020 through 2024 is five figures but only four years of growth, so n = 4. Everything runs in your browser: no upload, no account, no server round-trip. Below the calculator you'll find the exact Excel and Google Sheets formula, a divide-by-zero-safe SQL query, and a table that separates CAGR from average annual growth and total growth.

CAGR's smoothing is also its main limitation: it depends only on the first and last values and ignores everything in between, so it says nothing about the path or the risk. A fund with a steady 8% CAGR and one that soared then crashed to the same endpoint report the identical rate, even though the second was far riskier. That endpoint sensitivity makes CAGR easy to game by cherry-picking the start and end dates — measure a stock from the bottom of a crash and the CAGR flatters, start at the peak and it damns. Always check what period a quoted CAGR covers, and be wary of unusually round or short windows.

CAGR is the multi-period companion to the single-period tools in this set. Percent change tells you how much a value moved from one point to the next; CAGR takes a start and an end several periods apart and reports the constant rate that connects them by compounding. The link runs the other way too: once you know the CAGR, projecting forward is ending = beginning × (1 + CAGR)^n, the future value of steady growth. The Excel and SQL formulas below apply the same calculation to an entire column at once — a portfolio, a set of cohorts, one row per company — so you can rank annualized growth without leaving the spreadsheet or the database.

In Excel and Google Sheets

Put the beginning value in cell A2, the ending value in B2, and the number of years (periods) in C2. Excel has no built-in CAGR function, but the calculation is a one-liner and it is identical in Microsoft Excel and Google Sheets.

CAGR as a decimal — then format the cell as Percentage:
=(B2/A2)^(1/C2)-1

POWER() version (identical result, clearer to some):
=POWER(B2/A2,1/C2)-1

RRI() version — Excel's built-in for exactly this (periods, present, future):
=RRI(C2,A2,B2)

RATE() version (an investment with no interim payments):
=RATE(C2,0,-A2,B2)

CAGR as a plain number where 7.18 means 7.18%:
=((B2/A2)^(1/C2)-1)*100
Core formulas. A2 = beginning value, B2 = ending value, C2 = number of years. RRI and RATE match POWER to the last decimal.

Watch the formatting: all of these return a decimal like 0.071773. Apply the Percentage format (Ctrl+Shift+5 in Excel) to read it as 7.18% — do NOT also multiply by 100, or 7.18% shows as 718%. Multiply by 100 only when you leave the cell as General or Number.

  1. Type the beginning value in A2, the ending value in B2, and the number of years in C2.
  2. In D2 enter =(B2/A2)^(1/C2)-1 (or =RRI(C2,A2,B2)).
  3. Select D2 and apply the Percentage format (Ctrl+Shift+5 in Excel) — it now reads as a percent.
  4. If your years sit in a column, remember n is the count of data points minus one: compute it with =COUNT(range)-1.
=IFERROR((B2/A2)^(1/C2)-1,"N/A")
Divide-by-zero-safe: A2=0 or C2=0 returns #DIV/0!, and a negative base under a fractional power returns #NUM!; IFERROR shows N/A instead.

In SQL

To compute CAGR across a whole table — a portfolio, a cohort, one row per company — do it in one query. Given a table growth(start_value, end_value, periods), this PostgreSQL statement returns the CAGR as a percent per row, guards against divide-by-zero, and refuses the negative-base and zero cases that have no real answer.

SELECT
    start_value,
    end_value,
    periods,
    CASE WHEN start_value > 0 AND end_value > 0 AND periods > 0
         THEN ROUND((POWER(end_value::numeric / start_value, 1.0 / periods) - 1) * 100, 4)
    END AS cagr_pct
FROM growth;
The CASE guard covers all three undefined cases at once — start_value = 0, periods = 0, and negatives — returning NULL instead of an error. A bare NULLIF only guards divide-by-zero, not the negative base.

Two traps. First, the negative base: a numeric POWER of a negative number with a fractional exponent raises an error in PostgreSQL (and returns NaN in double precision), which is why the positivity CASE is mandatory and NULLIF alone is not enough. Second, integer division: if the columns are integers, end_value / start_value truncates toward zero, so cast the base to numeric or float before dividing — the ::numeric above does exactly that.

-- PostgreSQL — cast base to numeric; keep the positivity CASE guard
POWER(end_value::numeric / start_value, 1.0 / periods) - 1

-- SQL Server — POWER returns the type of its base, so cast INT to FLOAT
POWER(CAST(end_value AS FLOAT) / NULLIF(start_value, 0), 1.0 / NULLIF(periods, 0)) - 1

-- MySQL / MariaDB — POW (POWER is an alias); '/' already yields a double
(POW(end_value / NULLIF(start_value, 0), 1.0 / NULLIF(periods, 0)) - 1) * 100
Per-engine casts (the type fix only) — wrap each in the same start>0 AND end>0 AND periods>0 CASE guard from the query above for negative-safe results. Multiply by 100 for a percent; drop it to store the raw decimal rate.

CAGR vs average annual growth vs total growth

Three ways to summarize growth over several periods, and they can disagree sharply. The giveaway is how each derives the yearly figure: CAGR compounds (geometric), the average annual growth rate just averages the yearly percentages (arithmetic), and total growth is not annualized at all.

MetricFormulaHow the yearly rate is derivedWhat it capturesWatch out
CAGR(end / start)^(1/n) − 1Geometric mean — one compounding rateThe single steady annual rate that turns start into end; smooths volatilityn is periods elapsed (data points − 1); undefined for zero or negative inputs
Average annual growthmean of each period's % changeArithmetic mean of the yearly changesA quick average of the year-by-year movesIgnores compounding, so it is always ≥ CAGR and overstates volatile series
Total growth(end / start − 1) × 100Not annualized — whole periodHow much the value moved overall, start to endSays nothing per year: +100% over 1 year and over 10 years look identical

Why the arithmetic average lies: a value goes 100 → 200 → 100. Year one is +100%, year two is −50%, so the average annual growth is (100% − 50%) / 2 = +25% per year — yet the value ended exactly where it started. Total growth is 0%, the multiple is 1×, and CAGR is (100/100)^(1/2) − 1 = 0% per year, the honest answer. Compounding +25% for two years would reach 156.25, which never happened. To average growth across periods, always use CAGR.

FAQ

What is the CAGR formula, and what counts as n?

CAGR = (ending value / beginning value)^(1 / n) − 1, then × 100 for a percent. n is the number of periods that elapsed, not the number of data points you have: for yearly figures it is the last year minus the first year. If you list revenue for 2020, 2021, 2022, 2023 and 2024, that is five numbers but only four years of growth, so n = 4. Using n = 5 there is the single most common CAGR mistake and it understates the rate.

Can CAGR be negative, and when is it undefined?

Yes — a negative CAGR is a valid result that describes a steady annual decline (500 down from 1,000 over three years is about −20.63% per year). CAGR is genuinely undefined, though, in three cases, and this calculator shows a message rather than a wrong number: when the beginning value is zero (there is no base to grow from), when the number of years is zero or negative, and when either value is negative (a fractional root of a negative number is not a real number).

Is CAGR the same as the average annual growth rate?

Not usually. CAGR is a geometric mean — the one compounding rate that links start to end — while the 'average annual growth' people often quote is the arithmetic mean of each year's percentage change. The arithmetic average always comes out equal to or higher than CAGR, and it can badly mislead: a value that goes 100 → 200 → 100 shows an arithmetic average of +25% per year, yet it ended exactly where it began, so the honest annual rate is CAGR's 0%. To average growth across periods, use CAGR.

Related tools