Pipe Size Calculator Flow Rate

.psc-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 8px; } .psc-calculator-box { background: #ffffff; padding: 30px; border-radius: 8px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); margin-bottom: 40px; } .psc-form-group { margin-bottom: 20px; } .psc-label { display: block; font-weight: 600; margin-bottom: 8px; color: #333; } .psc-input { width: 100%; padding: 12px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .psc-input:focus { border-color: #0073aa; outline: none; } .psc-btn { background-color: #0073aa; color: white; border: none; padding: 14px 20px; font-size: 16px; font-weight: bold; border-radius: 4px; cursor: pointer; width: 100%; transition: background-color 0.2s; } .psc-btn:hover { background-color: #005177; } .psc-results { margin-top: 25px; padding: 20px; background-color: #f0f7fb; border-left: 5px solid #0073aa; display: none; } .psc-result-item { margin-bottom: 10px; font-size: 18px; color: #444; } .psc-result-value { font-weight: bold; color: #0073aa; font-size: 22px; } .psc-content { line-height: 1.6; color: #444; } .psc-content h2 { color: #2c3e50; margin-top: 30px; border-bottom: 2px solid #eee; padding-bottom: 10px; } .psc-content h3 { color: #34495e; margin-top: 20px; } .psc-content ul { margin-bottom: 20px; } .psc-content li { margin-bottom: 8px; } .psc-radio-group { display: flex; gap: 20px; margin-bottom: 20px; } .psc-radio-label { display: flex; align-items: center; cursor: pointer; } .psc-radio-label input { margin-right: 8px; }

Pipe Size Calculator (Flow Rate)

Calculate required pipe diameter based on flow rate and velocity.

*Recommended: 2-5 ft/s for suction, 5-10 ft/s for discharge.
Minimum Inner Diameter:
Cross-Sectional Area:
Note: This is the exact calculated internal diameter. Select the next standard nominal pipe size up.

How to Calculate Pipe Size from Flow Rate

Correctly sizing a pipe is a critical step in designing fluid systems, whether for residential plumbing, industrial process piping, or irrigation. The relationship between pipe size, flow rate, and fluid velocity is governed by the continuity equation.

The fundamental formula used in this calculator is:

Q = A × v

  • Q = Volumetric Flow Rate
  • A = Cross-Sectional Area of the pipe
  • v = Fluid Velocity

Understanding the Variables

To find the required pipe size (Diameter), we rearrange the formula to solve for Area, and then for Diameter:

1. Flow Rate (Q): This is the volume of fluid moving through the pipe per unit of time. In the US, this is commonly measured in Gallons Per Minute (GPM). In metric systems, it is often Cubic Meters per Hour (m³/h).

2. Velocity (v): This is the speed at which the fluid travels inside the pipe. Controlling velocity is essential for system health:

  • Too High: Causes noise, pipe erosion, water hammer, and high pressure drop (energy loss).
  • Too Low: Allows sediment to settle and requires unnecessarily large (and expensive) pipes.

Recommended Velocities

While specific applications vary, general engineering guidelines suggest:

  • Water Suction Lines: 2 to 5 ft/s (0.6 to 1.5 m/s)
  • Water Discharge/Pump Lines: 5 to 10 ft/s (1.5 to 3.0 m/s)
  • General Water Service: 3 to 8 ft/s (1.0 to 2.5 m/s)

The Calculation Formula

When using Imperial units (GPM and ft/s), the derived formula for the Internal Diameter (in inches) is:

Diameter (inches) = √ [ (0.4085 × Flow Rate GPM) / Velocity ft/s ]

This calculator performs this math instantly to help you determine the minimum required internal diameter (ID) for your specific flow requirements.

function toggleUnits() { var unitSystem = document.querySelector('input[name="unitSystem"]:checked').value; var labelFlow = document.getElementById("labelFlowRate"); var labelVel = document.getElementById("labelVelocity"); var inputFlow = document.getElementById("flowRate"); var inputVel = document.getElementById("fluidVelocity"); if (unitSystem === "imperial") { labelFlow.innerText = "Flow Rate (Gallons Per Minute – GPM)"; labelVel.innerText = "Fluid Velocity (Feet Per Second – ft/s)"; inputFlow.placeholder = "e.g., 100"; inputVel.placeholder = "e.g., 5"; } else { labelFlow.innerText = "Flow Rate (Cubic Meters per Hour – m³/h)"; labelVel.innerText = "Fluid Velocity (Meters Per Second – m/s)"; inputFlow.placeholder = "e.g., 25"; inputVel.placeholder = "e.g., 1.5"; } // Hide previous results to avoid confusion document.getElementById("pscResult").style.display = "none"; } function calculatePipeSize() { // 1. Get Inputs var flowRate = parseFloat(document.getElementById("flowRate").value); var velocity = parseFloat(document.getElementById("fluidVelocity").value); var unitSystem = document.querySelector('input[name="unitSystem"]:checked').value; // 2. Validation if (isNaN(flowRate) || isNaN(velocity) || flowRate <= 0 || velocity <= 0) { alert("Please enter valid positive numbers for Flow Rate and Velocity."); return; } var diameter = 0; var area = 0; var diameterUnit = ""; var areaUnit = ""; // 3. Calculation Logic if (unitSystem === "imperial") { // Formula: d (inches) = sqrt( (0.4085 * Q_gpm) / v_ft_s ) var insideTerm = (0.4085 * flowRate) / velocity; diameter = Math.sqrt(insideTerm); // Area in sq inches = (pi * d^2) / 4 area = (Math.PI * Math.pow(diameter, 2)) / 4; diameterUnit = " inches"; areaUnit = " sq inches"; } else { // Metric: Q in m3/h, v in m/s // Convert Q to m3/s: Q_m3s = Q_m3h / 3600 var flowRateSec = flowRate / 3600; // Area (m2) = Q / v var areaM2 = flowRateSec / velocity; // Diameter (m) = sqrt( (4 * Area) / pi ) var diameterM = Math.sqrt((4 * areaM2) / Math.PI); // Convert to mm for display diameter = diameterM * 1000; // Convert Area to mm2 area = areaM2 * 1000000; diameterUnit = " mm"; areaUnit = " mm²"; } // 4. Update Output document.getElementById("resultDiameter").innerText = diameter.toFixed(2) + diameterUnit; document.getElementById("resultArea").innerText = area.toFixed(2) + areaUnit; document.getElementById("pscResult").style.display = "block"; }

Leave a Comment