Irrigation run time calculator
The irrigation run time calculator turns a target water depth, a measured system flow rate, and the area being watered into a practical operating duration.
Run — free
It first converts every input to compatible metric units, calculates the volume needed to cover the area to the requested depth, and divides that volume by the total flow. The result includes minutes, hours, litres, and cubic metres, making it useful for field schedules, controller setup, audit records, and repeatable calculations in software. It is deterministic, transparent, and designed for systems whose total delivered flow is already known.
Translate a water-depth target into required volume
Irrigation recommendations are often expressed as a depth because depth remains meaningful across fields and planting beds of different sizes. A target of twenty-five millimetres means that the area should receive a layer of water twenty-five millimetres deep if it were spread perfectly evenly. Runtime cannot be found from depth alone, however, because a larger area needs proportionally more water. This calculator converts the selected depth to metres and the selected area to square metres, then multiplies them to obtain cubic metres. It also reports litres, using one cubic metre equal to one thousand litres. For example, one millimetre over one square metre requires exactly one litre, a useful field check on any metric result. Supported depth units are millimetres, centimetres, and inches; supported area units are square metres, square feet, acres, and hectares. Use the actual area served by the irrigation zone, not the entire property, and use the net depth you intend to apply during this run. The computed volume represents water delivered by the system. It does not automatically adjust for runoff, wind drift, evaporation, distribution uniformity, or application efficiency, so incorporate those effects into the target depth when an agronomic plan requires them.
Divide the required volume by measured system flow
Once the required volume is known, operating time follows from a direct rate calculation: time equals volume divided by flow. The flow input must be the total flow delivered to the same area used in the calculation. For a sprinkler zone, add the measured or specified discharge of all sprinklers that operate together. For drip irrigation, add the discharge of every active emitter, or multiply emitter discharge by the number of active emitters before entering the value. Do not enter a single nozzle or emitter rate unless only one outlet waters the stated area. The calculator accepts litres per minute, litres per second, cubic metres per hour, and U.S. gallons per minute, converts the chosen rate to litres per minute, and returns runtime in minutes and hours. All three numeric inputs must be finite and greater than zero. Zero flow cannot produce a finite runtime, and negative depths or areas have no physical meaning, so those requests return an invalid-input error. Results are rounded consistently to twelve decimal places for stable API and browser output. Extremely large values that overflow safe finite arithmetic are also rejected rather than returning a misleading infinity.
Use the result in schedules and verify field performance
The calculated duration is a hydraulic planning value, not a guarantee that every part of a field receives identical water. Use it to set a controller, prepare an irrigation work order, compare alternative zone flows, or generate schedules programmatically. Then verify performance with catch cans, flow meters, soil-moisture observations, or another method appropriate to the crop and system. If a long runtime causes ponding or runoff, divide the total duration into shorter cycle-and-soak periods; the sum of the active watering periods should equal the calculated runtime, while soak pauses are not counted as flowing time. Pressure variation, clogged emitters, leaks, overlapping sprinkler patterns, slope, and changing pump output can make actual application differ from the ideal volume calculation. Recalculate whenever the active area, target depth, nozzle set, emitter count, or measured flow changes. Each successful API request is priced at $0.002, while the on-page browser calculator can run the same pure calculation locally. The structured response echoes all inputs and units and includes required volume, runtime, and the formula description, which helps applications retain an auditable record of how a controller duration was derived.
What you can do with it
Set a sprinkler-zone controller
Convert a planned application depth and the combined zone flow into the number of active watering minutes to program.
Schedule drip irrigation
Use total emitter flow and bed area to estimate how long a drip zone must operate to deliver the target depth.
Automate field water plans
Generate consistent runtime and volume records for multiple zones after agronomic software determines each required water depth.
FAQ
What formula does the irrigation run time calculator use?
It calculates required volume as water depth multiplied by irrigated area after unit conversion, then divides that volume by the total system flow rate.
Should I enter one emitter's flow or the whole zone flow?
Enter the total flow of every outlet operating over the stated area. A single-emitter rate is correct only when that emitter is the complete system for the area.
Does the result account for irrigation efficiency?
No. It is a volume-and-flow calculation. If your target is a net crop requirement, adjust the submitted depth for application efficiency and expected losses before calculating.
Can I split the runtime into cycle-and-soak periods?
Yes. Divide the returned active runtime into shorter watering cycles to limit runoff. The cycles should add up to the calculated runtime; soak pauses are additional elapsed time.
How much does an API calculation cost?
Each successful API request costs $0.002. Invalid requests are rejected, and the browser calculator can perform the same deterministic calculation locally.
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/bio/irrigation-time \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"water_depth":25,"flow_rate":40,"irrigated_area":800}'const res = await fetch("https://api.kit.forhosting.com/bio/irrigation-time", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"water_depth": 25,
"flow_rate": 40,
"irrigated_area": 800
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/bio/irrigation-time",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"water_depth": 25,
"flow_rate": 40,
"irrigated_area": 800
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/bio/irrigation-time", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"water_depth":25,"flow_rate":40,"irrigated_area":800}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"water_depth":25,"flow_rate":40,"irrigated_area":800}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/bio/irrigation-time", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"water_depth": 25,
"flow_rate": 40,
"irrigated_area": 800
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "bio.irrigation_time",
"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. |