Skip to main content

Roof Drainage and Gutter Size Calculator

ANALife Services AuthorityNational Calculator Authority›Roof Drainage and Gutter Size 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; } }

Roof Drainage and Gutter Size Calculator

Calculate the required gutter size, downspout count, and drainage flow rate for your roof based on roof area, rainfall intensity, and gutter slope. Based on AS/NZS 3500.3 and standard hydraulic design principles.

Roof Length (m)

Roof Width / Horizontal Span (m)

Roof Pitch (degrees)

Design Rainfall Intensity (mm/hr)

Typical: 75–150 mm/hr for 1-in-20-year storm. Check your local BOM data.

Gutter Slope (mm per metre)

Recommended minimum: 3 mm/m (1:333 fall).

Gutter Cross-Section Shape

Half-Round Quad (Ogee) Box / Square

Gutter Width / Diameter (mm)

Common sizes: 75, 90, 100, 115, 125, 150 mm.

Downspout Diameter (mm)

Common sizes: 65, 75, 90, 100 mm.

Calculate

function rooCalc() { var resultDiv = document.getElementById('roo-result');

// --- Inputs --- var roofLength = parseFloat(document.getElementById('roo-roof-length').value); var roofWidth = parseFloat(document.getElementById('roo-roof-width').value); var pitchDeg = parseFloat(document.getElementById('roo-roof-pitch').value); var rainfall = parseFloat(document.getElementById('roo-rainfall').value); var gutterSlope = parseFloat(document.getElementById('roo-gutter-slope').value); var gutterShape = document.getElementById('roo-gutter-shape').value; var gutterWidth = parseFloat(document.getElementById('roo-gutter-width').value); var downspoutDia = parseFloat(document.getElementById('roo-downspout-dia').value);

// --- Validation --- var errors = []; if (isNaN(roofLength) || roofLength 75) errors.push("Roof Pitch must be between 0 and 75 degrees."); if (isNaN(rainfall) || rainfall 0) { resultDiv.innerHTML = 'Please fix the following:' + errors.map(function(e){ return ''; }).join('') + ''; return; }

// --------------------------------------------------------------- // STEP 1: Effective Roof Area (plan area × pitch factor) // Pitch factor = 1 / cos(pitch) — converts plan area to actual // sloped surface area for drainage load calculation. // AS/NZS 3500.3 uses the PLAN (horizontal) area for flow calcs, // but applies a pitch multiplier for pitches > 10°. // --------------------------------------------------------------- var pitchRad = pitchDeg * Math.PI / 180; var pitchFactor = (pitchDeg > 10) ? (1 / Math.cos(pitchRad)) : 1.0; var planArea = roofLength * roofWidth; // m² var effectiveArea = planArea * pitchFactor; // m²

// --------------------------------------------------------------- // STEP 2: Design Flow Rate (Q) — Rational Method // Q (L/s) = (I × A) / 3 600 000 × 1 000 // = I (mm/hr) × A (m²) / 3 600 // where I = rainfall intensity (mm/hr), A = effective area (m²) // --------------------------------------------------------------- var Q_Ls = (rainfall * effectiveArea) / 3600; // litres per second

// --------------------------------------------------------------- // STEP 3: Gutter Flow Capacity — Manning's Equation // Q = (1/n) × A_cross × R_h^(2/3) × S^(1/2) // // Assumptions: // • Gutter flows at 85% full depth (freeboard allowance) // • Manning's n = 0.011 (smooth steel/aluminium/PVC) // • S = gutter slope (m/m) // • Half-round: A = π/8 × d², P = π/2 × d (half circle) // • Quad (Ogee): approximated as 80% of half-round capacity // • Box: A = w × 0.85w (depth = width for square), P = w + 2×0.85w // --------------------------------------------------------------- var n = 0.011; var S = gutterSlope / 1000; // convert mm/m → m/m var d = gutterWidth / 1000; // convert mm → m

var A_cross, P_wet, R_h, Q_gutter_m3s, shapeFactor;

if (gutterShape === 'half-round') { // Half-round at 85% full → effective depth = 0.85 × r = 0.85 × d/2 // For a circular segment at fill ratio f=0.85: // theta = 2 × arccos(1 - 2f) ... central angle var f = 0.85; var theta = 2 * Math.acos(1 - 2 * f); // radians (full circle = 2π) var r = d / 2; A_cross = (r * r / 2) * (theta - Math.sin(theta)); P_wet = r * theta; shapeFactor = 1.0; } else if (gutterShape === 'quad') { // Quad approximated as 80% of equivalent half-round capacity var f2 = 0.85; var theta2 = 2 * Math.acos(1 - 2 * f2); var r2 = d / 2; A_cross = 0.80 * (r2 * r2 / 2) * (theta2 - Math.sin(theta2)); P_wet = 0.80 * r2 * theta2; shapeFactor = 0.80; } else { // Box gutter: width = d, depth assumed = d (square section), fill 85% var depth = d * 0.85; A_cross = d * depth; P_wet = d + 2 * depth; shapeFactor = 1.0; }

R_h = A_cross / P_wet; // hydraulic radius (m) Q_gutter_m3s = (1 / n) * A_cross * Math.pow(R_h, 2/3) * Math.pow(S, 0.5); var Q_gutter_Ls = Q_gutter_m3s * 1000; // L/s

// --------------------------------------------------------------- // STEP 4: Downspout (outlet) capacity — Orifice / pipe flow // Using free-discharge pipe flow: // Q = Cd × A_pipe × sqrt(2 × g × h) // where Cd = 0.62, h = effective head = 0.5 × downspout diameter // (conservative assumption for short vertical drop) // --------------------------------------------------------------- var Cd = 0.62; var g = 9.81; var r_ds = (downspoutDia / 1000) / 2; var A_ds = Math.PI * r_ds * r_ds; var h_eff = (downspoutDia / 1000) * 0.5; // effective head (m) var Q_ds_m3s = Cd * A_ds * Math.sqrt(2 * g * h_eff); var Q_ds_Ls = Q_ds_m3s * 1000; // L/s per downspout

// --------------------------------------------------------------- // STEP 5: Number of downspouts required // --------------------------------------------------------------- var numDownspouts = Math.ceil(Q_Ls / Q_ds_Ls);

// --------------------------------------------------------------- // STEP 6: Gutter adequacy check // --------------------------------------------------------------- var gutterAdequate = Q_gutter_Ls >= Q_Ls; var gutterRatio = (Q_Ls / Q_gutter_Ls) * 100;

// --------------------------------------------------------------- // STEP 7: Recommended minimum gutter size (half-round, same slope) // Solve for d: Q = (1/n) × A(d) × R(d)^(2/3) × S^0.5 = Q_Ls/1000 // Iterate from 75 mm to 300 mm in 5 mm steps // --------------------------------------------------------------- var recGutterMm = null; for (var testMm = 75; testMm = Q_Ls) { recGutterMm = testMm; break; } } if (recGutterMm === null) recGutterMm = ">300 (consult engineer)";

// --------------------------------------------------------------- // STEP 8: Recommended minimum downspout size // --------------------------------------------------------------- var recDsMm = null; var dsPerRun = Math.max(1, numDownspouts); var qPerDs = Q_Ls / dsPerRun; for (var tds = 50; tds = qPerDs) { recDsMm = tds; break; } } if (recDsMm === null) recDsMm = ">200 (consult engineer)";

// --------------------------------------------------------------- // OUTPUT // --------------------------------------------------------------- var statusColor = gutterAdequate ? '#2e7d32' : '#c62828'; var statusText = gutterAdequate ? '✔ Gutter is ADEQUATE' : '✘ Gutter is UNDERSIZED'; var statusBg = gutterAdequate ? '#e8f5e9' : '#ffebee';

resultDiv.innerHTML = '### Results ' +

'#### Roof & Rainfall ' + '' + 'Plan Roof Area' + planArea.toFixed(1) + ' m²' + 'Pitch Factor (1/cos θ)' + pitchFactor.toFixed(3) + '' + 'Effective Drainage Area' + effectiveArea.toFixed(1) + ' m²' + 'Design Rainfall Intensity' + rainfall.toFixed(0) + ' mm/hr' + 'Design Flow Rate (Q)' + Q_Ls.toFixed(2) + ' L/s' + '' +

'#### Gutter Hydraulics (Manning's Equation) ' + '' + 'Gutter Shape' + gutterShape + '' + 'Gutter Width/Diameter' + gutterWidth.toFixed(0) + ' mm' + 'Gutter Slope' + gutterSlope.toFixed(1) + ' mm/m (1:' + Math.round(1000/gutterSlope) + ')' + 'Manning's n0.011' + 'Flow Depth (85% full)' + (gutterWidth * 0.85 / 2).toFixed(1) + ' mm' + 'Cross-sectional Flow Area' + (A_cross * 1e6).toFixed(0) + ' mm²' + 'Hydraulic Radius' + (R_h * 1000).toFixed(1) + ' mm' + 'Gutter Flow Capacity' + Q_gutter_Ls.toFixed(2) + ' L/s' + 'Capacity Used' + gutterRatio.toFixed(1) + '%' + '' +

'' + statusText + (gutterAdequate ? '' : ' — Minimum recommended size: ' + recGutterMm + ' mm half-round') + '' +

'#### Downspout (Outlet) Sizing ' + '' + 'Downspout Diameter' + downspoutDia.toFixed(0) + ' mm' + 'Discharge Coefficient (Cd)0.62' + 'Effective Head' + (downspoutDia * 0.5).toFixed(0) + ' mm' + 'Capacity per Downspout' + Q_ds_Ls.toFixed(2) + ' L/s' + 'Downspouts Required' + numDownspouts + '' + 'Recommended Min. Downspout Size' + recDsMm + ' mm' + '' +

'#### Summary Recommendations ' + '' + 'Minimum Gutter Size (half-round)' + recGutterMm + ' mm' + 'Minimum Downspout Size' + recDsMm + ' mm' + 'Number of Downspouts' + numDownspouts + '' + 'Total Drainage Capacity' + (Q_ds_Ls * numDownspouts).toFixed(2) + ' L/s' + ''; }

#### Formulas Used

1. Effective Roof Area: Aeff = L × W × (1 / cos θ)  [for pitch > 10°] where L = roof length (m), W = roof width (m), θ = pitch angle.

2. Design Flow Rate — Rational Method: Q = (I × Aeff) / 3 600  [L/s] where I = rainfall intensity (mm/hr), Aeff = effective area (m²).

3. Gutter Capacity — Manning's Equation: Q = (1/n) × Ac × Rh2/3 × S1/2 where n = 0.011 (smooth metal/PVC), Ac = cross-sectional flow area (m²), Rh = Ac / Pwet = hydraulic radius (m), S = slope (m/m). Gutter assumed to flow at 85% full depth (freeboard allowance). Half-round segment: Ac = (r²/2)(θ − sin θ), Pwet = rθ, θ = 2 arccos(1 − 2f), f = 0.85.

4. Downspout Capacity — Orifice Flow: Qds = Cd × Apipe × √(2gh) where Cd = 0.62, Apipe = π r², h = 0.5 × diameter (effective head).

5. Number of Downspouts: N = ⌈ Qdesign / Qdownspout ⌉  (rounded up)

#### Assumptions & References

More Calculators

References