Convert ratio to percentage
Convert any ratio with two or more parts into percentages of the whole. Enter non-negative terms separated by colons, such as 3:7 or 1:2:3, and the calculator adds the terms before dividing each one by that total.
Run — free
The result lists every original part alongside its percentage, so the relationship stays easy to follow. Zero-valued parts are allowed when another part is positive, while negative terms and ratios whose total is zero return a clear input error.
How to enter a ratio
Write the ratio as two or more numbers separated by colons. A familiar two-part example is 3:7, but the same format works for a ratio with several parts, such as 2:3:5 or 1.5:2.5:6. Spaces around the numbers are harmless because they are removed before calculation. Each term must be a finite, non-negative decimal number. A zero term is valid when at least one other term is positive; for example, 0:4 describes a first part with no share and a second part with the entire share. Negative terms are rejected because a part-to-whole percentage in this calculator represents an allocation, composition, or share rather than a signed change. Include every part that belongs to the whole. If a recipe ratio is 2:1:1, entering only 2:1 would describe a different whole and therefore produce different percentages. The calculator accepts up to 100 terms, which is ample for ordinary mixtures, allocations, survey splits, and classroom exercises while keeping the input and output readable.
How the conversion is calculated
The conversion begins by adding every ratio term to obtain the whole. For 3:7, the total is 10. Each term is then divided by 10 and multiplied by 100: the first term becomes 30 percent and the second becomes 70 percent. A three-part ratio follows exactly the same rule. For 1:2:3, the total is 6, so the shares are approximately 16.6666666667 percent, 33.3333333333 percent, and 50 percent. Results are rounded to no more than ten decimal places to keep recurring decimals useful without exposing distracting floating-point noise. The displayed percentages may therefore add to a value microscopically above or below 100 when several repeating decimals are rounded independently. That is a display effect, not a change to the ratio. The response also includes the parsed terms and their total, making it straightforward to audit the arithmetic or reuse the structured result in another calculation. Scaling every term by the same positive factor does not change the percentages, so 3:7 and 30:70 produce identical shares.
Reading results and handling invalid ratios
Each output row identifies the part by its one-based position, repeats the numeric term, and reports that term's percentage of the combined total. This ordering matters when the ratio terms correspond to named categories: keep a separate note that part one is marketing, part two is operations, and so on. The calculator does not invent labels because the input is deliberately compact and universal. If every term is zero, no percentage can be calculated: division by a zero total is undefined, so 0:0 and 0:0:0 return an error. A missing term, as in 3::7, also returns an error instead of silently treating the gap as zero. Likewise, commas, fractions written with a slash, scientific notation, Infinity, and negative signs are not accepted. Convert those values to ordinary non-negative decimal notation first. This strict validation prevents a malformed ratio from producing a plausible-looking but misleading allocation. The listed base price is $0.002 for the API task, while the tier-A browser implementation uses the same deterministic calculation logic for consistent results.
What you can do with it
Turn a mixture ratio into percentages
Convert ingredient, paint, concrete, or solution proportions into percentage shares before scaling the mixture to a target quantity.
Explain allocation splits
Translate a budget, staffing, ownership, or workload ratio into percentages that are easier to present and compare.
Check multi-part exercises
Verify ratio-to-percentage homework or teaching examples, including ratios with zero terms and repeating decimal results.
FAQ
How do I convert 3:7 to percentages?
Add the terms to get 10, then divide each term by 10 and multiply by 100. The result is 30% and 70%.
Can I convert a ratio with more than two parts?
Yes. Enter up to 100 colon-separated terms, such as 1:2:3, and every term is calculated against the total of all terms.
Are decimal ratio terms allowed?
Yes. Non-negative ordinary decimals such as 1.5:2.5 are accepted. Scientific notation and fraction notation are not accepted.
Can one ratio term be zero?
Yes, provided the total of all terms is greater than zero. A zero term receives 0% of the whole.
Why do rounded percentages sometimes not add to exactly 100?
Repeating decimal shares are rounded independently to ten decimal places, so their displayed sum can differ from 100 by a tiny rounding amount.
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/calc3/ratio-to-percentage-convert \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ratio":"3:7"}'const res = await fetch("https://api.kit.forhosting.com/calc3/ratio-to-percentage-convert", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ratio": "3:7"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc3/ratio-to-percentage-convert",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ratio": "3:7"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc3/ratio-to-percentage-convert", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ratio":"3:7"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ratio":"3:7"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc3/ratio-to-percentage-convert", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"ratio": "3:7"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc3.ratio_to_percentage_convert",
"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. |