Hydraulic Radius of Channel Calculator
The hydraulic radius of a channel is the flow cross-sectional area divided by the wetted perimeter.
Run — free
This calculator applies that relationship directly and returns the radius in the linear unit implied by your measurements. Enter area in squared units and the portion of the channel boundary touching the liquid in matching linear units. The calculation is deterministic, works for open or closed conduits, and rejects a zero or negative wetted perimeter because division would not describe a valid hydraulic section.
Identify the flowing cross section correctly
Hydraulic radius begins with the area occupied by flowing liquid, not necessarily the full geometric area of the channel. In a partly full circular pipe, for example, only the filled segment belongs in flow_area. In a rectangular open channel, multiply the water depth by the channel width when the sides and bed are regular. Use squared units consistently: square metres with metres, square feet with feet, or square centimetres with centimetres. The calculator does not convert units because the ratio already reduces squared length divided by length to a linear result. A flow area of zero is accepted and produces a hydraulic radius of zero. A negative area is rejected because physical cross-sectional area cannot be negative. If a field survey or model reports an effective flow area, use that value directly rather than reconstructing a nominal channel shape. This keeps the result tied to the actual hydraulic section being analysed and avoids silently including dry space above the water surface.
Measure only the wetted perimeter
The wetted perimeter is the length of solid boundary in direct contact with the liquid across the selected cross section. For an open rectangular channel, it is the bed width plus twice the water depth; the free water surface is excluded because it does not touch the channel lining. For a full circular pipe, the entire inner circumference is wetted. Irregular natural channels may require a surveyed profile, with the submerged boundary approximated by a sequence of short segments. Add those submerged segment lengths and omit any portion above the waterline. The value must use the linear unit corresponding to the area unit. The calculator deliberately errors when wetted_perimeter is zero or negative. A zero denominator makes the ratio undefined, while a negative perimeter has no physical meaning. This validation also catches common data-entry problems early, such as leaving the field blank in a system that converts missing values to zero or applying a sign convention intended for coordinates rather than lengths.
Interpret the hydraulic radius result
The calculation uses R = A/P, where R is hydraulic radius, A is flow cross-sectional area, and P is wetted perimeter. If area is supplied in square metres and perimeter in metres, the result is in metres; square feet divided by feet produces feet. Hydraulic radius is not generally the same as water depth or a literal geometric radius. It describes how much flowing area is available relative to boundary contact, which makes it useful in resistance and open-channel flow relationships such as the Manning equation. A larger value indicates more area per unit of wetted boundary, all else equal. Compare values only when the underlying geometry, roughness assumptions, and units are compatible. For a full circular pipe, hydraulic radius equals one quarter of the pipe diameter, which is a useful independent check. For an open rectangular channel, changing water depth affects both area and wetted perimeter, so the ratio should be recalculated rather than scaled from an earlier result. Retain the input values returned with the result to make reviews and audit trails unambiguous.
What you can do with it
Prepare an open-channel flow calculation
Compute hydraulic radius before applying a resistance equation to a rectangular, trapezoidal, or surveyed channel section.
Check a full-pipe geometry
Confirm that the area-to-circumference ratio for a full circular conduit agrees with one quarter of its diameter.
Compare proposed channel sections
Evaluate how alternative cross sections change the ratio of flow area to boundary contact while keeping units consistent.
FAQ
What formula does the calculator use?
It uses hydraulic radius = flow cross-sectional area ÷ wetted perimeter, commonly written as R = A/P.
Does the free water surface count in the wetted perimeter?
No. Include only the solid channel or conduit boundary that is in contact with the liquid.
What unit is the result in?
The result is a length unit. Square metres divided by metres gives metres, while square feet divided by feet gives feet.
Why is a zero wetted perimeter rejected?
It would require division by zero and cannot represent a valid wetted channel boundary. Negative perimeter values are rejected for the same physical reason.
What does an API calculation cost?
Each API request costs $0.002. The same deterministic calculation can also run free in the browser.
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/earth/hydraulic-radius \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"flow_area":12.5,"wetted_perimeter":8.2}'const res = await fetch("https://api.kit.forhosting.com/earth/hydraulic-radius", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"flow_area": 12.5,
"wetted_perimeter": 8.2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/hydraulic-radius",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"flow_area": 12.5,
"wetted_perimeter": 8.2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/hydraulic-radius", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"flow_area":12.5,"wetted_perimeter":8.2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"flow_area":12.5,"wetted_perimeter":8.2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/hydraulic-radius", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"flow_area": 12.5,
"wetted_perimeter": 8.2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.hydraulic_radius",
"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. |