Stair stringer length calculator
A flight that climbs 2800 mm over a 3500 mm run needs a stringer longer than either side: the calculator gives that exact diagonal length and the pitch angle, so you mark cuts and order timber from one number. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Total rise
- 2,800
- Total run
- 3,500
- Stringer length
- 4,482.1869662
- Angle deg
- 38.6598082541
A stair stringer is the diagonal structural member that carries the risers and treads of a straight flight. Before you mark cuts on lumber or order stock, you need the true sloping length along the underside of the stringer—not just the floor plan run or the storey height alone. This stair stringer length calculator applies the Pythagorean relationship to total vertical rise and total horizontal run, returning the diagonal cut length and the pitch angle from the horizontal so takeoff lists, renovation apps, and site sketches share one deterministic number. Use any consistent linear unit for both inputs: millimetres with millimetres, inches with inches, or feet with feet. Non-positive rise or run fails with a clear invalid input error so forms can validate before a purchase order.
Why the stringer is longer than the rise or the run
A stringer is the sloping structural member that carries the risers and treads of a straight flight. Seen from the side, it closes a right triangle: the total rise is the vertical side, the total run the horizontal side and the stringer the hypotenuse. Its length is therefore found by squaring both sides, adding them and taking the square root. With 2800 mm of rise and 3500 mm of run, the board comes out longer than either measurement, which is why ordering timber from the plan run or the storey height alone leaves you short. The same triangle gives the pitch angle from the horizontal.
Measuring rise and run so the cut is right
Take the total rise from the top of the lower finished surface to the top of the upper finished surface, once floor finishes are known, or adjust the design rise if they will change later. The total run is the horizontal going of the whole flight, from the face of the first riser line to the face of the last, or the plan distance your layout already fixed. Use the same unit for both, millimetres with millimetres or inches with inches, because nothing is converted. Zero or negative values are rejected, since they cannot describe a real triangle.
What you can do with it
Home renovation and loft conversions
Homeowners enter floor-to-floor rise and planned horizontal run to learn how long each stringer board must be before ordering timber or prefabricated stringers.
Contractor takeoff and cut lists
Estimating tools convert measured rise and run into diagonal stringer stock length and pitch angle for straight flights on residential and light commercial jobs.
FAQ
How does the stair stringer length calculator work?
Both inputs must be positive lengths in the same unit.
What happens if total rise or total run is zero or negative?
Both dimensions must be strictly positive; a non-positive leg cannot define a real stringer hypotenuse and is not charged.
Is the stair stringer length calculator free?
The browser tool runs free on your device.
What units should I use?
Any consistent linear system. Mixing inches for rise with millimetres for run will produce wrong results.
How do I get the total run if my plans only show the tread depth?
Multiply the tread depth by the number of treads, or by the number of steps minus one, depending on the convention your plans follow. That product is the total run to enter alongside the total rise.
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/home/stair-stringer-length \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total_rise":2800,"total_run":3500}'const res = await fetch("https://api.kit.forhosting.com/home/stair-stringer-length", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total_rise": 2800,
"total_run": 3500
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/stair-stringer-length",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total_rise": 2800,
"total_run": 3500
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/stair-stringer-length", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total_rise":2800,"total_run":3500}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total_rise":2800,"total_run":3500}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/stair-stringer-length", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"total_rise": 2800,
"total_run": 3500
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.stair_stringer_length",
"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
Measure total rise and total run in one unit system
Total rise is the finished floor-to-floor or landing-to-landing vertical distance the flight must climb. Measure from the top of the lower finished surface to the top of the upper finished surface after you know floor finishes, or adjust the design rise if finishes will change later. Total run is the overall horizontal going of the flight—the sum of the tread goings from the face of the first riser line to the face of the last, or the plan distance your layout already fixed. Express both values in the same linear unit because the calculator never converts systems: if total_rise is two thousand eight hundred millimetres, total_run must also be millimetres. Send total_rise as a strictly positive finite number; aliases rise, height, total_height, and vertical_rise map to the same field for shorter form labels. Send total_run the same way with aliases run, horizontal_run, going_total, and total_going. Zero or negative dimensions raise invalid_input and are not charged, because a non-positive side cannot define a real right triangle for the stringer hypotenuse. Extremely small or huge values outside the published stability range also fail so floating-point results stay meaningful on a Worker isolate. If plans list only storey height and individual tread goings, multiply tread depth by tread count (or step count minus one, depending on your convention) to obtain total run before calling this endpoint.
How stringer length and pitch angle are computed
The engine treats the flight as a right triangle whose vertical leg is total rise and whose horizontal leg is total run. Treat the result as the theoretical centre-line or layout length of the sloping member, then apply your local framing practice when marking the board. The stringer cut length is the hypotenuse: the square root of the sum of the squares of those two legs, written stringer_length equals the square root of total_rise squared plus total_run squared. That is the classical Pythagorean theorem applied to stair geometry, and it is unit-agnostic: the output length uses the same unit you used for both inputs. Alongside the length, the response reports angle_deg, the pitch angle from the horizontal in degrees, computed as the arctangent of rise over run via a two-argument arctangent so the angle stays in a sensible open interval for positive legs. The payload echoes cleaned total_rise and total_run, sets formula to the square-root identity, and labels method as pythagorean_stringer for stable client branching. Identical inputs always produce identical JSON because the path is pure arithmetic with no network, random seed, or wall clock. This product does not enforce code maxima for riser height, going depth, or headroom, and it does not subtract stock thickness, birdsmouth notches, or landing overlaps—those are site layout decisions after you know the geometric diagonal.
API usage, pricing, takeoff workflows and practical limits
Call the free in-browser stair stringer length calculator for quick home estimates, contractor whiteboards, and classroom statics demos without opening a spreadsheet. Remember that finished floor thickness, nosing projection, and how you measure run to the face of the last riser can change effective geometry even when structural numbers look settled—adjust inputs to match the geometry you will actually cut. Send a JSON body with required total_rise and total_run as finite positive numbers or numeric strings. Use the prepaid API when a renovation app, takeoff tool, configurator, or property pipeline 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 a staircase step calculator when you still need riser count and exact riser height from storey height, or with unit converters when drawings mix millimetres with inches. Authors shipping SDKs can map stringer_length into cut lists while showing angle_deg and formula as explanatory detail for the homeowner or site supervisor reviewing the layout before timber is ordered.
Integration use cases
Design apps and material configurators
Mobile and web apps recompute stringer length as users change rise or run, using the same deterministic API contract for quotes and material lists.
Technical questions
What is angle_deg?
The pitch angle of the stringer from the horizontal in degrees, computed as atan2(total_rise, total_run) converted from radians. It helps check comfort and code ranges without replacing a full code review.