Skip to main content

Example values are filled in. Replace them with your own.

Percentages

Average percentage

75%

Working

  1. Sum of the 2 percentages = 150
  2. 150 ÷ 2 = 75%
Sum of the percentages
150
Number of percentages
2

Four test scores of 80%, 90%, 70% and 85% average 81.25%. But percentages from groups of different sizes cannot simply be added up and divided, because a rate from 50 people should count for more than one from 20.

Enter a list of percentages into this online average percentage calculator and it returns the simple average. Add a weight for each, such as a sample size or a mark allocation, and it returns the weighted average and shows why the two can differ. Below it you will find the formulas, six worked examples and a short section on averaging growth rates.

How to average percentages

Quick answer: add the percentages and divide by how many there are. If the percentages come from groups of different sizes, multiply each by its weight, add the results and divide by the total weight.

The simple average of percentages

  1. Add all the percentages together.
  2. Divide the sum by the number of percentages.
  3. Add the percent sign.

This is the arithmetic mean. It treats every percentage as equally important, which is right when each one comes from a group of the same size, such as four tests marked out of the same total. The percentage average calculator above does this when no weights are given, as does any percent average calculator in its simple mode.

Weighted average of percentages

The weighted average is the sum of each percentage times its weight, divided by the sum of the weights:

weighted average = (p1 × w1 + p2 × w2 + ... + pn × wn) ÷ (w1 + w2 + ... + wn)

Here p is each percentage and w is its weight. The weight can be a sample size, a number of marks or a share of a grade. It only has to be non-negative, and the weights do not need to add up to 100. The weights decide how much each percentage counts.

This is why a simple mean can be wrong. A pass rate of 90% from 50 students should pull the overall figure further than a pass rate of 60% from 20 students, and the simple mean gives them the same pull. Whenever the underlying groups differ in size, switch the calculator above to weighted mode. It works as a weighted percentage calculator and as an average percentage calculator with weights.

How to calculate a weighted average step by step

  1. Multiply each percentage by its weight.
  2. Add those products together.
  3. Add the weights together.
  4. Divide the sum of the products by the sum of the weights.

Take coursework at 85% with a weight of 40 and an exam at 70% with a weight of 60. The products are 3,400 and 4,200, which add to 7,600. The weights add to 100, so the average is 76%. When the weights are sample sizes, each product is 100 times the number of successes in that group, which is why the weighted average of pass rates equals the combined pass rate.

Adding percentages together

How to add percentages together depends on the whole: you can add them only when they are shares of the same whole. Market shares of 25%, 30% and 12% of one market add up to 67% of that market. When the percentages come from different wholes, the sum means nothing: 50% of 20 people and 25% of 80 people do not make 75% of anyone.

To combine percentages from different groups, turn each into a count, add the counts and divide by the combined total. That is the weighted average with the group sizes as the weights, and it gives the overall percentage. Example 4 below shows it. The calculator above works as a combine percentages calculator when you enter each percentage with its group size as the weight.

Average percentage change over several periods

Growth rates need a different average. If a figure rises 10% and then falls 10%, the simple average is 0%, but the figure ends at 1.1 × 0.9 = 0.99 of its start, a loss of 1%. The average that reproduces the real result is the geometric mean of the multipliers:

average rate = ((1 + r1) × (1 + r2) × ... × (1 + rn))^(1/n) − 1

For a rise of 10% then a fall of 10%, that is the square root of 0.99, minus 1, which is -0.50% per period. For the change between just two values, use the percentage change calculator, and for a single rise the percentage increase calculator.

Average percentage in Excel and Google Sheets

For a simple average, with the percentages in A2:A5, type =AVERAGE(A2:A5). For a weighted average, with the percentages in A2:A4 and the weights in B2:B4, type =SUMPRODUCT(A2:A4,B2:B4)/SUM(B2:B4). The percentages in Excel guide covers more formulas.

Averaging percent errors

Average percent error is a different job. Work out each percent error first with the percent error calculator, then average the results as above.

Rounding and checking the result

Round only the final average. Averaging figures that were already rounded passes their rounding error into the result, so keep the exact values where you can. Quote one or two decimal places unless you need more. The calculator shows the sum and the count, or the total weight, beside the average so you can check the division yourself.

Average percentage examples

Example 1: four test scores

Given

The scores are 80%, 90%, 70% and 85%, each out of the same total.

Answer

The sum is 325, and 325 ÷ 4 = 81.25%.

Example 2: groups of different sizes

Given

Three groups have pass rates of 60%, 80% and 90%, with 20, 30 and 50 students.

Answer

The weighted average is 81 ÷ 100 = 81%. The simple average, (60 + 80 + 90) ÷ 3, is 76.67%, which understates the result because it gives the 20-student group the same pull as the 50-student group.
Average percentage examples
GroupPass rateStudentsPassed
A60%2012
B80%3024
C90%5045
Total81%10081

Example 3: a course grade with weights

Given

