Pulley calculator
A 400 N load shared by 4 supporting rope segments needs only 100 N of pull. Enter the load and the number of segments to get the mechanical advantage, the rope tension and the pulling force of an ideal block and tackle. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Load
- 400
- Segments
- 4
- Mechanical advantage
- 4
- Rope tension
- 100
- Pulling force
- 100
- Model
- ideal
A pulley system multiplies force by sharing a load across several supporting rope segments. In the ideal textbook model, mechanical advantage equals that segment count, rope tension equals the load divided by the same count, and the pulling force you apply at the free end is identical to the tension.
What mechanical advantage and rope tension mean in a pulley system
The ideal pulley model used in introductory mechanics treats the rope as massless and the sheaves as frictionless, so every supporting rope segment that holds the movable block carries the same tension. Vertical equilibrium of that block then requires that the product of the segment count and the tension equal the load weight, which rearranges immediately into T equals load divided by n. The force you apply at the free end of the rope is the same tension, so the required pulling force is also load divided by n.
Mechanical advantage is defined as load over effort, which in this ideal case equals n, the number of supporting segments you can count on a sketch or on a physical block and tackle. A single fixed pulley (n equals one) changes direction only, so advantage is one and tension equals the full load. A single movable pulley (n equals two) halves both tension and pulling force.
Gun tackle, luff tackle, and longer block-and-tackle trains simply increase n. This landing reports that ideal closed form. It does not add sheave friction, rope mass, or acceleration of the load; those corrections belong to a different analysis and a different search.
Input contract, formulas, and error behaviour
The product contract for this capability is strict on the segment count: n must be a positive integer. Zero is rejected because effort would divide by zero. A negative count is not a physical strand count.
A fractional value such as 2.5 is rejected instead of inventing half a sheave. A negative load is also rejected. Example: load four hundred newtons and four supporting segments yields mechanical advantage four and a tension and pulling force of one hundred newtons each.
There is no unit conversion and no friction factor; keep newtons with newtons, or any other coherent force unit, throughout.
Where a pulley calculator earns its keep
Classrooms and tutoring platforms use a pulley calculator so learners can check mechanical advantage, rope tension, and pulling force for arbitrary loads and strand counts without flipping an n in the denominator by hand. Rigging worksheets, theatre-fly notes, and field cards for a block and tackle often reduce to the same two numbers: how heavy is the load, and how many parts of line support it. Failed validation does not consume balance.
Keep requests small, pin the rounded tension and pulling force in tests, and you get reproducible answers for homework, LMS plugins, and edge workers without standing up symbolic mechanics infrastructure of your own. For two hanging masses with a single connecting rope, use an Atwood-machine calculator instead; that is a different search and a different equation of motion.
What you can do with it
Classroom and homework checks
Let students submit a load and a supporting-segment count and verify mechanical advantage, rope tension, and pulling force against the textbook identity IMA = n and T = F = load / n.
Block-and-tackle field cards
Turn a known load and a counted number of parts of line into the ideal pulling force a rigger must apply before adding a friction allowance by hand.
FAQ
How do I calculate pulley mechanical advantage, rope tension, and pulling force?
Send a finite non-negative load and a positive integer segments count n.
Why are rope tension and pulling force the same number?
In the ideal massless, frictionless model every supporting segment carries the same tension T, and the free end you pull is one more length of that same rope, so the effort force equals T.
How do I count the supporting rope segments?
Count the parts of rope that hold up the movable block or the load, on your sketch or on the real block and tackle. That count is the mechanical advantage and the number you enter.
What does a single fixed pulley do?
It only changes the direction of the pull. With one supporting segment the advantage is one and the tension equals the full load, while a single movable pulley with two segments halves both.
Does the result include friction or the weight of the rope?
No. It is the ideal model: a massless rope, frictionless sheaves and a load that is not accelerating. Those corrections belong to a different, more detailed analysis.
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/phys/pulley \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"load":400,"segments":4}'const res = await fetch("https://api.kit.forhosting.com/phys/pulley", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"load": 400,
"segments": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/pulley",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"load": 400,
"segments": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/pulley", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"load":400,"segments":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"load":400,"segments":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/pulley", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"load": 400,
"segments": 4
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.pulley",
"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
This pulley calculator accepts a load weight and a supporting-segment count, returns those three results as structured JSON, and fails with invalid_input when the segment count is not a positive integer so clients never divide by zero or invent a fractional sheave.
What mechanical advantage and rope tension mean in a pulley system
Search intent clusters around pulley calculator, mechanical advantage of a pulley, rope tension in a block and tackle, and how much force to pull to lift a given weight: people who already know the load and can count the strands and want those three numbers, not a CAD model of a crane.
Input contract, formulas, and error behaviour
POST a JSON body with two required fields: load, the finite non-negative weight or force being lifted, and segments, the number of supporting rope segments that share that load. Each field may arrive as a JSON number or as a numeric string; documented aliases such as weight, load_weight, W, n, rope_segments, and supporting_segments are accepted so forms and scripts can use textbook symbols. Missing fields, empty strings, non-numeric text, NaN, and Infinity all fail immediately with invalid_input before any result is returned, and failed validation is not charged. On success the body echoes the validated load and segments, then returns mechanical_advantage equal to n, rope_tension equal to load divided by n, pulling_force equal to the same quotient, a model label of ideal, the formula string IMA equals n and T equals F equals load over n, and a method label. Results are rounded to a stable precision so the same input always yields the same JSON across JavaScript engines.
Where a pulley calculator earns its keep
Exam-prep generators need a deterministic oracle that marks a non-positive or non-integer segment count as invalid_input instead of silently returning Infinity that a buggy grader might treat as success. Calling a tiny parse API avoids pulling a full dynamics package for a two-input identity.
Integration use cases
Exam and LMS auto-grading
Mark pulley items with a deterministic oracle that rejects a non-positive or non-integer segment count as invalid_input and never invents a fractional sheave.
Technical questions
What happens if the segment count is not a positive integer?
The task fails with invalid_input. Zero, negative, and fractional strand counts are not a physical supporting-segment count, so the request is rejected and is not billed.
Does a single fixed pulley reduce the load?
No. A single fixed pulley has n = 1, so mechanical advantage is one and you still pull with a force equal to the full load; it only changes the direction of the pull.
What does the pulley calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.