Gutter Flow Capacity Calculator
This gutter flow capacity calculator estimates the peak rainwater arriving from a roof and the gutter profile needed to carry it.
Run — free
Enter the horizontal catchment area and local design rainfall intensity, then refine the runoff coefficient, safety factor, gutter slope, and hydraulic roughness if your project requires it. The result includes design flow in liters per second, the calculated minimum profile width, a rounded-up standard nominal size, and its estimated carrying margin. It is a planning estimate for preliminary sizing, not a substitute for local drainage rules or a complete roof drainage design.
Turn roof area and rainfall intensity into design flow
The first calculation uses the rational runoff relationship: catchment area multiplied by rainfall intensity and a runoff coefficient. The calculator converts square feet to square meters and inches per hour to millimeters per hour when needed, so both input systems lead to the same hydraulic calculation. For a roof, the relevant catchment is normally the horizontal projected area draining to the gutter segment, not the sloping surface area of the roofing material. Divide a complex roof into drainage zones when valleys, hips, parapets, or separate downpipes send water in different directions. The runoff coefficient represents the fraction of rainfall that reaches the gutter during the design event. Smooth, impervious roofs are commonly modeled near one, while a lower value may suit a surface with meaningful retention. The design factor then increases peak runoff to provide an explicit allowance for uncertainty, wind-driven concentration, minor obstruction, and rounding. The reported peak runoff excludes that allowance; the design flow includes it and is the target used for gutter sizing. Choose rainfall intensity from an authoritative local source and for the return period required by the applicable code, because annual rainfall totals do not describe short cloudbursts that control gutter capacity.
How the gutter profile is sized hydraulically
After calculating design flow, the tool applies Manning's open-channel equation to the selected gutter geometry. A half-round profile is treated as a semicircular channel flowing to its top edge. A rectangular profile is evaluated at eighty percent of its total depth, preserving twenty percent freeboard; its width-to-depth ratio determines the profile proportions. The solver repeatedly tests profile widths until it finds the smallest width whose modeled discharge reaches the design flow. Longitudinal slope matters because a steeper fall moves water faster, while the Manning roughness coefficient represents resistance from the gutter material and surface condition. A value appropriate to smooth metal or plastic should not be assumed for a rough, aged, jointed, or debris-prone channel. The calculated minimum is then rounded upward to one of the built-in nominal widths: 75, 100, 125, 150, 180, 200, 250, or 300 millimeters. These are comparison steps, not a claim that every profile and size is sold in every market. For rectangular gutters, manufacturers may quote top width, base width, depth, and usable area differently, so compare the returned dimensions and capacity with the supplier's tested data rather than matching a product name alone.
Use the result as one part of a complete drainage design
A gutter can carry the calculated flow only if water can enter it and leave through outlets and downpipes at a similar rate. Outlet restriction, downpipe spacing, bends, leaf guards, seams, local sagging, and water approaching from a concentrated roof valley can govern performance before the uniform gutter channel reaches its theoretical capacity. Use the result to screen a profile, then check outlet and downpipe capacity, maximum spacing, overflow routes, freeboard, bracket spacing, and placement against local requirements. The capacity margin compares the recommended nominal profile with the calculated design flow under the stated assumptions; it is not a universal safety certification. If no built-in standard size is sufficient, the calculator returns the largest comparison size and marks standard size sufficient as false. That warning means the system should be divided among more outlets, redesigned with another profile, or checked by a qualified drainage professional rather than merely accepting the displayed size. Snow, ice, hail, siphonic systems, internal box gutters, and roofs where overflow can enter a building need project-specific engineering. Keep the input values and assumptions with the design record so future reviewers can see which storm intensity, runoff coefficient, slope, roughness, and safety allowance produced the recommendation.
What you can do with it
Plan a residential gutter replacement
Estimate whether a common half-round size can carry runoff from each roof drainage zone before comparing local products.
Check a workshop or extension
Convert the roof catchment and local storm intensity into a design flow for preliminary rectangular gutter selection.
Compare slope and material assumptions
Test how gutter fall and Manning roughness change the minimum hydraulic profile while keeping the same roof and storm.
FAQ
What roof area should I enter?
Enter the horizontal projected area that drains to the gutter segment being sized. Calculate separate zones when roof sections discharge to different gutters or outlets.
Where do I find rainfall intensity?
Use the short-duration design rainfall intensity published by the relevant weather or building authority for your location and required return period. Do not use an annual rainfall total.
Why is there a runoff coefficient?
It represents the share of rainfall that becomes immediate runoff. Impervious roof surfaces are usually modeled close to one, subject to local design guidance.
Does the recommendation size the downpipes too?
No. It estimates gutter channel conveyance only. Outlets, downpipes, bends, spacing, overflow, and concentrated valley flows must be checked separately.
What does standard size sufficient mean?
True means one of the built-in nominal comparison widths meets the modeled flow. False means even the largest comparison width does not, so the drainage arrangement needs redesign or specialist checking.
How much does the API request cost?
Each API request costs $0.002. The browser version uses the same deterministic calculation.
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/home/gutter-capacity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"roof_area":180,"rainfall_intensity":75}'const res = await fetch("https://api.kit.forhosting.com/home/gutter-capacity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"roof_area": 180,
"rainfall_intensity": 75
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/gutter-capacity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"roof_area": 180,
"rainfall_intensity": 75
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/gutter-capacity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"roof_area":180,"rainfall_intensity":75}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"roof_area":180,"rainfall_intensity":75}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/gutter-capacity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"roof_area": 180,
"rainfall_intensity": 75
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.gutter_capacity",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |