Equilibrium constant calculator
Get Kc straight from equilibrium concentrations: two reactants at 0.5 mol/L and one product at 2 mol/L, all with coefficient 1, give Kc 8. The numerator and denominator appear before the division, so you can check each step. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Runs in your browser. Free, unlimited — your data never leaves this page.
The concentration equilibrium constant Kc summarizes how far a reversible chemical reaction has settled when forward and reverse rates balance. For a balanced equation it is the mass-action quotient built only from equilibrium concentrations raised to their stoichiometric powers: products in the numerator, reactants in the denominator. Zero reactant concentration is rejected as invalid input because the expression would divide by zero and Kc would be undefined, matching the classroom rule that every reactant term in the denominator must be a positive equilibrium amount.
What Kc means and which concentrations and coefficients to send
Start from a balanced chemical equation and the equilibrium concentrations of every species that appears in the mass-action expression. For aA plus bB goes to cC plus dD, Kc equals C to the c times D to the d, divided by A to the a times B to the b, where square brackets denote concentration in consistent units such as moles per liter. Send products the same way.
Optional name or species strings label rows for display without changing the math. Zero reactant concentration is invalid input because any zero base in the denominator makes Kc undefined through division by zero; correct the inventory or the ICE table before retrying. Zero product concentration is allowed and simply yields Kc equal to zero when every product term vanishes.
Negative concentrations and non-positive coefficients are rejected so impossible inventories never look like a successful calculation. Classroom examples include two reactants at half a mole per liter with unit coefficients and one product at two moles per liter giving Kc equal to eight, or higher powers when a coefficient is two so a squared concentration appears in the mass-action product.
What you can do with it
Lab reports and equilibrium tables
Teaching assistants and technicians compute Kc from measured equilibrium concentrations and balanced coefficients for lab reports without hand-calculating multi-species power products.
FAQ
What happens if a reactant concentration is zero?
A zero reactant term makes the mass-action denominator zero, so Kc is undefined; the error is not charged as a successful item.
Can product concentration be zero?
Yes. Zero product concentration is allowed and yields Kc equal to zero when the numerator mass-action product is zero.
Is the equilibrium constant calculator free?
The browser tool runs free on your device.
Does this convert Kc to Kp?
No. This capability only evaluates the concentration mass-action expression for Kc. Converting to Kp requires temperature and Δn of gas and is a separate calculation.
How do the coefficients change Kc?
Each concentration is raised to the power of its coefficient in the balanced equation. A coefficient of 2 means that concentration appears squared, so getting the coefficients right matters as much as the concentrations themselves.
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/equilibrium-constant \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"reactants":[{"concentration":0.5,"coefficient":1,"name":"A"},{"concentration":0.5,"coefficient":1,"name":"B"}],"products":[{"concentration":2,"coefficient":1,"name":"C"}]}'const res = await fetch("https://api.kit.forhosting.com/chem/equilibrium-constant", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"reactants": [
{
"concentration": 0.5,
"coefficient": 1,
"name": "A"
},
{
"concentration": 0.5,
"coefficient": 1,
"name": "B"
}
],
"products": [
{
"concentration": 2,
"coefficient": 1,
"name": "C"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/chem/equilibrium-constant",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"reactants": [
{
"concentration": 0.5,
"coefficient": 1,
"name": "A"
},
{
"concentration": 0.5,
"coefficient": 1,
"name": "B"
}
],
"products": [
{
"concentration": 2,
"coefficient": 1,
"name": "C"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/chem/equilibrium-constant", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"reactants":[{"concentration":0.5,"coefficient":1,"name":"A"},{"concentration":0.5,"coefficient":1,"name":"B"}],"products":[{"concentration":2,"coefficient":1,"name":"C"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"reactants":[{"concentration":0.5,"coefficient":1,"name":"A"},{"concentration":0.5,"coefficient":1,"name":"B"}],"products":[{"concentration":2,"coefficient":1,"name":"C"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/chem/equilibrium-constant", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"reactants": [
{
"concentration": 0.5,
"coefficient": 1,
"name": "A"
},
{
"concentration": 0.5,
"coefficient": 1,
"name": "B"
}
],
"products": [
{
"concentration": 2,
"coefficient": 1,
"name": "C"
}
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "chem.equilibrium_constant",
"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. |
Technical notes
What Kc means and which concentrations and coefficients to send
Send the required field reactants as a non-empty array of objects; each object needs a non-negative concentration (aliases concentration, conc, c, molarity, or M) and a positive stoichiometric coefficient (aliases coefficient, coeff, nu, stoich, or n). Array aliases reactant and left map to reactants; product and right map to products so client code can speak either laboratory or left-right equation English. Identical inputs always produce identical JSON because the path is pure arithmetic with no network, no model, no random seed, and no wall clock.
Reading the response: Kc, numerator, denominator, and species rows
Use kc alone when a form only needs the answer cell; use numerator and denominator when a worked solution sheet must show the two mass-action products before the division; use the echoed species rows when grading software checks that students entered concentrations and coefficients correctly. Validation failures such as zero reactant concentration mention that zero reactant concentration is not allowed so learners can fix an ICE table zero without reading a stack trace. On success the response echoes normalized reactants and products arrays with rounded concentration and coefficient values and optional names, plus numerator as the product of every product concentration raised to its coefficient, denominator as the corresponding reactant product, and kc together with the uppercase alias Kc for clients that prefer textbook casing. The formula field restates Kc equals the product over products of concentration to the nu divided by the product over reactants of concentration to the nu, unit is concentration_power as a reminder that Kc is dimensionless only after activity conventions and otherwise carries concentration units to a net power, and method is always mass_action_kc so downstream routers can branch without sniffing shapes. Missing arrays, empty arrays, non-finite numbers, negative concentrations, and non-positive coefficients also raise invalid_input and are not charged after the engine rejects the request.
API usage, pricing, classroom workflows, and practical limits
Call the free in-browser equilibrium constant calculator for homework checks, lecture demos, and quick lab verification without installing a spreadsheet of power formulas or a chemistry CAS. Source inputs follow the same retention rules as other KIT parse items. Authors shipping SDKs can map reactants, products, and kc into labeled tables Concentration, Coefficient, and Equilibrium constant Kc—the same columns students write when they rearrange mass-action expressions by hand on paper. Send a JSON body with reactants and products arrays of species objects, each carrying concentration and coefficient as numbers or numeric strings. Use the prepaid API when a tutoring platform, coding-assessment sandbox, LIMS integration, or curriculum generator needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with your own ICE-table helper when the next step is finding unknown equilibrium concentrations from initial amounts and a known Kc—this capability intentionally stops at evaluating Kc from fully known equilibrium rows so each SEO intent stays focused. It does not convert Kc to Kp, which needs temperature and the change in gas moles; keep that conversion in a separate step when your process model requires partial pressures. Species lists are capped for Worker isolate safety while still covering multi-reactant classroom and bench cases.
Integration use cases
Homework and exam verification
Students enter equilibrium concentrations and stoichiometric coefficients, compare Kc against structured JSON, and get a clear error when a zero reactant concentration would make the expression undefined.
Tutoring apps and assessment pipelines
Curriculum tools call a stable prepaid endpoint instead of reimplementing mass-action Kc in every language, grading harness, and spreadsheet template.
Technical questions
How do I calculate the equilibrium constant Kc with this tool?
Send JSON with reactants and products arrays. Each species object needs concentration and coefficient. The response returns kc (and Kc), plus numerator and denominator mass-action products.