Force equilibrium checker
Three forces of (10, 0), (−6, 8) and (−4, −8) add up to zero, so the set is in equilibrium. Enter each load as x and y components and get a clear yes or no, plus the residual force and its magnitude. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Coplanar force equilibrium is the first filter in every statics worksheet: if the vector sum of the applied forces is not the zero vector, the particle or the free-body diagram cannot be at rest, no matter how carefully the moments later look. Students, tutors, and graders therefore need a deterministic check that accepts each load as an fx, fy pair in a shared Cartesian frame, adds the components, and reports both the residual force and a clear yes-or-no equilibrium flag. This force equilibrium checker does that sum, returns the leftover resultant with its magnitude, and rejects an empty force list instead of pretending that no loads means a balanced body.
What coplanar force equilibrium means and why the residual is the answer
A set of coplanar forces is in translational equilibrium when the vector sum of every force that acts on the free-body diagram is the zero vector. In a shared Cartesian frame that statement splits into two independent scalar conditions: the algebraic sum of the x-components is zero, and the algebraic sum of the y-components is zero. The leftover vector R equals the pair of those sums is the residual force, also called the resultant of the given set.
If the residual is the zero vector, the force polygon closes and no net push remains to accelerate the particle. If the residual is not zero, its magnitude is the size of the unbalanced force that a support, a friction reaction, or a missing load would have to cancel, and its direction is the direction of that leftover push, measured from the positive x-axis with the usual two-argument arctangent.
This is a different question from net torque about a pivot and a different question from the principle of moments: those tests address rotational equilibrium. Search phrases such as force equilibrium checker, coplanar forces residual, resultant of concurrent forces, and is this system in equilibrium all point at the component-sum job. Magnitudes may be positive or negative because the sense of each load lives in the sign of its components, not in a separate clockwise list.
Input contract, residual fields, tolerance, and error behaviour
A row that is not an object, or that omits one component, fails by index so a form can highlight the bad line. Non-finite values, empty strings, and magnitudes above the supported limit fail by name. An optional tolerance, also accepted as tol or eps, is the non-negative residual-magnitude threshold; the default is a tight engineering epsilon.
The residual angle in degrees is included only when the set is not in equilibrium: a zero vector has no direction, and optional output fields are omitted rather than set to null. There is no automatic conversion from magnitude and angle, no moment sum, and no unit converter; resolve components first, then check them here. Failed validation is not billed.
What you can do with it
Statics homework and concurrent-force checks
Students and tutors enter each load as fx and fy, then confirm whether the residual is the zero vector and how large any leftover resultant is.
Missing-reaction and support sketches
Quick structured numbers for the leftover force a pin, cable, or friction pad must supply when the listed coplanar components do not cancel.
FAQ
What happens if I send no forces?
A missing field or an empty list is not treated as equilibrium; at least one finite force record is required.
Does a zero residual also mean the body cannot rotate?
No. This check is translational only. Rotational equilibrium about a pivot is a separate moment or net-torque question and is not computed here.
What does the residual force tell me?
It is the leftover push when the components do not cancel. Its magnitude is the force a support, a friction reaction or a missing load would have to supply, and its direction shows where that push points.
Can I enter a force as a magnitude and an angle?
No. Resolve each force into x and y components first, then enter them here. The checker only adds components; it does not convert polar values, sum moments or change units.
What is the tolerance for?
It sets how small the residual must be to count as balance. If the residual magnitude is at most the tolerance, the set is reported in equilibrium. Leave it empty to use a very tight default.
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/mech/equilibrium-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"forces":[{"fx":10,"fy":0},{"fx":-6,"fy":8},{"fx":-4,"fy":-8}]}'const res = await fetch("https://api.kit.forhosting.com/mech/equilibrium-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"forces": [
{
"fx": 10,
"fy": 0
},
{
"fx": -6,
"fy": 8
},
{
"fx": -4,
"fy": -8
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/mech/equilibrium-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"forces": [
{
"fx": 10,
"fy": 0
},
{
"fx": -6,
"fy": 8
},
{
"fx": -4,
"fy": -8
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/mech/equilibrium-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"forces":[{"fx":10,"fy":0},{"fx":-6,"fy":8},{"fx":-4,"fy":-8}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"forces":[{"fx":10,"fy":0},{"fx":-6,"fy":8},{"fx":-4,"fy":-8}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/mech/equilibrium-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"forces": [
{
"fx": 10,
"fy": 0
},
{
"fx": -6,
"fy": 8
},
{
"fx": -4,
"fy": -8
}
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "mech.equilibrium_check",
"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_items | 100 |
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 coplanar force equilibrium means and why the residual is the answer
People want the two side totals, the leftover vector, a magnitude they can write on a worksheet, and a boolean they can assert in a test. This endpoint returns those fields as JSON so classroom widgets, course graders, and engineering notebooks share one contract instead of each reimplementing the bookkeeping and the floating-point tolerance.
Input contract, residual fields, tolerance, and error behaviour
Send a JSON body whose forces field is an array of records, each with finite fx and fy in the same coherent force unit, typically newtons. The field is required; aliases list and items are accepted. Each row may also spell the components as Fx or force_x or x, and Fy or force_y or y. Missing forces, a body that is not an object, a value that is not an array, or an empty array all fail with invalid_input and the message that no forces were given, so an empty homework submission cannot look balanced. After validation the engine sums each column, forms the residual as that pair, takes the Euclidean magnitude, and marks is_equilibrium true when the magnitude is at most the tolerance. On success the body echoes the parsed forces, the force count, both sums, residual_fx, residual_fy, residual_magnitude, the tolerance, a unit label, the formula string, and the method name.
Where a force equilibrium API earns its keep, limits, and honest pricing
Use the browser tool when you want an immediate check that a particle, a concurrent-load diagram, a guyed mast sketch, or a statics homework figure is balanced in the plane, or when you want the leftover resultant that a pin or cable must supply. Keep every component in the same unit system: newtons stay newtons, and any other coherent pair stays coherent. Results are fully deterministic. Use the API when a lesson platform, contest grader, or notebook must assert the same residual vector and the same equilibrium flag for many component lists under one contract. Each successful request is one billable item at $0.002; failed validation does not consume balance. The same force list and the same tolerance always yield the same sums, the same residual, and the same boolean, with no language model, no external physics service, and no randomness, so the capacity is safe to pin in continuous-integration checks and reproducible lesson materials.
Integration use cases
Deterministic fixtures for physics tests
Pipelines that seed unit tests or interactive free-body demos can call a pure ΣFx, ΣFy oracle instead of reimplementing the residual and the tolerance in every language.
Technical questions
How do I check whether coplanar forces are in equilibrium?
Send an array of {fx, fy} records. The API returns the residual R = (sum Fx, sum Fy), its magnitude, and is_equilibrium true when that magnitude is at most the tolerance.
Why is residual_angle_deg sometimes missing?
When the set is in equilibrium the residual is treated as the zero vector, which has no direction. The angle field is omitted rather than invented.
What does the force equilibrium checker cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.