ForHosting KIT · Education

Convert percentage to letter grade

On the standard US scale, 87.5% is a B because it clears the 80% cutoff but not 90%. Use the A–F scale or enter your own table of grades and minimums, with every cutoff inclusive. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Percentage
87.5
Scale
Standard us
You get
Grade
B
Minimum
80

Turn any score from 0 to 100 into a clear letter grade without rebuilding cutoff logic in a spreadsheet or application. Choose the standard US scale for familiar A, B, C, D, and F results, or enter a custom table for a school, course, certification, or workplace policy. The calculator treats every cutoff as inclusive, accepts decimal percentages, and reports the exact threshold that matched.

Choose the grading scale that matches the policy

Start by deciding whether the standard US scale actually represents the rules you need to apply. In standard mode, a percentage of 90 or higher receives A, 80 through less than 90 receives B, 70 through less than 80 receives C, 60 through less than 70 receives D, and anything below 60 receives F. Those boundaries are common, but they are not universal.

Some schools use plus and minus grades, some courses set a passing mark at 65, and professional assessments may use labels such as Excellent, Pass, or Retry. Select the custom option whenever the published policy differs. A cutoff is inclusive, so a score exactly equal to a threshold belongs to the grade attached to that threshold.

Decimal scores are preserved rather than rounded before comparison. That detail matters near boundaries: 89.99 remains below a cutoff of 90. The result includes the submitted percentage, chosen scale, matching grade, and inclusive minimum, making the decision easy to explain or record.

Build a valid custom cutoff table

For a custom scale, add one row for each possible grade. Every row needs a grade label and an inclusive minimum percentage. The rows may be entered in any order because the calculator sorts them from the highest minimum to the lowest before finding a match.

Each grade label and each minimum must be unique, and every minimum must fall from 0 through 100. Include one row whose minimum is 0 so that every valid percentage has a defined outcome. For example, a pass or fail policy can use Pass at 60 and Fail at 0.

A plus and minus table might use A at 93, A- at 90, B+ at 87, and continue downward until its final grade begins at 0. Do not add upper bounds: the next higher cutoff supplies that boundary automatically. This representation prevents overlaps and ambiguous ranges while keeping the policy compact.

When a policy changes, update its thresholds in one place and submit the same table with every score that must follow that version.

Interpret, verify, and automate the result

Read the returned grade together with the minimum field. The minimum shows which exact rule produced the answer, which is useful when a student, instructor, auditor, or application needs more than a bare letter. Because the comparison uses the original numeric percentage, the tool does not silently round a score into a higher band.

If your organization rounds scores first, perform that rounding according to its written policy and send the resulting percentage. Values below 0 or above 100 are rejected instead of being forced into the lowest or highest grade, helping expose data-entry mistakes and incorrectly calculated upstream scores. The same safeguards apply to custom tables: malformed rows, duplicate thresholds, duplicate labels, and a missing zero cutoff produce an input error.

For automation, keep the cutoff table with the policy version that created it and reuse it consistently across records.

Convert a course percentage

Map a final numeric score to the familiar A through F scale and show the threshold responsible for the result.

Apply a school-specific rubric

Use custom inclusive cutoffs for plus and minus grades or for a department whose boundaries differ from the standard scale.

Automate pass and fail decisions

Return consistent labels from a certification or training percentage without copying conditional formulas between systems.

What is the standard US grading scale used here?

The standard scale assigns A at 90, B at 80, C at 70, D at 60, and F at 0. Each cutoff is inclusive.

Does the calculator round decimal percentages?

No. It compares the exact numeric percentage supplied, so 89.99 does not meet a cutoff of 90.

Can I use plus and minus letter grades?

Yes. Choose the custom scale and provide a separate unique cutoff for labels such as A-, B+, and B.

Why must a custom table include a minimum of 0?

The zero cutoff guarantees that every valid percentage from 0 through 100 maps to a grade instead of leaving a gap.

Is 87.5% a B?

On the standard US scale, yes: scores from 80 up to just below 90 are a B. The result also shows the minimum that matched, 80 here, so the grade is easy to explain or record.

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/calc2/letter-grade-from-percent

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/calc2/letter-grade-from-percent \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"percentage":87.5,"scale":"standard_us"}'
{
  "percentage": 87.5,
  "scale": "standard_us"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "calc2.letter_grade_from_percent",
  "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.

It is deterministic, quick to audit, and available through the API for $0.002 per request.

What happens if the percentage is outside 0 to 100?

The request returns an invalid input error. Out-of-range values are never clamped or converted.

Read the full KIT documentation →