ForHosting KIT · Developer Utilities

Test score curve calculator

The test score curve calculator applies one consistent adjustment to an entire list of raw grades.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

Choose fixed points when every student should receive the same numerical boost, scale to the top score when the strongest result should become the maximum, or use a square root curve when lower scores need proportionally more help. The calculator returns the original and curved lists in matching order, caps results at your chosen maximum, and rounds calculated values to two decimal places. It makes the arithmetic visible and repeatable, while leaving the educational decision about whether a curve is appropriate to the instructor.

Choose a method that matches the grading decision

A curve is a policy choice before it is a calculation, so begin by deciding what the adjustment is meant to accomplish. The add fixed points method gives every score the same increase. It is easy to explain and preserves the exact point gaps between students, although scores near the maximum may be capped. The scale to top score method multiplies every result by the same factor until the highest raw score reaches the selected maximum. This preserves ratios rather than point gaps and is often used when an exam was harder than intended. The square root curve transforms each score relative to the maximum, giving a larger proportional lift to lower scores than to higher scores. That can substantially change gaps and grade boundaries. Use the method your published course policy permits, and avoid selecting a formula merely because its results look more generous. A transparent rationale matters as much as the arithmetic when students compare outcomes.

Enter scores and interpret the calculation

Provide raw scores as a non-empty list of nonnegative numbers and select one of the three named methods. For a fixed-point curve, also provide the number of points to add; a negative number is allowed when the stated policy calls for a uniform downward adjustment, but no returned score will fall below zero. The maximum score defaults to 100 and can be changed for an assessment worth a different total. Scaling finds the highest raw value in the submitted list and uses maximum score divided by that value as the common multiplier. A list whose highest value is zero cannot be scaled because that would require division by zero. The square root method computes the square root of each score’s fraction of the maximum, then converts that fraction back to the selected scale. Results above the maximum are capped. The output keeps raw and curved scores in the same positions, making it straightforward to reconnect each result to a student in your own authorized gradebook without sending names or other personal information.

Review fairness, precision, and recordkeeping

Before publishing grades, inspect the full distribution rather than checking only the highest and lowest values. Fixed points preserve absolute differences until the maximum cap compresses the top end. Scaling preserves proportional relationships, but a single unusually high score can make the adjustment small for everyone else. A square root curve changes relative gaps more aggressively and may move many students across letter-grade thresholds. The calculator rounds displayed curved scores to two decimal places so repeated runs produce stable, practical values; apply any separate institutional rounding rule only after reviewing the returned results. Keep a record of the method, parameters, original scores, and reason for the adjustment so the calculation can be reproduced if a student asks about it. Test the method on anonymized scores first, confirm that it follows the syllabus and institutional rules, and communicate it consistently to the whole class. This tool performs deterministic arithmetic only. It does not decide whether a curve is pedagogically justified, assign letter grades, or replace a documented review by the responsible instructor.

Correct an overly difficult exam

Scale all results so the highest raw score reaches the assessment maximum while every score uses the same multiplier.

Apply a uniform class adjustment

Add the same number of points to each score and cap results at the chosen maximum.

Compare curving policies

Run anonymized scores through each supported method to review how different policies affect the distribution before choosing one.

What does the API calculation cost?

Each API request costs $0.002. The browser calculator can also run the same deterministic calculation locally.

What happens to scores above the maximum?

Curved values are capped at maximum_score, which defaults to 100. Fixed-point results are also prevented from falling below zero.

How does scale to top score work?

It divides maximum_score by the highest raw score, then multiplies every raw score by that common factor.

What formula does the square root curve use?

It calculates square root of score divided by maximum_score, then multiplies the result by maximum_score.

Are curved results rounded?

Yes. Calculated curved scores and the reported scaling factor are rounded to two decimal places for stable output.

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/test-curve-adjust

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/test-curve-adjust \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scores":[64,81,90],"method":"square_root_curve"}'
{
  "scores": [
    64,
    81,
    90
  ],
  "method": "square_root_curve"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "edu.test_curve_adjust",
  "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.

max_items1000
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 →