Crank mechanism torque calculator
This crank mechanism torque calculator determines the instantaneous turning moment produced when a piston force acts through a crank at a specified angle.
Run — free
Enter the piston force in newtons, the crank angle in degrees, and the crank radius in metres. The calculator resolves the force into its tangential component and multiplies that component by the radius, returning torque in newton-metres. It is intended for the ideal three-input crank model, making it useful for quick engine estimates, classroom exercises, design comparisons, and repeatable automated calculations.
Understand the ideal crank torque model
A piston force acts along the cylinder axis, but only the component perpendicular to the crank produces a turning moment about the crankshaft. In the ideal three-input model, that tangential component is piston force multiplied by the sine of the crank angle. Multiplying the tangential force by the crank radius gives torque: torque equals piston force times crank radius times sine of crank angle. The angle is measured from the piston axis, so an angle of zero degrees places the crank along the force line and produces zero torque even when piston force is large. At ninety degrees, the sine is one, the entire piston force is tangential, and the torque magnitude reaches its maximum for the supplied force and radius. Angles beyond that point can produce positive or negative signed results according to the sine, which is helpful when examining a complete crank rotation. The returned tangential force and angle in radians make the intermediate steps visible instead of presenting an unexplained final number. Use newtons and metres to obtain the reported SI result in newton-metres.
Enter force, angle, and radius correctly
Provide piston_force as a finite number in newtons, crank_angle as a finite number in degrees, and crank_radius as a non-negative finite number in metres. Numeric strings are accepted for form and data-pipeline convenience, while missing values, empty strings, non-numeric text, infinities, and values outside the supported magnitude are rejected as invalid input. The aliases force, angle, and radius are also accepted, though the canonical names are clearer in saved jobs and integrations. Piston force may be signed: a negative value reverses the resulting tangential force and torque. Crank angle may be any finite degree value, so you can evaluate points across multiple revolutions without first reducing the angle. Radius may be zero, which correctly yields zero torque, but it cannot be negative because radius is a physical length. Results are rounded to a stable decimal precision so identical inputs produce identical JSON across repeated calls. No unit conversion is performed. If your source dimensions use millimetres, convert the radius to metres before calculation; for example, fifty millimetres is 0.05 metres. Keeping units consistent prevents a thousandfold torque error that can otherwise look plausible.
Apply the result and recognize its limits
Use this capability for rapid comparisons of crank radius, piston loading, and angular position, or as a deterministic calculation step in an engineering worksheet, teaching tool, simulation preprocessor, or test fixture. A successful API request costs $0.002, while the same pure calculation can support the free browser experience. The implementation makes no network request, reads no clock, uses no random values, and calls no model, so a given input always produces the same result. This is deliberately an ideal crank torque calculation based only on the three quantities named in the input. It does not include connecting-rod angularity, rod length, cylinder pressure variation, reciprocating inertia, bearing friction, crankshaft losses, combustion timing, or torque contributions from other cylinders. A detailed slider-crank dynamic analysis needs additional geometry and mass data and may yield a different instantaneous shaft torque. Treat this result as the moment from the ideal tangential projection of the supplied piston force, not as a complete prediction of measured engine output. For a multi-cylinder engine, calculate each cylinder at its own phase angle and combine signed torques only when the force assumptions and angular reference are consistent. That boundary keeps the answer transparent and prevents hidden engineering assumptions.
What you can do with it
Compare crank radii
Quantify how a proposed stroke-related radius change alters ideal torque at the same piston force and angle.
Check an engine mechanics exercise
Verify the tangential force and crankshaft moment for a known force, radius, and angular position.
Create deterministic simulation fixtures
Generate stable reference values for software that evaluates ideal crank torque across a rotation.
FAQ
What equation does the calculator use?
It uses torque = piston force × crank radius × sin(crank angle), with the angle interpreted in degrees.
What units should I enter?
Enter force in newtons and radius in metres to obtain torque in newton-metres. The crank angle is entered in degrees.
Why is torque zero at zero degrees?
At zero degrees the piston force is aligned with the crank, so its perpendicular or tangential component is zero.
Does this include connecting-rod geometry?
No. It is the ideal three-input model requested here. Exact slider-crank dynamics require connecting-rod length and often additional force and inertia data.
How much does an API calculation cost?
Each successful API request costs $0.002. Validation failures do not return a calculated result.
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/eng/crank-torque \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"piston_force":12000,"crank_angle":60,"crank_radius":0.05}'const res = await fetch("https://api.kit.forhosting.com/eng/crank-torque", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"piston_force": 12000,
"crank_angle": 60,
"crank_radius": 0.05
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/crank-torque",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"piston_force": 12000,
"crank_angle": 60,
"crank_radius": 0.05
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/crank-torque", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"piston_force":12000,"crank_angle":60,"crank_radius":0.05}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"piston_force":12000,"crank_angle":60,"crank_radius":0.05}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/crank-torque", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"piston_force": 12000,
"crank_angle": 60,
"crank_radius": 0.05
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.crank_torque",
"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. |