How it works
Riser count = rounded total rise ÷ target riser height; actual riser = total rise ÷ riser count; tread/run values follow the selected stair geometry.; material = unrounded purchase quantity × entered unit price; middle = material + labor + delivery; low/high = middle × (1 ∓ variation/100).
Enter dimensions, an appropriate purchasing allowance and supplier-specific yields. Use the displayed purchase unit consistently. The US page starts with US customary dimensions and USD prices. The metric selector changes measurement units, not currency or local construction rules.
Input query strings and outputs
Use an input name in this page’s URL as ?name=value, and join additional inputs with &. Portable shared links may instead use the compact ?ac= state parameter.
Input query strings
8-
?unitSystem=Dimension unitsChoice · Optional · Default: imperial · Accepted values: imperial, metric
-
?totalRise=Total rise (in / cm)Number · Optional · Default: 108
-
?targetRise=Target rise (in / cm)Number · Optional · Default: 7
-
?treadDepth=Tread going (in / cm)Number · Optional · Default: 10
-
?unitCost=Material price (USD / tread)Money · Optional · Default: 0
-
?laborCost=Total labor allowance (USD)Money · Optional · Default: 0
-
?deliveryCost=Delivery allowance (USD)Money · Optional · Default: 0
-
?costSpreadPercent=Low/high variation around entered subtotal (%)Percentage · Optional · Default: 15
Outputs
15-
numRisersRisersNumber · Primary output
-
actualRiseActual rise (in)Number
-
riseCentimetresActual rise (cm)Number
-
numTreadsTreadsNumber
-
totalRunTotal run (in)Number
-
runMetresTotal run (m)Number
-
materialCostMaterial costCurrency · Currency: USD
-
laborCostLabor allowanceCurrency · Currency: USD
-
deliveryCostDelivery allowanceCurrency · Currency: USD
-
unitRateEntered USD rate / treadCurrency · Currency: USD
-
estimatedTotalEntered subtotalCurrency · Currency: USD
-
costLowLow budget scenarioCurrency · Currency: USD
-
costMidMiddle budget scenarioCurrency · Currency: USD
-
costHighHigh budget scenarioCurrency · Currency: USD
-
pricingStatusPricing statusText
Worked example: illustrative US-dollar assumptions
At 108 in total rise and a 7 in target, the retained nearest-riser method selects 15 risers, each 7.2 in. Fourteen treads at an entered 10 in going produce 140 in total run. An illustrative $30 per tread is $420; with $500 labor and $30 delivery the middle budget is $950. Low and high scenarios are $807.50 and $1,092.50. These dimensions are not a code approval.
These are arithmetic examples, not researched regional prices. Load the worked example.
Limitations
Planning quantities and user-entered USD costs, not a contractor quote, structural design or code approval. Default prices are zero (unpriced); enter your supplier and labor quotes. New changes await independent review.
The unit-price field is never a regional cost index. Labor and delivery are separately entered totals. Low and high outcomes are a sensitivity check around your own quote, not promises that a contractor can complete the work within that range. Verify product coverage, actual site dimensions, minimum order sizes and waste before buying.
Frequently asked questions
What does a zero price mean in the stair estimate?
It means the corresponding item has not been priced. Quantities can still be useful, but a zero subtotal must not be treated as free materials or a real quotation.
Where do the stair low and high budgets come from?
They apply the adjustable percentage to your material, labor and delivery subtotal. They are scenarios using your assumptions, not local market-price evidence or statistical confidence limits.
How do metric dimensions affect this stair calculation?
The selector converts dimensions already entered. The engine uses consistent underlying units. USD prices retain the purchasing unit printed on their labels; changing dimensions does not convert a per-yard price into a per-metre price.
Sources
NIST SI conversion factors — accessed 10 September 2026
NIST international-foot guidance — accessed 10 September 2026