Percentage Change Formula Explained

May 28, 20266 min read

Percentage change measures how much a value has increased or decreased relative to its starting point. It is the calculation behind revenue growth reports, population statistics, price inflation, and analytics dashboards. Despite its ubiquity, the formula trips people up in two specific ways: confusing the direction of change and mishandling negative base values. This guide covers the standard formula, common pitfalls, and real examples from finance and web analytics.

The Standard Formula

The percentage change between an old value and a new value is:

Percentage Change = ((New - Old) / |Old|) × 100

The absolute value around the denominator ensures consistency: a change from 50 to 75 is a 50% increase, and a change from 75 to 50 is a 33.33% decrease. The direction matters because the base is different.

function percentChange(oldVal, newVal) {
  if (oldVal === 0) {
    throw new Error('Base value cannot be zero')
  }
  return ((newVal - oldVal) / Math.abs(oldVal)) * 100
}

percentChange(50, 75)   // 50 (50% increase)
percentChange(75, 50)   // -33.33... (33.33% decrease)
percentChange(200, 200) // 0 (no change)

The zero-base problem is not a syntax error — it is a conceptual one. If revenue goes from $0 to $10,000, calling it an "infinite percent increase" is mathematically correct but practically meaningless. In reports, handle this case explicitly by stating "from zero base" or showing the absolute change instead.

Percentage Increase vs Decrease

A 50% increase followed by a 50% decrease does not return you to the original value. This asymmetry is the single most common source of confusion.

const original = 100
const increased = original * 1.50    // 150
const decreased = increased * 0.50   // 75, not 100!

The reason is straightforward: the 50% increase uses 100 as the base, but the 50% decrease uses 150 as the base. To reverse a 50% increase, you need a 33.33% decrease.

ChangeTo Reverse It
+50%−33.33%
+100%−50%
−50%+100%
−25%+33.33%
+200%−66.67%

The reversal formula is:

Reversal % = (1 / (1 + change)) - 1) × 100
function reversePercentage(changePercent) {
  return ((1 / (1 + changePercent / 100)) - 1) * 100
}

reversePercentage(50)   // -33.33...
reversePercentage(-50)  // 100

This matters in finance: if a stock drops 50%, it needs a 100% gain to recover. A portfolio that loses 40% needs a 66.67% gain to break even. This is why drawdown recovery is disproportionately hard.

Real-World Examples

Revenue growth: A SaaS company reports monthly recurring revenue of $120K in January and $150K in February.

Growth = ((150,000 - 120,000) / 120,000) × 100 = 25%

Annualized (assuming consistent monthly growth):

const monthlyGrowth = 0.25
const annualized = (Math.pow(1 + monthlyGrowth, 12) - 1) * 100
// 1,355% — compounding is powerful

Website traffic analytics: Page views dropped from 45,000 to 38,000 after a redesign.

Change = ((38,000 - 45,000) / 45,000) × 100 = -15.56%

Conversion rate optimization: A/B test shows control at 2.3% and variant at 2.8%.

Relative improvement = ((2.8 - 2.3) / 2.3) × 100 = 21.74%

Note the term "relative improvement." In A/B testing, percentage change is always relative to the control, not the combined rate.

Percentage Point Difference

A common error in reporting is confusing percentage change with percentage point change. If an interest rate rises from 3% to 5%, the percentage point increase is 2, but the percentage increase is 66.67%.

const rateOld = 3
const rateNew = 5

const ppDifference = rateNew - rateOld           // 2 percentage points
const pctChange = ((rateNew - rateOld) / rateOld) * 100  // 66.67%

Both numbers are correct but answer different questions. Use "percentage points" when comparing rates and "percent change" when describing growth. Financial reporters who write "interest rates increased 2%" when they mean "2 percentage points" cause genuine confusion.

Handling Negative Base Values

When the starting value is negative, percentage change becomes misleading. If a company's profit goes from −$10M to +$5M, the formula gives:

((5 - (-10)) / |-10|) × 100 = 150%

A "150% increase" sounds positive but obfuscates the real story: the company moved from loss to profit. In financial reporting, it is better to state the absolute change ($15M improvement) and the sign change (loss to profit) rather than using percentage change with a negative base.

Quickly compute percentage changes for any dataset using the calculator at /tools/percentage-calculator, which handles increase, decrease, and percentage-point scenarios with automatic validation for edge cases.