ForHosting KIT · Math

Stair rise and run calculator

Turn a floor-to-floor height into equal steps: a total rise of 280 with a target riser of 18 gives 16 risers of exactly 17.5, 15 treads and, with treads 25 deep, a total run of 375 at 34.992°. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Total rise
280
Target riser height
18
Tread depth
25
Decimal places
4
You get
Num risers
16
Riser height
17.5
Num treads
15
Total run
375

Dimension stairs from total rise and target riser or fixed count. Search intent: stair rise and run calculator. No network calls or random seeds are required. Failed jobs are not billed.

From one height to a full staircase

Start with the total rise, the vertical distance from the lower floor to the upper one, and the riser height you would like each step to have. The calculator divides the first by the second and rounds to the nearest whole number of risers, then splits the total rise evenly, so every step is the same height. There is always one tread fewer than risers, because the upper floor works as the last step. If you also give the tread depth, you get the total run, the horizontal length the stairs take up, and their angle. A rise of 280 with a target of 18 and treads of 25 gives 16 risers of 17.5, 15 treads, a run of 375 and 34.992°.

Mistakes that make stairs come out wrong

The most common is mixing units: the total rise, the riser height and the tread depth must all be in the same unit, whatever it is. The second is building with the target height instead of the result. The target is only a wish; the real riser is the total rise divided by the whole number of steps, which is why 18 becomes 17.5 here. The third is multiplying the tread depth by the number of risers, which overstates the run by one tread. Results are rounded only once, to the number of decimals you choose.

Teaching

Pinned goldens.

How many risers do I need for my stairs?

Divide the total rise by your target riser height and round to the nearest whole number. A rise of 280 with a target of 18 gives 16 risers, and the height is then split evenly, so each one is exactly 17.5.

Why is there one tread fewer than risers?

The last riser takes you onto the upper floor, which acts as the final step, so it needs no tread of its own. That is why 16 risers come with 15 treads.

Can I fix the number of steps myself?

Yes. Enter the number of risers you want instead of a target height, and the total rise is divided by that count. Every riser comes out the same height, whatever number you choose.

How is the angle of the stairs worked out?

It is the arctangent of the riser height divided by the tread depth, given in degrees. Risers of 17.5 with treads 25 deep give an angle of 34.992°, which lets you compare two layouts at a glance.

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.

POSThttps://api.kit.forhosting.com/math/stairs-rise-run

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.

curl -X POST https://api.kit.forhosting.com/math/stairs-rise-run \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"total_rise":280,"riser":18}'
{
  "total_rise": 280,
  "riser": 18
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.stairs_rise_run",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.

How it works

No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. Dimension stairs from total rise and target riser or fixed count. n≈round(total/riser); riser=total/n; angle=atan(riser/run). The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.

Inputs, limits and rounding

Optional decimals use half-up once. Outputs echo inputs. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. Provide required JSON fields. Invalid types raise invalid_input. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.

When to use it

Use when search intent matches. Dimension stairs from total rise and target riser or fixed count. No network calls or random seeds are required. Failed jobs are not billed. No network calls or random seeds are required. Failed jobs are not billed. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested. Use the same JSON from spreadsheets, CMS, automation, or teaching demos.

Quick check

Free widget.

Automation

Same JSON via API.

Free?

Yes tier A.

Network?

No.

Bad input?

invalid_input.

API?

Yes.

Locales?

EN-only; Nitro hydrates.

Read the full KIT documentation →