Downspout Sizing and Spacing Calculator

ANALife Services AuthorityNational Calculator Authority›Downspout Sizing and Spacing Calculator

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Downspout Sizing and Spacing Calculator

Calculate the required number, size, and spacing of downspouts for your roof based on drainage area, rainfall intensity, and downspout dimensions.

Roof Length (ft)

Roof Width / Eave-to-Ridge Run (ft)

Roof Pitch (rise:12 — enter rise, e.g. 6 for 6:12)

Design Rainfall Intensity (in/hr)

Typical US values: 2–6 in/hr. Check local IPC Table 1106.2.

Downspout Width / Diameter (in)

Downspout Depth (in) — use same value for round pipes

Downspout Shape

Rectangular Round (circular)

Calculate Results will appear here.

function dowCalc() { const resultDiv = document.getElementById('dow-result');

// --- Gather inputs --- const roofLength = parseFloat(document.getElementById('dow-roof-length').value); const roofWidth = parseFloat(document.getElementById('dow-roof-width').value); const pitch = parseFloat(document.getElementById('dow-roof-pitch').value); const rainfall = parseFloat(document.getElementById('dow-rainfall').value); const dsWidth = parseFloat(document.getElementById('dow-ds-width').value); const dsDepth = parseFloat(document.getElementById('dow-ds-depth').value); const dsShape = document.getElementById('dow-ds-shape').value;

// --- Validation --- const errors = []; if (isNaN(roofLength) || roofLength 24) errors.push("Roof Pitch rise must be between 0 and 24."); if (isNaN(rainfall) || rainfall 0.01) errors.push("For a round downspout, Width and Depth should be equal (both equal to the diameter).");

if (errors.length > 0) { resultDiv.innerHTML = 'Please fix the following errors:' + errors.map(e => '').join('') + ''; return; }

// --------------------------------------------------------------- // STEP 1 — Effective (projected horizontal) roof drainage area // IPC 1106.1: Use the horizontal projected area, then apply a // pitch adjustment factor F = 1 + (pitch/12 - 0.5) * 0.5 // for pitches > 6:12. For pitches ≤ 6:12 F = 1.0. // (SMACNA / IPC approach) // --------------------------------------------------------------- const projectedArea = roofLength * roofWidth; // ft²

// Pitch factor per IPC Table 1106.1 footnote: // pitch ≤ 6:12 → factor = 1.00 // pitch > 6:12 → factor = 1 + (pitch - 6) / 12 * 0.5 (linear interpolation) let pitchFactor = 1.0; if (pitch > 6) { pitchFactor = 1.0 + ((pitch - 6) / 12) * 0.5; } const effectiveArea = projectedArea * pitchFactor; // ft²

// --------------------------------------------------------------- // STEP 2 — Design flow rate (ft³/min → convert to in²·in/hr units) // Q (ft³/min) = (effectiveArea [ft²] × rainfall [in/hr]) / 96.23 // Derivation: 1 in/hr over 1 ft² = 1/12 ft/hr = 1/720 ft/min // Q = A × (R/720) where R in in/hr, A in ft² // Simplified constant: Q = A × R / 720 // --------------------------------------------------------------- const Q_ft3_min = (effectiveArea * rainfall) / 720; // ft³/min

// --------------------------------------------------------------- // STEP 3 — Downspout cross-sectional area and capacity per unit // IPC 1106.3 / SMACNA: Downspout capacity (ft³/min) is based on // the cross-sectional area using the empirical formula: // Q_ds = 0.278 × A_ds^(5/3) / (n × P^(2/3)) × S^(1/2) // where Manning's equation for full-flow vertical pipe simplifies to: // Q_ds (ft³/min) = (A_ds [in²] × 0.0104) // The widely-used IPC/SMACNA simplified table relationship is: // Q_ds (ft³/min) = 0.0104 × A_ds (in²) // This comes from Manning's n=0.011, slope S=1.0 (vertical), // hydraulic radius R_h = A/P for the cross-section. // // More precisely, Manning's full-pipe vertical downspout: // Q = (1.486/n) × A × R_h^(2/3) × S^(1/2) [ft³/s] // Convert to ft³/min × 60. // For rectangular: R_h = (W×D)/(2(W+D)) [inches → convert to ft] // For circular: R_h = D/4 [inches → convert to ft] // --------------------------------------------------------------- const n_manning = 0.011; // Manning's roughness for sheet metal const S = 1.0; // slope = 1.0 (vertical downspout)

let A_ds_in2, R_h_ft, perimeter_in;

if (dsShape === 'round') { const D_ft = dsWidth / 12; A_ds_in2 = Math.PI * (dsWidth / 2) ** 2; // in² R_h_ft = D_ft / 4; // ft } else { A_ds_in2 = dsWidth * dsDepth; // in² perimeter_in = 2 * (dsWidth + dsDepth); R_h_ft = (A_ds_in2 / perimeter_in) / 12; // convert in to ft }

const A_ds_ft2 = A_ds_in2 / 144; // ft²

// Manning's Q in ft³/s, then convert to ft³/min const Q_ds_ft3_s = (1.486 / n_manning) * A_ds_ft2 * Math.pow(R_h_ft, 2/3) * Math.pow(S, 0.5); const Q_ds_ft3_min = Q_ds_ft3_s * 60; // ft³/min per downspout

// --------------------------------------------------------------- // STEP 4 — Number of downspouts required // --------------------------------------------------------------- const numDownspoutsExact = Q_ft3_min / Q_ds_ft3_min; const numDownspouts = Math.ceil(numDownspoutsExact);

// --------------------------------------------------------------- // STEP 5 — Recommended spacing // Space downspouts evenly along the eave length (roof length). // Maximum spacing per SMACNA: 50 ft; per IPC: no explicit max, // but 40–50 ft is standard practice. // --------------------------------------------------------------- const spacing = roofLength / numDownspouts; // ft between downspouts

// --------------------------------------------------------------- // STEP 6 — Gutter slope check (bonus info) // Recommended gutter slope: 1/16 in per foot (0.52%) minimum, // 1/8 in per foot (1.04%) preferred. // --------------------------------------------------------------- const gutterSlopeMin = (1/16) * roofLength; // inches of drop over full length const gutterSlopePref = (1/8) * roofLength;

// --------------------------------------------------------------- // Format results // --------------------------------------------------------------- const pitchAngleDeg = Math.atan(pitch / 12) * (180 / Math.PI);

resultDiv.innerHTML = ` ### Results

Projected Roof Area ${projectedArea.toFixed(1)} ft²

Pitch Factor ${pitchFactor.toFixed(3)} (pitch ${pitch}:12 = ${pitchAngleDeg.toFixed(1)}°)

Effective Drainage Area ${effectiveArea.toFixed(1)} ft²

Design Flow Rate (total) ${Q_ft3_min.toFixed(3)} ft³/min

Downspout Cross-Section ${A_ds_in2.toFixed(2)} in² (${dsShape})

Capacity per Downspout ${Q_ds_ft3_min.toFixed(3)} ft³/min

✔ Downspouts Required ${numDownspouts}

✔ Recommended Spacing ${spacing.toFixed(1)} ft on center

Gutter Drop (min / preferred) ${gutterSlopeMin.toFixed(2)} in / ${gutterSlopePref.toFixed(2)} in over ${roofLength} ft

${spacing > 50 ? '⚠ Spacing exceeds 50 ft. Consider adding more downspouts or using larger sizes per SMACNA guidelines.

' : ''} ${numDownspouts === 1 ? 'ℹ A minimum of 2 downspouts is recommended for redundancy even if 1 is sufficient by calculation.

' : ''} `; }

#### Formulas Used

1. Effective Drainage Area (IPC §1106.1): Aeff = L × W × Fpitch where Fpitch = 1.0 for pitch ≤ 6:12; Fpitch = 1 + (pitch − 6)/12 × 0.5 for pitch > 6:12

2. Design Flow Rate: Qtotal = Aeff × R / 720 where R = rainfall intensity (in/hr), result in ft³/min

3. Downspout Capacity — Manning's Equation (full-flow vertical pipe): Qds = (1.486 / n) × Ads × Rh2/3 × S1/2 × 60 n = 0.011 (sheet metal), S = 1.0 (vertical), Rh = hydraulic radius Rectangular: Rh = (W × D) / [2(W + D)] Circular: Rh = D / 4

4. Number of Downspouts: N = ⌈ Qtotal / Qds ⌉ (ceiling function)

5. Spacing: Spacing = Roof Length / N

#### Assumptions & References

More Calculators

Read Next

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References