ForHosting KIT · Developer Utilities

Weighted grade average by category calculator

This weighted grade average calculator combines category scores according to their relative importance.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

Enter a percentage score and a weight for homework, projects, exams, participation, or any other grading category. The calculator multiplies every score by its weight, adds those products, and divides by the total weight. Because the weights are normalized automatically, they can total 100, 1, 20, or another positive value. The result includes the final average and a category-by-category contribution breakdown for checking formulas, explaining grades, or integrating the same calculation into an academic workflow.

Enter category scores and consistent weights

Create one row for each category that contributes to the overall grade. Give the row a recognizable name, enter the earned score as a percentage from 0 to 100, and provide its nonnegative weight. A typical course might use Homework at 20, Projects at 35, and Exams at 45. Those values happen to total 100, but that is not required. You could enter 2, 3.5, and 4.5 and receive the same average because only the proportion between weights matters. Decimal weights such as 0.2, 0.35, and 0.45 work as well. Use one weight scale consistently within a request; mixing 20 with 0.35 would represent a different proportion than you probably intend. Scores must already be percentages, so convert 42 points out of 50 to 84 before entering it. A category may have a zero weight when you want it shown in the breakdown without changing the average. At least one category must have a positive weight, and the calculator accepts up to 100 category rows per request.

Follow the weighted-average formula

The calculation uses the standard weighted mean: multiply each score by its weight, add all of those products, then divide that weighted sum by the sum of the weights. Suppose Homework has a score of 88 and weight 20, Projects has 94 and weight 35, and Exams has 81 and weight 45. The products are accumulated before division, so a category with a larger weight moves the final result more strongly than one with a smaller weight. The response exposes both the weighted sum and total weight, making the main formula easy to reproduce. It also reports each normalized weight as a decimal share of the whole and each weighted contribution in grade points. Contributions add to the displayed weighted average apart from harmless rounding at the sixth decimal place. Weights are never silently forced to total 100, because dividing by their actual total already performs the appropriate normalization. Invalid numbers, negative weights, out-of-range scores, blank category names, and a zero total weight produce an input error instead of a misleading grade.

Interpret and audit the result

Use weighted_average as the combined percentage across the submitted categories. The category list preserves the input order and adds normalized_weight and weighted_contribution, so you can see exactly how each row affected the answer. This detail is useful when a learner asks why an excellent homework score did not offset a lower exam score, or when an instructor checks that a learning management system is applying the syllabus weights correctly. The calculator intentionally does not assign a letter grade, curve scores, drop the lowest assignment, replace missing work, or enforce that category weights total 100. Those are grading-policy decisions rather than parts of the weighted-average formula. If a course publishes weights that currently cover only completed categories, decide whether the grade should be normalized across completed work or whether unfinished categories should be represented with zero scores; those choices produce different but mathematically valid results. The algorithm is deterministic, uses no network service, and rounds returned numeric fields to six decimal places. The same valid input therefore produces the same structured result in the browser and through the API, suitable for records and repeatable automation.

Check a current course grade

Combine homework, quizzes, projects, and exam percentages according to the category weights published in a syllabus.

Audit gradebook calculations

Compare a learning management system result with a transparent weighted sum, total weight, and per-category contribution breakdown.

Automate academic reports

Calculate consistent weighted averages in a reporting workflow without maintaining spreadsheet formulas for every learner.

How much does an API request cost?

Each API request costs $0.002. The tier-A calculator can also run in the browser.

Do weights have to add up to 100?

No. Any consistent nonnegative scale works because the weighted sum is divided by the actual total weight.

Can I use decimal weights?

Yes. Values such as 0.2, 0.35, and 0.45 produce the same average as 20, 35, and 45.

What happens when a category has zero weight?

It remains in the breakdown but contributes zero to the final average. At least one submitted weight must be positive.

Does the calculator assign a letter grade?

No. It returns the weighted percentage only because letter-grade thresholds vary between courses and institutions.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/edu/weighted-grade-average

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/edu/weighted-grade-average \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"categories":[{"name":"Homework","score":88,"weight":20},{"name":"Projects","score":94,"weight":35},{"name":"Exams","score":81,"weight":45}]}'
{
  "categories": [
    {
      "name": "Homework",
      "score": 88,
      "weight": 20
    },
    {
      "name": "Projects",
      "score": 94,
      "weight": 35
    },
    {
      "name": "Exams",
      "score": 81,
      "weight": 45
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "edu.weighted_grade_average",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →