All Tools / Blog / How to Calculate Percentage Change, Difference, and Increase

How to Calculate Percentage Change, Difference, and Increase

4 min read

Percentage calculations come up constantly: revenue grew 23%, CPU usage dropped 15%, one number is what percent of another. The formulas are simple, but the terminology is confusing — "percentage change" and "percentage difference" mean different things, and getting them wrong produces the wrong number.

Percentage change (increase or decrease)

Use this when comparing an old value to a new value. The answer is positive for an increase, negative for a decrease.

Percentage change = ((new - old) / |old|) × 100

Examples:

  • Revenue went from $80,000 to $100,000 → ((100,000 - 80,000) / 80,000) × 100 = +25%
  • User count dropped from 500 to 400 → ((400 - 500) / 500) × 100 = -20%
function percentageChange(oldValue, newValue) {
    return ((newValue - oldValue) / Math.abs(oldValue)) * 100;
}

console.log(percentageChange(80000, 100000).toFixed(2)); // 25.00
console.log(percentageChange(500, 400).toFixed(2));      // -20.00
def percentage_change(old, new):
    return ((new - old) / abs(old)) * 100

print(f"{percentage_change(80000, 100000):.2f}%")  # 25.00%
print(f"{percentage_change(500, 400):.2f}%")        # -20.00%

Excel formula:

=(B1-A1)/ABS(A1)*100

Where A1 is the old value and B1 is the new value.

Why |old| (absolute value)? If the old value is negative (e.g., a loss that turned into a profit), using the absolute value gives the correct sign. Without it, you'd get the wrong sign on the result.

Percentage difference (between two values, no direction)

Use this when comparing two values without a clear "before" and "after" — like comparing two stores, two countries, or two products. The result is always positive.

Percentage difference = (|value1 - value2| / ((value1 + value2) / 2)) × 100

Example: Store A sells 120 units, Store B sells 80 units. The percentage difference is:

(|120 - 80| / ((120 + 80) / 2)) × 100 = (40 / 100) × 100 = 40%
function percentageDifference(a, b) {
    return (Math.abs(a - b) / ((a + b) / 2)) * 100;
}

console.log(percentageDifference(120, 80).toFixed(2)); // 40.00
def percentage_difference(a, b):
    return (abs(a - b) / ((a + b) / 2)) * 100

print(f"{percentage_difference(120, 80):.2f}%")  # 40.00%

When to use which:

  • "Sales increased from Q1 to Q2" → percentage change (there's a before and after)
  • "Region A vs Region B" → percentage difference (symmetric, no direction)

What percentage of a total

Percentage = (part / total) × 100

Examples:

  • 45 out of 200 students passed → (45 / 200) × 100 = 22.5%
  • $3,500 spent out of a $15,000 budget → (3500 / 15000) × 100 = 23.3%
function percentageOf(part, total) {
    return (part / total) * 100;
}

console.log(percentageOf(45, 200).toFixed(1));   // 22.5
console.log(percentageOf(3500, 15000).toFixed(1)); // 23.3
def percentage_of(part, total):
    return (part / total) * 100

print(f"{percentage_of(45, 200):.1f}%")    # 22.5%
print(f"{percentage_of(3500, 15000):.1f}%") # 23.3%

Excel:

=A1/B1*100

Or format the cell as Percentage (which multiplies by 100 automatically):

=A1/B1

Finding the original value from a percentage

You know the result after a percentage increase or decrease, and need to recover the original.

Original = result / (1 + percentage/100)     ← after an increase
Original = result / (1 - percentage/100)     ← after a decrease

Example: A product costs $130 after a 30% markup. Original cost:

130 / (1 + 30/100) = 130 / 1.30 = $100

Example: A discounted price is $85 after a 15% reduction. Original price:

85 / (1 - 15/100) = 85 / 0.85 = $100
function originalAfterIncrease(result, percent) {
    return result / (1 + percent / 100);
}

function originalAfterDecrease(result, percent) {
    return result / (1 - percent / 100);
}

console.log(originalAfterIncrease(130, 30)); // 100
console.log(originalAfterDecrease(85, 15));  // 100

Percentage points vs percentages

These are different and commonly confused.

If interest rates rise from 2% to 5%:

  • The change in percentage points is 3 pp (5 - 2 = 3).
  • The percentage change is 150% ((5 - 2) / 2 × 100 = 150%).

Both are correct — they measure different things. "Percentage points" is the absolute arithmetic difference between two percentages. "Percentage change" is the relative change.

Saying "interest rates increased by 150%" is technically accurate but misleading. Saying "increased by 3 percentage points" is clearer for this kind of data.

Compound percentage changes

Percentage changes don't add — they compound. If something grows 10% then shrinks 10%, you don't end up where you started.

100 × 1.10 × 0.90 = 99

To find the total percentage change across multiple periods:

function compoundChange(percentages) {
    return percentages.reduce((acc, p) => acc * (1 + p / 100), 1) - 1;
}

// +10% then -10%
console.log((compoundChange([10, -10]) * 100).toFixed(2)); // -1.00%

// +20% three years in a row
console.log((compoundChange([20, 20, 20]) * 100).toFixed(2)); // 72.80%

Key takeaways

  • Percentage change: ((new - old) / |old|) × 100 — use when there's a before and after.
  • Percentage difference: (|a - b| / average) × 100 — use when comparing two symmetric values.
  • Percentage of total: (part / total) × 100 — the most common case.
  • Percentage points and percentages are not the same thing.
  • Percentage changes compound — a 10% gain followed by a 10% loss gives a net -1%.