Limiting reagent from masses calculator
Tell which of two weighed reactants runs out first: 10 g of hydrogen at 2 g/mol with coefficient 2 against 10 g of oxygen at 32 g/mol with coefficient 1 makes oxygen limiting and leaves 4.375 mol of hydrogen in excess. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Mass of reactant A
- 10
- Molar mass a
- 2
- Coeff a
- 2
- Mass of reactant B
- 10
- Molar mass b
- 32
- Coeff b
- 1
- Moles a
- 5
- Moles b
- 0.3125
- Extent a
- 2.5
- Extent b
- 0.3125
This limiting reagent from masses calculator tells you which of two reactants runs out first in a balanced chemical reaction. You supply the mass, molar mass, and stoichiometric coefficient for reactant A and the same three quantities for reactant B. The engine converts each mass to moles, divides by the corresponding coefficient to form a reaction extent, and labels the reactant with the smaller extent as limiting. Classic classroom checks include ten grams of hydrogen with molar mass two and coefficient two against ten grams of oxygen with molar mass thirty-two and coefficient one, where oxygen limits, and twenty-eight grams of nitrogen with molar mass twenty-eight and coefficient one against six grams of hydrogen with molar mass two and coefficient three, where the mixture is stoichiometric. The engine uses only finite deterministic arithmetic with no network calls, no sampling, and no date-dependent shortcuts.
The limiting reactant and how to read the result
The limiting reactant is the reagent that is fully consumed first when a balanced chemical reaction proceeds, capping how far the reaction can go and therefore the theoretical amount of product. After the equation is balanced, the stoichiometric coefficients fix the mole ratio between reactants. Converting each available mass to moles with its molar mass, then dividing by that reactant coefficient, produces a reaction extent measured in reaction batches.
The smaller extent identifies the limiting reagent; the other reactant is in excess and has leftover moles after the limiting reactant is spent. When both extents match within a tiny relative tolerance, neither reactant is limiting and the mixture is stoichiometric. Zero mass for one reactant with positive partners is valid and makes that reactant limiting with zero extent.
Where limiting-reactant analysis fits in study, lab work, and software
Students meet limiting-reactant problems when a textbook introduces mole ratios after balancing equations, when a homework set gives grams of two reactants and asks which is limiting, or when a contest problem expects a clear label before any product-mass step. Teachers can pre-generate answer keys for modest molar masses and integer coefficients without trusting opaque apps that mix percent yield with limiting analysis or assume wrong units.
Lab technicians and preparers use the same comparison when a protocol weighs two starting materials and only a balance and a balanced equation are available: convert each mass to moles, form extents, label the limiting reagent, and plan how much excess remains. Developers call the same contract from scripts to seed deterministic test vectors for chemistry tutors, to normalize user-entered reaction parameters before a lab notebook export, or to satisfy programming-challenge statements that demand a limiting label rather than a hand-waved sketch.
What you can do with it
Homework and limiting-reagent checks
Convert textbook masses of two reactants into a clear limiting label using molar masses and balanced coefficients before grading or yield work.
Lab prep and education software
Identify which weighed reactant limits a balanced equation in lab notebooks, tutoring UIs, and automated worksheet generators.
FAQ
What does the limiting reagent from masses calculator cost?
It is free in your browser on this page.
How is the limiting reactant chosen?
For each reactant, moles = mass / molar mass and extent = moles / coefficient. The reactant with the smaller extent is limiting.
What happens if a molar mass or coefficient is zero?
Zero or negative molar mass cannot convert mass to moles, and a non-positive coefficient makes reaction extent undefined or non-physical.
Does this tool compute product mass or percent yield?
No. It only identifies which of two reactants is limiting and reports excess moles. Use a mass-to-mass or yield calculator for product mass and percent yield.
Why are results rounded to a precision?
Default precision is 10 decimal places; you can set precision from 0 to 15.
Related tools
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/chem/limiting-reactant-two \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mass_a":10,"molar_mass_a":2,"coeff_a":2,"mass_b":10,"molar_mass_b":32,"coeff_b":1}'const res = await fetch("https://api.kit.forhosting.com/chem/limiting-reactant-two", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mass_a": 10,
"molar_mass_a": 2,
"coeff_a": 2,
"mass_b": 10,
"molar_mass_b": 32,
"coeff_b": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/chem/limiting-reactant-two",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mass_a": 10,
"molar_mass_a": 2,
"coeff_a": 2,
"mass_b": 10,
"molar_mass_b": 32,
"coeff_b": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/chem/limiting-reactant-two", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mass_a":10,"molar_mass_a":2,"coeff_a":2,"mass_b":10,"molar_mass_b":32,"coeff_b":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mass_a":10,"molar_mass_a":2,"coeff_a":2,"mass_b":10,"molar_mass_b":32,"coeff_b":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/chem/limiting-reactant-two", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"mass_a": 10,
"molar_mass_a": 2,
"coeff_a": 2,
"mass_b": 10,
"molar_mass_b": 32,
"coeff_b": 1
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "chem.limiting_reactant_two",
"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.
Limits
max_abs_value | 1000000000000000 |
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. |
Technical notes
What limiting reactant means and what the response contains
This calculator returns the validated masses, molar masses, and coefficients for A and B, the intermediate mole amounts, both extents, the limiting_reactant label a, b, or neither, the excess_reactant label, the excess_moles remaining of the excess species, a boolean is_stoichiometric flag, the precision used, a method tag limiting_reactant_two, and a short formula reminder. There is no product-mass path, no percent-yield path, no three-reactant search, and no equation balancer: the engine either compares the two extents inside the supported numeric range or rejects the input with invalid_input. Rejected cases include missing required fields, non-finite values, magnitudes above the documented ceiling, negative mass, and any molar mass or stoichiometric coefficient that is zero or negative, because zero molar mass cannot convert mass to moles and a non-positive coefficient makes the extent undefined or non-physical.
How masses, molar masses, and coefficients are read and stay reproducible
Both molar masses must be strictly positive finite numbers in grams per mole or any mass-per-mole unit consistent with the mass units you chose. Optional leading plus signs and scientific notation on numeric strings are allowed when they parse as finite decimals; embedded spaces and non-numeric tokens are rejected. Computation forms n equals mass over molar mass for each reactant, extent equals moles over coefficient, compares the two extents, and when one is smaller computes leftover excess moles as moles of excess minus limiting extent times the excess coefficient. The preferred field for the mass of reactant A is mass_a, but aliases m_a, massA, and reactant_a_mass are accepted so spreadsheets, query strings, and typed forms can reuse the same contract. Mass of B uses mass_b with aliases m_b, massB, and reactant_b_mass. Molar mass of A is molar_mass_a with aliases mm_a, M_a, and molarMassA; molar mass of B is molar_mass_b with aliases mm_b, M_b, and molarMassB. Stoichiometric coefficients use coeff_a and coeff_b, with aliases a, n_a, and coefficient_a for A, and b, n_b, and coefficient_b for B. Coefficients must be positive; zero fails with invalid_input and a message that names the field so a bad cell does not become a silent division by zero. An optional precision field, with aliases decimals and dp, chooses how many decimal places to expose for the numeric outputs, defaulting to ten and capped at fifteen so JSON goldens stay stable. Pair the free browser run on this page with the priced API when you need the identical mathematical result inside an automated pipeline without re-implementing the extent comparison yourself.
Where limiting-reactant analysis fits in study, lab work, and software
Product and education tools use the endpoint when a learner types two masses, molar masses, and coefficients and the UI must show which reactant limits with clear intermediate moles and extents. On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split — free interactive exploration and a priced, identical API — matches the rest of the KIT tier-A catalog and lets you move from a classroom demo to an automated pipeline without changing the mathematical result. Pair it with mass-to-mass stoichiometry or gas volume helpers when you need related chemistry quantities, and with other science endpoints when you are building a small lab of free, deterministic stoichiometry calculators.
Integration use cases
Deterministic test fixtures
Generate reproducible limiting_reactant, extents, and excess_moles for unit tests, chemistry tutors, and CI assertions on two-reactant limiting analysis.