Plus and minus GPA converter
A plus or minus can make an important difference when a school converts letter grades into grade points.
Run — free
This converter turns grades such as A minus, B plus, and C minus into their standard numerical values on a four point scale. Enter one grade or a whole list and receive a clear conversion for every item. The result uses a fixed, transparent table, making it useful for checking records, preparing GPA calculations, or explaining how individual course grades contribute to an academic average.
Convert letter grades without losing the plus or minus
Letter grades are compact, but the symbols attached to them carry real numerical meaning. On the standard four point mapping used here, an A minus is 3.7 rather than 4.0, while a B plus is 3.3 rather than 3.0. Enter a single grade or several grades separated by commas, spaces, semicolons, or line breaks. The converter normalizes lowercase letters to uppercase and returns each original grade in normalized form beside its precise grade point value. This makes the result easy to read, copy, and pass to another calculation. The supported grades are A plus, A, A minus, B plus, B, B minus, C plus, C, C minus, D plus, D, D minus, and F. The four point scale is capped, so both A plus and A convert to 4.0. That convention avoids implying extra credit above the stated scale. Unsupported marks are rejected instead of guessed, because an apparently reasonable assumption can produce a misleading academic result.
Understand the fixed 4.0 grade point mapping
The mapping follows a common decimal convention: each full letter step changes by one point, and most plus or minus modifiers change the value by three tenths. A is 4.0, B is 3.0, C is 2.0, and D is 1.0. Minus grades are A minus 3.7, B minus 2.7, C minus 1.7, and D minus 0.7. Plus grades are B plus 3.3, C plus 2.3, and D plus 1.3, while A plus remains capped at 4.0. F is 0.0 and has no supported plus or minus variant. These values are returned as numbers so software can consume them directly. The converter does not assign credits, weight courses, average semesters, round a cumulative GPA, or infer a school policy. Those operations require more information than a letter grade alone. Its purpose is narrower and more auditable: translate each recognized grade into exactly one published point value. Keeping conversion separate from averaging also makes it easier to identify where a discrepancy begins.
Check the policy before using values officially
Although this table is widely recognizable, grading policies are not universal. Some institutions award 4.33 for A plus, omit D minus, use different increments, or calculate repeated and pass/fail courses under special rules. Before submitting an official application, scholarship form, transcript evaluation, or advising record, compare this converter's mapping with the policy published by the relevant institution. The returned scale field clearly states that these values belong to a four point scale, and the individual conversions let you compare entries one by one. For informal planning, the tool is a quick way to see the numerical effect of modifiers without repeatedly consulting a chart. For automated workflows, the same deterministic algorithm runs for every request: it uses no network service, random choice, date, or hidden model judgment. A given list of grades therefore produces the same result every time. API access costs $0.002 per request, while the page can run the conversion directly in the browser for convenient manual checks.
What you can do with it
Check a transcript entry
Confirm the point value assigned to each plus or minus letter grade before performing a separate GPA calculation.
Prepare advising worksheets
Convert a list of proposed course grades into consistent numerical values for academic planning materials.
Normalize imported grades
Turn recognized letter-grade strings into deterministic numeric values before sending them to a downstream system.
FAQ
What is an A minus on a 4.0 scale?
An A minus converts to 3.7 grade points with this mapping.
Does an A plus count above 4.0?
No. This converter uses a capped 4.0 scale, so A plus and A both return 4.0.
Can I enter several grades at once?
Yes. Separate grades with commas, spaces, semicolons, or line breaks, and each grade will be converted independently.
Does this calculate my cumulative GPA?
No. It converts letter grades to points but does not apply course credits or calculate a weighted average.
What does the API request cost?
The API costs $0.002 per request. You can also run the converter directly in your browser.
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/plus-minus-gpa \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"A-, B+, C"}'const res = await fetch("https://api.kit.forhosting.com/edu/plus-minus-gpa", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "A-, B+, C"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/plus-minus-gpa",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "A-, B+, C"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/plus-minus-gpa", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"A-, B+, C"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"A-, B+, C"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/plus-minus-gpa", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"text": "A-, B+, C"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.plus_minus_gpa",
"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. |