Neatbo.

Weighted average

Pair values with relative or percentage weights and calculate their weighted average.

Browser-local processingInputValue + weight pairsOutputWeighted average / JSON
  1. 1Add input
  2. 2Review and run
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

Pair each value with its own nonnegative weight. Use all relative weights (20, 30, 50) or all percentages (20%, 30%, 50%); they need not total 100.

Enter a value and weight in row 1.
Preparing the tool…

Before you start

Enter one value and weight per row to combine scores, quantities or other comparable values. Inspect the total weight and each contribution before using the result.

How to use this tool

  1. Enter one value and its weight per row, or paste two spreadsheet columns.
  2. Check that every row uses the same weight style and that the total reflects the group you intend to average.
  3. Calculate, inspect the normalized weight shares, then copy the average or download the JSON details.

Supported inputs and limits

Use 1–100 pairs. Values may be negative; weights must be nonnegative. Each number can have up to nine decimal places and magnitude up to one billion.

Use the same weight style in every row: plain relative numbers or percentages. The calculator normalizes by the actual total, which need not be 100.

Numbers are calculated from decimal input exactly before a repeating answer is rounded to 12 places. Input stays in this browser.

Worked example

Example input

4,3,5
Example options
{"weights":"20,30,50"}

Example output

{
  "weightedAverage": 4.2,
  "weightedAverageText": "4.2",
  "approximate": false,
  "exactFraction": "21/5",
  "weightedSum": "420",
  "totalWeight": 100,
  "totalWeightText": "100",
  "weightStyle": "relative",
  "count": 3,
  "rows": [
    {
      "value": "4",
      "weight": "20",
      "weightedProduct": "80",
      "normalizedShare": "20%"
    },
    {
      "value": "3",
      "weight": "30",
      "weightedProduct": "90",
      "normalizedShare": "30%"
    },
    {
      "value": "5",
      "weight": "50",
      "weightedProduct": "250",
      "normalizedShare": "50%"
    }
  ]
}

When something does not work

Check each value-weight pair, remove empty rows, and use either all percentages or all plain weights. At least one weight must be positive.

Frequently asked questions

Do my weights have to total 100?

No. All plain weights are divided by their actual total. You may instead enter a percent sign on every weight; those percentages are also normalized by their actual total.

Can I combine completed grade categories only?

Yes, the calculator reports the average of only the rows you enter and normalizes their weights. It does not predict missing categories or apply a school grading policy.

Can I paste values and weights from a spreadsheet?

Yes. Copy exactly two columns with one value and its weight on each line, then use Paste two columns. Tabs or commas can separate the columns.

Is my input sent to a server?

No. Calculation happens in your browser. Save the result before leaving the page.

Documentation & further reading

Related tools