Calculating stair stringers is a critical step in ensuring safe, comfortable, and code-compliant stairs. A stair stringer is the structural component that supports the treads (where you step) and risers (the vertical space between treads). Accurate calculations prevent issues like uneven steps, inadequate headroom, or structural instability.
This calculator helps determine the number of steps, their precise height, the horizontal distance needed for treads, and the angle for cutting the stringers.
Key Terms and Formulas:
Total Rise: The total vertical distance from the lower floor to the upper floor that the stairs must span.
Tread Depth (Run per Step): The horizontal depth of each step, from the front edge to the riser. This affects the overall horizontal length of the stair run.
Desired Riser Height: The ideal vertical height of each individual step. Building codes often specify a range for comfortable and safe risers.
Stringer Length (Total Run): The total horizontal distance the stairs will cover. This is often determined by the available space or by the desired tread depth multiplied by the number of treads.
How the Calculator Works:
Number of Steps: The calculator first determines the number of steps needed by dividing the Total Rise by the Desired Riser Height. Since you can only have whole steps, the result is rounded up.
Number of Steps = ceil(Total Rise / Desired Riser Height)
Actual Riser Height: Once the number of steps is fixed, the actual riser height is calculated by dividing the Total Rise by the determined Number of Steps. This ensures the stairs reach the exact total rise.
Actual Riser Height = Total Rise / Number of Steps
Number of Treads: For most standard stair configurations, the number of treads is one less than the number of steps (the top tread is often the floor level).
Number of Treads = Number of Steps - 1
Stringer Cut Angle: This is the angle at which the cuts are made on the stringer to accommodate the treads and risers. It's calculated using the arctangent of the ratio of the actual riser height to the tread depth.
Stringer Cut Angle (in degrees) = atan(Actual Riser Height / Tread Depth) * (180 / PI)
(Note: The calculator uses the Pythagorean theorem and trigonometry to derive this. The rise and run form the two legs of a right triangle, and the angle can be found using atan(rise/run).)
Stringer Waste: This is an estimation of material loss. It's calculated by subtracting the sum of all treads and risers from the total horizontal distance covered by the stringer. A common way to estimate is based on the overall diagonal length of the stair and the lengths of the cut-outs. For simplicity here, we estimate based on the total rise and the total run. A more precise calculation would account for the thickness of the treads.
Estimated Waste = (Total Rise + Total Run) * 0.20 (This is a general estimate, assuming about 20% waste, which is common in stair construction due to cuts and layout.)
Example Calculation:
Let's say you have a Total Rise of 105 inches, you prefer a Desired Riser Height of 7 inches, the Tread Depth is 10 inches, and you have a Stringer Length (Total Run) of 130 inches.
Number of Steps:ceil(105 / 7) = 15 steps
Actual Riser Height:105 / 15 = 7 inches (Perfect!)
Number of Treads:15 - 1 = 14 treads
Stringer Cut Angle:atan(7 / 10) ≈ 34.99 degrees
Estimated Waste:(105 + 130) * 0.20 = 47 inches (This is an estimate, actual waste can vary.)
The calculator will output these values, helping you plan your lumber needs and cutting angles.
function calculateStairStringer() {
var totalRise = parseFloat(document.getElementById("totalRise").value);
var treadDepth = parseFloat(document.getElementById("treadDepth").value);
var desiredRiserHeight = parseFloat(document.getElementById("riserHeight").value);
var stringerLength = parseFloat(document.getElementById("stringerLength").value);
var numStepsElement = document.getElementById("numSteps");
var actualRiserHeightElement = document.getElementById("actualRiserHeight");
var numTreadsElement = document.getElementById("numTreads");
var stringerCutAngleElement = document.getElementById("stringerCutAngle");
var stringerWasteElement = document.getElementById("stringerWaste");
numStepsElement.innerHTML = "";
actualRiserHeightElement.innerHTML = "";
numTreadsElement.innerHTML = "";
stringerCutAngleElement.innerHTML = "";
stringerWasteElement.innerHTML = "";
if (isNaN(totalRise) || totalRise <= 0 ||
isNaN(treadDepth) || treadDepth <= 0 ||
isNaN(desiredRiserHeight) || desiredRiserHeight <= 0 ||
isNaN(stringerLength) || stringerLength <= 0) {
document.getElementById("result-value").innerHTML = "Please enter valid positive numbers for all fields.";
return;
}
var numSteps = Math.ceil(totalRise / desiredRiserHeight);
var actualRiserHeight = totalRise / numSteps;
var numTreads = numSteps – 1;
// Calculate the angle in radians, then convert to degrees
var angleRad = Math.atan(actualRiserHeight / treadDepth);
var stringerCutAngle = angleRad * (180 / Math.PI);
// Estimated waste calculation – a common rule of thumb is about 20% of the total material length
// A more refined calculation would consider the geometry of the cuts.
// For simplicity, we estimate based on total rise and total run.
var estimatedWaste = (totalRise + stringerLength) * 0.20;
numStepsElement.innerHTML = "Number of Steps: " + numSteps;
actualRiserHeightElement.innerHTML = "Actual Riser Height: " + actualRiserHeight.toFixed(2) + " inches";
numTreadsElement.innerHTML = "Number of Treads: " + numTreads;
stringerCutAngleElement.innerHTML = "Stringer Cut Angle: " + stringerCutAngle.toFixed(2) + " degrees";
stringerWasteElement.innerHTML = "Estimated Material Waste: " + estimatedWaste.toFixed(2) + " inches";
}