Calculate round and rectangular duct sizes based on Airflow (CFM) and Friction Rate.
Total cubic feet per minute required for the zone/room.
Standard residential: 0.08 – 0.1 in. wg per 100ft. Commercial: 0.1 – 0.2.
Required Round Duct
Precise Diameter:0.00″
Recommended Standard Size:0″ Round
Air Velocity:0 FPM
Warning: High velocity (>900 FPM) may cause noise issues in residential supplies.
Convert to Rectangular Duct
Enter one dimension (constrained side) to calculate the other side required to maintain the same friction rate.
Required Second Side:—
Actual Size:—
How to Use This Duct Calculator
This tool replaces the traditional "Ductulator" sliding chart used by HVAC technicians. It utilizes ASHRAE formulas for standard air to determine the necessary duct diameter to carry a specific volume of air (CFM) at a set friction loss rate.
1. Input Airflow (CFM)
Enter the Cubic Feet per Minute (CFM) required for the specific run. For a main trunk, this is the total system airflow. For a branch run, this is the airflow required for that specific room.
Typical rule of thumb: 400 CFM per ton of air conditioning.
Example: A 3-ton system requires approx. 1200 CFM total.
2. Select Friction Rate
The friction rate, measured in inches of water column (in. w.c.) per 100 feet of duct, determines the static pressure drop.
Residential Supply: Commonly designed at 0.08 to 0.1 in. w.c./100ft.
Residential Return: Often sized larger, at 0.06 to 0.08 in. w.c./100ft to reduce noise.
Commercial: May range from 0.1 to 0.2, allowing for higher velocities.
3. Check Velocity (FPM)
The calculator automatically determines the Air Velocity in Feet Per Minute (FPM). Velocity is critical for noise control.
Application
Recommended Max Velocity
Residential Main Trunk
700 – 900 FPM
Residential Branch Run
400 – 600 FPM
Commercial Main
1000 – 1300 FPM
Rectangular Equivalent Calculation
Ductwork often needs to be rectangular to fit inside joist bays or soffits. However, a 10″ round duct does not have the same airflow capacity as a 10×10 square duct due to aerodynamics and friction.
This tool uses the Huebscher Equation to calculate the equivalent rectangular size that provides the same friction loss and capacity as the calculated round duct. Simply enter your height constraint (e.g., 8″ to fit in a ceiling), and the tool calculates the required width.
// Global variable to store the calculated round diameter for conversion
var currentCalculatedDiameter = 0;
function calculateDuctSize() {
// 1. Get Inputs
var cfm = parseFloat(document.getElementById("ductCFM").value);
var friction = parseFloat(document.getElementById("frictionRate").value);
var resultsDiv = document.getElementById("sizingResults");
var warningDiv = document.getElementById("velocityWarning");
// 2. Validation
if (!cfm || cfm <= 0 || !friction || friction 900) {
warningDiv.style.display = "block";
warningDiv.innerHTML = "Warning: Velocity is " + Math.round(velocity) + " FPM. This may be noisy for residential supply.";
} else {
warningDiv.style.display = "none";
}
// Show results container
resultsDiv.style.display = "block";
// Trigger rect calculation if input exists
calculateRectEquivalent();
}
function calculateRectEquivalent() {
var sideA = parseFloat(document.getElementById("rectSideA").value);
if (!currentCalculatedDiameter || currentCalculatedDiameter <= 0) {
return; // Main calc hasn't run yet
}
if (!sideA || sideA <= 0) {
document.getElementById("rectSideB").innerText = "–";
document.getElementById("finalRectSize").innerText = "–";
return;
}
// Formula: Equivalent Diameter Deq = 1.30 * ((a*b)^0.625) / ((a+b)^0.25)
// We know Deq (currentCalculatedDiameter) and Side A. We need Side B.
// This is complex to solve algebraically. We will iterate (brute force) to find B.
var targetDeq = currentCalculatedDiameter;
var bestB = 0;
var minDiff = 9999;
// Loop B from 1 to 100 inches (reasonable duct limits) with 0.1 increments
for (var b = 2; b <= 200; b += 0.1) {
var a = sideA;
// Huebscher Equation
var num = Math.pow((a * b), 0.625);
var den = Math.pow((a + b), 0.25);
var calcDeq = 1.30 * (num / den);
var diff = Math.abs(calcDeq – targetDeq);
if (diff < minDiff) {
minDiff = diff;
bestB = b;
}
}
// Display Result
// Round bestB to nearest 0.5 or whole inch
var roundedB = Math.ceil(bestB);
document.getElementById("rectSideB").innerText = bestB.toFixed(1) + '"';
document.getElementById("finalRectSize").innerText = sideA + '" x ' + roundedB + '"';
}