The distance along the stream you measured (in feet).
The average width of the stream section (in feet).
The average depth of the water (in feet).
Time it took for the float object to travel the length (in seconds).
Rocky / Rough (0.8)
Smooth / Mud / Sand (0.9)
Average / Mixed (0.85)
Concrete Channel (1.0)
Friction correction factor (a float travels faster than the average water column).
Please enter valid positive numbers for all fields.
Cubic Feet Per Second (CFS)
0.00
Gallons Per Minute (GPM)
0.00
Surface Velocity
0.00 ft/s
function calculateStreamFlow() {
var lengthInput = document.getElementById('streamLength');
var widthInput = document.getElementById('avgWidth');
var depthInput = document.getElementById('avgDepth');
var timeInput = document.getElementById('travelTime');
var bottomSelect = document.getElementById('bottomType');
var resultsBox = document.getElementById('resultsBox');
var errorMsg = document.getElementById('errorMsg');
var resCFS = document.getElementById('resCFS');
var resGPM = document.getElementById('resGPM');
var resVelocity = document.getElementById('resVelocity');
var L = parseFloat(lengthInput.value);
var W = parseFloat(widthInput.value);
var D = parseFloat(depthInput.value);
var T = parseFloat(timeInput.value);
var C = parseFloat(bottomSelect.value);
// reset display
errorMsg.style.display = 'none';
resultsBox.style.display = 'none';
// Validation
if (isNaN(L) || isNaN(W) || isNaN(D) || isNaN(T) || isNaN(C)) {
errorMsg.style.display = 'block';
errorMsg.innerHTML = "Please fill in all fields.";
return;
}
if (L <= 0 || W <= 0 || D <= 0 || T <= 0) {
errorMsg.style.display = 'block';
errorMsg.innerHTML = "Values must be greater than zero.";
return;
}
// Calculations
// 1. Cross-sectional Area (A) = Width * Depth
var area = W * D;
// 2. Surface Velocity (V_surf) = Length / Time
var surfaceVelocity = L / T;
// 3. Average Velocity (V_avg) = Surface Velocity * Correction Factor
var avgVelocity = surfaceVelocity * C;
// 4. Flow Rate (Q) = Area * Average Velocity
var flowCFS = area * avgVelocity;
// 5. Conversion: 1 Cubic Foot = 7.48052 Gallons.
// CFS * 60 seconds = Cubic Feet Per Minute.
// Cubic Feet Per Minute * 7.48052 = GPM.
// Shortcut: 1 CFS ≈ 448.831 GPM
var flowGPM = flowCFS * 448.831;
// Display Results
resCFS.innerHTML = flowCFS.toFixed(2) + " ft³/s";
resGPM.innerHTML = Math.round(flowGPM).toLocaleString() + " gal/min";
resVelocity.innerHTML = surfaceVelocity.toFixed(2) + " ft/s";
resultsBox.style.display = 'block';
}
How to Calculate Stream Flow Rate Using the Float Method
Understanding how much water is moving through a stream or river is essential for environmental monitoring, irrigation planning, micro-hydro power assessment, and flood control. While professional hydrologists use expensive flow meters, you can obtain a reasonably accurate estimate using the Float Method.
The calculator above streamlines the math required for this method. Below is a detailed breakdown of how it works and how to gather your data correctly.
The Formula Explained
Flow rate ($Q$) is essentially the volume of water passing a point per unit of time. The basic formula used in hydrology is:
Q = A × V
Where: Q = Flow Rate (Cubic Feet per Second) A = Cross-sectional Area of the stream (Width × Depth) V = Average Velocity of the water
However, water moves faster at the surface than it does at the bottom due to friction against the stream bed. Therefore, simply measuring how fast a stick floats down the river gives you the surface velocity, not the average velocity. To correct this, we apply a coefficient (usually 0.8 to 0.9).
Step-by-Step Data Collection
1. Measure a Section (L)
Find a section of the stream that is relatively straight and uniform in width. Avoid areas with large boulders, waterfalls, or back-eddies. Measure a specific length along the bank, for example, 20 feet or 10 meters. Mark the start and end points clearly.
2. Measure Average Width (W)
Measure the width of the stream at several points along your chosen section and calculate the average. If the stream is 6 feet wide at the start and 8 feet wide at the end, use 7 feet as your average width.
3. Measure Average Depth (D)
This is critical for accuracy. Use a ruler or stick to measure the depth at intervals across the width of the stream (e.g., every 1 foot). Calculate the average of these depth measurements. Do not just measure the deepest point, as this will result in a gross overestimation of flow.
4. Measure Time (T)
Throw a buoyant object (an orange, a half-filled water bottle, or a stick) into the middle of the stream upstream of your start point. Start your stopwatch when the object passes the start mark and stop it when it passes the end mark. Repeat this 3-5 times and use the average time for better accuracy.
5. Apply the Correction Factor (C)
The calculator applies a correction factor to account for bottom friction:
Rocky/Rough Bottom (0.8): Use this for mountain streams or beds with many stones. Friction is high, slowing the lower water significantly.
Smooth/Mud Bottom (0.9): Use this for concrete channels or smooth sandy rivers where friction is lower.
Interpreting Your Results
CFS (Cubic Feet Per Second): This is the standard unit for river flow in the United States. One cubic foot is approximately the size of a basketball.
GPM (Gallons Per Minute): This unit is more practical for irrigation or household water supply. For context, a standard garden hose flows at about 5 to 10 GPM. If your stream calculates to 450 GPM, you have a substantial water source (approx. 1 CFS).
Why Is This Important?
Knowing your stream flow rate helps in determining if a water source is viable for micro-hydro turbines (which require specific flow and head pressure), estimating water availability for crop irrigation during dry seasons, and monitoring environmental changes in your local watershed.