Class exam average calculator
Paste the exam scores of a class and get the mean, the highest, the lowest and the range in one step: five scores running from 68 up to 91 average 78.6, a range of 23 points. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Scores
- 72, 85, 91, 68, 77
- Quantity
- 5
- Sum
- 393
- Mean
- 78.6
- Highest
- 91
After every midterm, quiz, or final, teachers and teaching assistants need the class mean in seconds—not a spreadsheet session. This class exam average calculator takes a list of student exam scores, computes the arithmetic mean, and also reports the highest score, the lowest score, and the range between them so you can see both central tendency and spread in one response. Use it when you care about the class average as a teaching signal—curve decisions, retake thresholds, and parent conferences—without pulling a full statistics suite for four summary numbers.
What the class exam average, highest, lowest, and range mean
The class exam average is the arithmetic mean of every score you submit: add all marks, divide by how many students (or attempts) appear in the list, and you get the central value most grading systems label “class average.” That single number answers “how did the group do overall?” but it does not by itself show whether everyone clustered near the mean or whether a few extreme results pulled the figure up or down.
Highest and lowest fill that gap: the highest score is the maximum value in the list, the lowest score is the minimum, and the range is simply highest minus lowest. A small range means the class performed tightly; a large range means outcomes were spread out and you may want item analysis, a curve, or extra support for students at the bottom. This calculator deliberately stays at those four teaching-facing summaries—mean, highest, lowest, range—plus count and sum for audit trails.
It does not invent letter grades, standard deviations, or weighted category blends; those are different search intents and different tools. Scores may sit on any finite numeric scale (percent 0–100, points out of 50, raw rubric totals); the math is the same. When every score is identical, range is zero and mean equals that score.
When the list has one score, mean, highest, and lowest coincide and range is zero.
What you can do with it
Post-exam class summary for teachers
Paste the section’s exam scores after grading to get mean, highest, lowest, and range for the board, LMS announcement, or parent note in one step.
FAQ
How do I calculate the class exam average?
Send a non-empty scores array of finite numbers.
What is the range of exam scores?
Range is the highest score minus the lowest score in your list. A larger range means greater spread of student results around the class mean.
Do scores have to be between 0 and 100?
No. Any finite numbers within the supported magnitude are accepted, so percent scales, points-out-of-N exams, and raw rubric totals all work.
What if I submit an empty list of scores?
A class average requires at least one finite score; empty lists are not billed.
What does a large range of exam scores tell me?
It means results were spread out instead of clustered near the average. A wide gap between the highest and the lowest score can call for item analysis, a curve, or extra support for the students at the bottom.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/edu/class-exam-average \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"scores":[72,85,91,68,77]}'const res = await fetch("https://api.kit.forhosting.com/edu/class-exam-average", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"scores": [
72,
85,
91,
68,
77
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/class-exam-average",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"scores": [
72,
85,
91,
68,
77
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/class-exam-average", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"scores":[72,85,91,68,77]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"scores":[72,85,91,68,77]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/class-exam-average", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"scores": [
72,
85,
91,
68,
77
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.class_exam_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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
What the class exam average, highest, lowest, and range mean
Empty lists are invalid: there is no average of nobody, and the API fails with invalid_input instead of returning a hollow zero mean that could mislead a dashboard.
Input contract, response shape, and validation rules
There is no requirement that scores lie in 0–100: the tool accepts any finite magnitude within a safe bound so point-based exams and scaled rubrics work without preprocessing. POST a JSON object with a required scores field: a non-empty array of finite numbers, at least one entry and at most five hundred. Aliases accepted for the same list include exam_scores, grades, marks, values, and numbers so gradebook exports with different column names still map cleanly. Each element may be a JSON number or a numeric string; non-finite values, empty strings, and non-numeric tokens fail with invalid_input naming the bad index. You may also pass scores as a single comma- or whitespace-separated string when a text form is more convenient than a JSON array. On success the body echoes the cleaned scores array, count (n), sum of all scores, mean (sum divided by n), highest, lowest, and range (highest minus lowest), plus a short formula string and method label class_exam_average for clients that log which endpoint produced the row. Missing scores, an empty array, more than five hundred entries, or a body that is not an object all raise invalid_input and are not billed. Pair this contract with your own letter-grade bands or curves if you need categorical output; this endpoint reports descriptive class statistics only.
Where a class exam average API earns its keep
Tutoring centers and after-school programs track quiz averages week over week with a deterministic oracle that never drifts between the free browser check and the automated report job. LMS plugins and homework portals call the same pure module to show students “class average so far” next to personal scores without shipping a statistics library to every client. Department coordinators batch section lists through the API to compare means and ranges across parallel sections of the same course before deciding whether a common curve is fair.
Integration use cases
Multi-section department comparison
Send each parallel section’s scores through the API and compare means and ranges before choosing a common curve or retake policy.
LMS and tutoring dashboards
Show live class average and spread next to individual marks with a deterministic parse endpoint that matches the free browser widget.
Technical questions
What does the class exam average calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.