Calculate optimal duct dimensions based on CFM and Friction Loss.
Recommended Round Diameter:–
Air Velocity:–
Equivalent Side B (Width):–
Recommended Upsize (Nearest Inch):–
Complete Guide to HVAC Duct Sizing
Proper duct sizing is critical for the efficiency, comfort, and longevity of any HVAC system. If ducts are too small, the system will be noisy and the blower motor will wear out prematurely due to high static pressure. If they are too large, air velocity drops, and the system may fail to deliver conditioned air effectively to distant rooms.
Understanding the Inputs
To use this calculator effectively, you need to understand two key engineering metrics:
CFM (Cubic Feet per Minute): This represents the volume of air required for a specific space. Generally, residential systems require about 400 CFM per ton of cooling capacity.
Friction Loss: This is the resistance air faces as it moves through the duct. The industry standard for residential design (ACCA Manual D) typically uses a friction rate of 0.10 inches of water column (wc) per 100 feet of duct.
Calculation Example
Suppose you have a 3-ton AC unit. At 400 CFM per ton, your total airflow is 1,200 CFM. Using a standard friction rate of 0.10:
The required round duct diameter would be approximately 13.6 inches.
In practice, you would round up to a 14-inch duct.
If you prefer a rectangular duct with a height (Side A) of 10 inches, the width (Side B) would need to be approximately 16 inches to maintain equivalent airflow characteristics.
The Importance of Air Velocity
Velocity is measured in FPM (Feet Per Minute). In residential settings, you generally want to keep supply duct velocity below 700-900 FPM to prevent "whooshing" noises. Return ducts are often sized for lower velocities (around 600 FPM) to ensure quiet operation near the intake grilles. This calculator automatically computes the velocity based on your inputs to help you stay within these comfort zones.
Rectangular vs. Round Ducts
Round ducts are the most efficient shape for air travel because they have the least surface area for the volume of air handled, leading to lower friction. However, rectangular ducts are often necessary due to space constraints in ceilings or crawlspaces. When converting round to rectangular, the "equivalent" size is calculated to ensure the same pressure drop occurs at the same airflow rate.
function calculateDuctSize() {
var cfm = parseFloat(document.getElementById('cfmInput').value);
var friction = parseFloat(document.getElementById('frictionInput').value);
var sideA = parseFloat(document.getElementById('sideAInput').value);
if (isNaN(cfm) || cfm <= 0 || isNaN(friction) || friction 0) {
// Huebscher Equation for circular equivalent:
// d = 1.30 * ((a*b)^0.625 / (a+b)^0.25)
// We iterate or use an approximation for b.
// For simplicity and high accuracy in HVAC ranges:
// b = (d^4) / (sideA^3) is a rough approximation,
// but let's use the more accurate area-equivalent and adjust for friction.
var b = (Math.pow(diameter, 1.25)) / (Math.pow(sideA, 0.625)); // Simplified power-fit
// Refining with a standard lookup approximation
var sideB = Math.pow(diameter, 2) / sideA;
// Most technicians use: Side B = (Round Diameter^2) / Side A as a quick area check,
// but we'll apply a 1.1 friction correction factor for rectangular aspect ratios.
var sideBCorrected = (Math.pow(diameter, 1.265) / Math.pow(sideA, 0.625));
// Better approximation for Side B based on equivalent friction:
var sideBFinal = Math.pow( (Math.pow(diameter, 1.25) / (1.3 * Math.pow(sideA, 0.625))), 1/0.625 );
// Due to complexity of solving Huebscher for B, we use the common industry approximation:
var sideB_Approx = (0.05 * Math.pow(diameter, 2.1)) / Math.pow(sideA, 1.1); // heuristic
// Practical approach: solve for area then adjust +15% for friction losses in rectangular
var areaNeeded = Math.PI * Math.pow((diameter/2), 2);
var sideB_Simple = (areaNeeded * 1.15) / sideA;
document.getElementById('sideBResult').innerText = sideB_Simple.toFixed(1) + " inches";
rectRow.style.display = "flex";
} else {
rectRow.style.display = "none";
}
document.getElementById('hvacResults').style.display = "block";
}