Force to Tip an Object Calculator
This force-to-tip-object calculator finds the horizontal force that brings a rigid rectangular block to the threshold of tipping.
Run — free
Enter the object's weight as a force, the height where the horizontal push is applied, and the full base width measured in the tipping direction. The result follows a static moment balance about the edge that becomes the pivot. It is useful for quick engineering estimates, stability checks, classroom problems, and early design comparisons where sliding, impacts, anchoring, and irregular mass distributions are handled separately.
Model the object and the tipping edge
Treat the object as a rigid block resting on a level surface, with its centre of gravity halfway across the stated base width. As the horizontal force increases, the contact pressure shifts toward the edge on the side of tipping. Incipient tipping occurs when the opposite side has just lost contact and that remaining edge acts as the pivot. The object's weight then has a horizontal lever arm equal to half the base width. Enter weight in newtons, not mass in kilograms. If you know mass, multiply it by the applicable gravitational acceleration before using this calculator. Measure base width along the direction in which the object would rotate; a cabinet can have very different stability from front to side. The simplified geometry assumes a centred mass distribution. If the centre of gravity is offset, half the base width is not its true lever arm, so a more detailed moment calculation is required. The result represents an ideal static threshold rather than a general safety rating.
Understand the moment balance
At the tipping threshold, the applied overturning moment equals the resisting moment produced by weight. The horizontal push produces force multiplied by applied height. The weight produces weight multiplied by one-half of the base width. Equating these moments gives horizontal force equals weight times base width divided by twice the applied height. The calculator also returns the resisting moment and the weight lever arm so the intermediate quantities remain visible and easy to audit. Consistent units are essential: using newtons for weight and metres for both lengths returns force in newtons and moment in newton-metres. Raising the point of application reduces the required force in inverse proportion, while widening the base or increasing weight raises it linearly. A height of zero cannot create an overturning moment from a horizontal force and would require division by zero, so the capability reports an input error instead of a misleading infinite or undefined result.
Apply the result with engineering judgment
Compare this tipping threshold with other limits before deciding what will actually happen. A block may slide before it tips if available friction is too low; that comparison needs the coefficient of friction and normal force, which are not inputs here. Anchors, casters, flexible feet, uneven floors, drawers, liquid motion, and external restraints can also change the pivot or the centre of gravity. Dynamic pushes and impacts may initiate motion below or above a simple static estimate because acceleration, deformation, and energy matter. For design work, use conservative dimensions and the most unfavorable credible loading height, then apply the safety factors and standards appropriate to the object and its environment. The returned value is best used to screen configurations, check hand calculations, or document the idealized moment balance. API requests are priced at $0.002; the browser calculation can support quick exploration. A zero result is valid when the entered weight or base width is zero, although such an idealized case may not represent a practical freestanding object.
What you can do with it
Check furniture stability
Estimate the static horizontal push that would bring a cabinet or shelving unit to its idealized tipping threshold.
Compare equipment layouts
Compare how a wider footprint, greater weight, or lower force application point changes the stability of conceptual equipment arrangements.
Verify a mechanics exercise
Confirm a moment-balance calculation and inspect the resisting moment and centre-of-gravity lever arm used in the result.
FAQ
What equation does the calculator use?
It uses horizontal force = weight × base width ÷ (2 × applied height), based on equal moments about the tipping edge.
Should I enter mass or weight?
Enter weight as a force in newtons. Convert mass to weight first by multiplying kilograms by the applicable gravitational acceleration.
Why does an applied height of zero cause an error?
A horizontal force applied at the pivot height has no overturning lever arm. The formula would divide by zero, so no finite threshold can be returned.
Does this tell me whether the object will slide first?
No. Sliding depends on friction and surface conditions. Compare the tipping force with a separate sliding-force calculation.
Where is the centre of gravity assumed to be?
The model assumes it is centred across the base, making its horizontal distance from the tipping edge one-half of the base width.
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/toppling-force \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"weight":980,"height":1.2,"base_width":0.6}'const res = await fetch("https://api.kit.forhosting.com/mech/toppling-force", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"weight": 980,
"height": 1.2,
"base_width": 0.6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/mech/toppling-force",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"weight": 980,
"height": 1.2,
"base_width": 0.6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/mech/toppling-force", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"weight":980,"height":1.2,"base_width":0.6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"weight":980,"height":1.2,"base_width":0.6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/mech/toppling-force", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"weight": 980,
"height": 1.2,
"base_width": 0.6
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "mech.toppling_force",
"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. |