Direct Proportion Solver
A direct proportion states that two ratios are equal, such as 3/5 = 12/x. This solver finds any one missing term in the general form a/b = c/d, then checks the answer by comparing the two cross products.
Run — free
It is designed for homework practice, lesson preparation, scaling questions, and quick ratio checks. Enter the three known terms, choose which position is missing, and receive the completed proportion with an explicit numerical verification rather than an unexplained answer.
Set up the two ratios in the same order
A direct proportion compares two quantities that change by the same scale factor. Before calculating, place corresponding quantities in matching positions. If three notebooks cost 6 dollars and five notebooks have an unknown cost, write notebooks over dollars on both sides, or dollars over notebooks on both sides. Either arrangement works, but mixing the order does not. This solver uses the neutral form a/b = c/d. The letters identify positions, not particular measurement types. Select the letter that represents the missing term and supply the other three values as numbers. For example, 3/6 = 5/d asks for d, while a/6 = 5/10 asks for a. Keep units consistent within each row or column of your setup. Convert minutes to hours, cents to dollars, or grams to kilograms before entering values when the compared terms use different units. A correct setup is the most important part of a proportion problem because cross multiplication can calculate a precise answer even from a relationship that was arranged incorrectly.
Understand how cross multiplication finds the missing term
For the equality a/b = c/d, multiplying both sides by b and d produces the cross-product equation a × d = b × c. The solver rearranges that equation according to the selected missing position. If a is missing, it computes b × c ÷ d. If b is missing, it computes a × d ÷ c. If c is missing, it computes a × d ÷ b. If d is missing, it computes b × c ÷ a. This is an algebraic rearrangement of the same equality, not a shortcut based on guessing a multiplier. The result includes a completed four-term proportion and both cross products so you can inspect the check. Equal cross products confirm that the returned terms preserve the ratio. Denominators b and d may never be zero because division by zero is undefined. The solver also rejects a calculation that would force a denominator to zero, as well as missing, nonnumeric, or non-finite values. Decimal inputs are supported, and the result is rounded to a stable precision suitable for ordinary classroom and scaling problems.
Interpret the answer and check whether proportion applies
The missing value answers the mathematical proportion you entered, but the surrounding word problem still determines whether direct proportion is the right model. Direct proportion applies when one quantity is a constant multiple of another: twice as many identical items cost twice as much, a recipe scaled by three needs three times every ingredient, and constant speed turns twice the travel time into twice the distance. It does not apply when a fixed fee is added, when discounts change by quantity, or when one quantity rises as the other falls. After solving, read the completed equation and verify that its units and size make sense. You can also estimate first: if the numerator on one side doubles while the ratio stays constant, its paired term should double. The returned cross products provide an exact structural check, while estimation catches setup mistakes that an equation alone cannot detect. For API use, each request solves one missing term and costs $0.002. Browser use follows the same deterministic arithmetic, so repeated calls with identical inputs produce identical output without network lookups or hidden assumptions.
What you can do with it
Check proportion homework
Solve for any of the four positions and compare the cross products to understand why the answer works.
Scale recipes and mixtures
Preserve an ingredient ratio while finding the amount needed for a larger or smaller batch.
Convert constant rates
Find an unknown cost, distance, quantity, or duration when the relationship is directly proportional.
FAQ
What form of proportion does the solver use?
It uses a/b = c/d. Choose a, b, c, or d as the missing position and enter the other three terms.
How is the missing value calculated?
The solver uses the identity a × d = b × c and isolates the selected missing term by division.
Can I enter decimals or negative numbers?
Yes. Finite decimal and negative values are accepted when they produce valid, nonzero denominators.
Why are zero denominators rejected?
A ratio with a denominator of zero is undefined, so it cannot form a valid equality of ratios.
Does an equal cross-product check prove my word-problem setup is correct?
It proves the entered ratios are equal after solving. You must still ensure corresponding quantities and units were arranged consistently.
What does the API request cost?
Each request solves one missing term for $0.002. The browser version runs locally for free.
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/direct-proportion \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"solve_for":"d","a":3,"b":5,"c":12}'const res = await fetch("https://api.kit.forhosting.com/edu/direct-proportion", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"solve_for": "d",
"a": 3,
"b": 5,
"c": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/direct-proportion",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"solve_for": "d",
"a": 3,
"b": 5,
"c": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/direct-proportion", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"solve_for":"d","a":3,"b":5,"c":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"solve_for":"d","a":3,"b":5,"c":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/direct-proportion", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"solve_for": "d",
"a": 3,
"b": 5,
"c": 12
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.direct_proportion",
"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. |