Coursework counts for 40% of the grade and the exam for 60%. A student scores 85% on the coursework and 70% on the exam.

Answer

The weighted average is (85 × 40 + 70 × 60) ÷ 100 = (3,400 + 4,200) ÷ 100 = 76%. The simple average would be 77.5%.

Example 4: percentages from different wholes

Given

In class A, 50% of 20 students passed, which is 10. In class B, 25% of 80 passed, which is 20.

Answer

Together 30 of 100 passed, which is 30%. Adding 50% and 25% would give 75%, and a simple average would give 37.5%. Both are wrong.

Example 5: average growth

Given

A figure changes by +10%, +20% and +30% in three periods.
  1. Step 1

    The simple average is 20%.

Answer

The geometric mean is (1.1 × 1.2 × 1.3)^(1/3) − 1, which is 19.72% per period. Compounding 19.72% three times gives the true total growth of 71.6%, while 20% would give 72.8%.

Example 6: marks out of different totals

Given

A student scores 45 out of 60 in one paper, which is 75%, and 70 out of 100 in another, which is 70%.
  1. Step 1

    The simple average of 75% and 70% is 72.5%.

Answer

The correct overall percentage uses the total marks: 115 ÷ 160 = 71.88%, because the 100-mark paper should count for more. This is the weighted average with the maximum marks as the weights, and the marks percentage calculator is built for that case.

Average percentage code

Both versions reproduce the examples above (81.25, 81, 76, 76.67 and 19.72), reject non-numeric input, and refuse mismatched or all-zero weights.

JavaScript

JavaScript
function finite(name, v) {  if (typeof v !== "number" || !Number.isFinite(v)) throw new TypeError(`${name} must be a finite number`);}​function places(decimals) {  if (!Number.isInteger(decimals) || decimals < 0 || decimals > 10) throw new RangeError("decimals must be a whole number from 0 to 10");  return decimals;}​function list(name, values) {  if (!Array.isArray(values) || values.length < 1) throw new TypeError(`${name} must be a non-empty array of numbers`);  values.forEach((v) => finite(name, v));}​// Simple average: [80, 90, 70, 85] -> 81.25export function averagePercent(values, decimals = 2) {  list("values", values);  const d = places(decimals);  return Number((values.reduce((a, b) => a + b, 0) / values.length).toFixed(d));}​// Weighted average: weights can be sample sizes, marks or any non-negative numbersexport function weightedAveragePercent(values, weights, decimals = 2) {  list("values", values);  list("weights", weights);  if (values.length !== weights.length) throw new RangeError("values and weights must be the same length");  if (weights.some((w) => w < 0)) throw new RangeError("weights must not be negative");  const d = places(decimals);  const total = weights.reduce((a, b) => a + b, 0);  if (total === 0) throw new RangeError("the weights must not all be 0");  const sum = values.reduce((acc, v, i) => acc + v * weights[i], 0);  return Number((sum / total).toFixed(d));}​// Average percentage change per period over several periods (geometric mean)export function averageGrowth(ratesPercent, decimals = 2) {  list("rates", ratesPercent);  const d = places(decimals);  let product = 1;  for (const r of ratesPercent) {    if (r <= -100) throw new RangeError("a rate of -100% or less cannot be averaged this way");    product *= 1 + r / 100;  }  return Number(((Math.pow(product, 1 / ratesPercent.length) - 1) * 100).toFixed(d));}

Python

Python
from decimal import Decimal, ROUND_HALF_UPfrom math import isfinite​​def _num(name, v):    if isinstance(v, bool) or not isinstance(v, (int, float, Decimal)) or not isfinite(float(v)):        raise ValueError(f"{name} must be a finite number")    return Decimal(str(v))​​def _round(x, decimals):    if not isinstance(decimals, int) or isinstance(decimals, bool) or not 0 <= decimals <= 10:        raise ValueError("decimals must be a whole number from 0 to 10")    return x.quantize(Decimal(1).scaleb(-decimals), rounding=ROUND_HALF_UP)​​def _list(name, values):    if not isinstance(values, (list, tuple)) or len(values) < 1:        raise ValueError(f"{name} must be a non-empty list of numbers")    return [_num(name, v) for v in values]​​def average_percent(values, decimals=2):    nums = _list("values", values)    return _round(sum(nums) / len(nums), decimals)​​def weighted_average_percent(values, weights, decimals=2):    nums = _list("values", values)    w = _list("weights", weights)    if len(nums) != len(w):        raise ValueError("values and weights must be the same length")    if any(x < 0 for x in w):        raise ValueError("weights must not be negative")    total = sum(w)    if total == 0:        raise ValueError("the weights must not all be 0")    return _round(sum(n * x for n, x in zip(nums, w)) / total, decimals)​​def average_growth(rates_percent, decimals=2):    rates = _list("rates", rates_percent)    product = Decimal(1)    for r in rates:        if r <= -100:            raise ValueError("a rate of -100% or less cannot be averaged this way")        product *= 1 + r / 100    return _round((product ** (Decimal(1) / len(rates)) - 1) * 100, decimals)

weightedAveragePercent([60, 80, 90], [20, 30, 50]) returns 81, the group-size example, and averageGrowth([10, 20, 30]) returns 19.72. Round only for display. The Python version rounds half up, which is the usual school convention, and returns Decimal values, so 81 prints as 81.00.

Privacy and input safety

  • Values are calculated in your browser. The numbers you enter are not sent to a server or stored.
  • Fields accept numbers only, with an optional trailing % sign on a percentage. Text, empty fields, NaN and Infinity are rejected with a message, and nothing you type is ever evaluated as code.
  • A row with a percentage but no weight is read as a weight of 1 in weighted mode. A completely empty row is ignored.
  • Weights must not be negative. If every weight is 0 the calculator asks for at least one positive weight, because the total would be zero.
  • Percentages above 100 or below 0 are accepted in the simple and weighted modes, because some data has them. Average growth refuses a rate of -100% or lower, which would wipe out the whole figure.
  • Decimal places are limited to a whole number from 0 to 10.
  • A comma followed by exactly three digits is read as a thousands separator, so 1,200 is 1200. Any other comma is a decimal point, so 12,50 is 12.50, and a number starting with 0, such as 0,500, is read as a decimal. Mixed formats such as 1.234,5 and ambiguous entries such as 1,2,3 are refused instead of guessed. Spaces, including no-break spaces, between digit groups are ignored.
  • A very long paste cannot freeze the page.

Common average percentage mistakes

Common average percentage mistakes
MistakeWhat goes wrongWhat the calculator does
Using a simple mean for groups of different sizes60%, 80% and 90% from 20, 30 and 50 people average 76.67%, not 81%Offers a weighted mode with the group sizes
Adding percentages of different wholes50% of 20 and 25% of 80 do not make 75%Combines the counts and divides by the total
Averaging growth rates with the simple mean+10% then -10% averages 0%, but the figure ends 1% downUses the geometric mean for growth
Dropping a 0% from the list80% and 0% average 40%, not 80%Counts every row with a value, including 0
Mixing decimals and percentages0.8 and 90 in one list gives 45.4, not 85Takes every value as a percentage
Treating the weights as percentages that must sum to 100Sample sizes of 20, 30 and 50 work without any scalingDivides by the total weight
All weights at 0The total is zero, so the average is undefinedAsks for a positive weight
Rounding each percentage before averagingEarly rounding shifts the resultRounds only the final average

Which average to use

Which average to use
MethodUse it whenExampleResult
Simple averageEvery percentage comes from a group of the same size80%, 90%, 70%, 85%81.25%
Weighted averageThe groups differ in size, or the items carry different weights60%, 80%, 90% with 20, 30, 50 people81%
Sum of percentagesThe percentages are shares of one whole25% + 30% + 12% of one market67%
Combined from countsThe percentages come from different wholes and you know the counts10 of 20 and 20 of 8030%
Geometric meanThe percentages are growth rates over successive periods+10% and -10%-0.50% per period

Frequently asked questions

How do I add percentages together?

Percentages of the same whole add directly: 10% + 20% = 30%. Percentages of different wholes do not. Convert each to an amount first, add the amounts, then divide by the combined total: 20% of 50 is 10, 40% of 150 is 60, and 70 ÷ 200 = 35%.

How do I calculate the average percentage increase or decrease over time?

Use the geometric mean of the period multipliers, not the arithmetic mean. For +10%, +20% and +30% the multipliers are 1.1, 1.2 and 1.3, and the cube root of 1.716 is 1.1972, so the average growth is 19.72% per period. The simple mean says 20%, which overstates compound growth.

How do I calculate average percent error?

Calculate the percent error for each measurement, then take the mean of those values. Errors of 2%, 4% and 6% average 4%. Use absolute values if you want the typical size of the error: signed errors of +4% and −4% cancel to 0%. For a single measurement, use the percent error calculator.

How do I calculate an average percentage?

Add the percentages and divide by how many there are. Scores of 80%, 75%, 90% and 80% total 325, and 325 ÷ 4 = 81.25%. This is only valid when every percentage has the same weight.

How do I calculate an overall percentage?

Add the parts, add the wholes, then divide. A student scores 45/60, 40/50 and 30/50, so 115 out of 160 is 71.88%. That differs from the average of the three percentages whenever the totals differ.

How do I combine or aggregate percentages?

Aggregate the counts, not the percentages. If one group is 10 of 100 and another is 20 of 100, together they are 30 of 200, which is 15%. Percentages add directly only when they are shares of one whole, as in the first question above.

What is a weighted average of percentages?

It multiplies each percentage by its weight, adds the results, then divides by the total weight. With 90% at weight 60 and 70% at weight 40: (90 × 60 + 70 × 40) ÷ 100 = 82%. The simple average would give 80%.