Calculate air flow rate inside a duct based on its dimensions and air velocity.
Air Flow Rate:
0 CFM
Area: 0 sq ft
Method 2: Room Ventilation Requirement
Calculate required air flow based on room size and desired Air Changes per Hour (ACH).
Required Air Flow:
0 CFM
Room Volume: 0 cu ft
How to Calculate Air Flow Rate
Understanding how to calculate air flow rate is essential for HVAC technicians, engineers, and homeowners looking to improve indoor air quality. The air flow rate determines how effectively a system moves air through a space, which directly impacts heating, cooling, and ventilation efficiency. The standard unit of measurement in the United States is CFM (Cubic Feet per Minute).
1. The Velocity-Area Method (For Ducts)
The most fundamental formula for calculating air flow rate in a duct is derived from physics:
Q = A × V
Where:
Q = Air Flow Rate (CFM)
A = Cross-Sectional Area of the duct (Square Feet)
V = Velocity of the air (FPM – Feet Per Minute)
Important Note on Units: Duct dimensions are usually measured in inches, but the formula requires Square Feet. You must convert your area by dividing square inches by 144.
Calculation Examples:
Rectangular Duct: For a 12″ x 10″ duct with air moving at 500 FPM:
Calculate Area in sq inches: 12 × 10 = 120 sq in.
Convert to sq feet: 120 / 144 = 0.833 sq ft.
Calculate CFM: 0.833 × 500 = 416.5 CFM.
Round Duct: For an 8″ diameter duct with air moving at 600 FPM:
Radius is 4 inches. Area = π × r² = 3.14159 × 16 ≈ 50.27 sq in.
Convert to sq feet: 50.27 / 144 ≈ 0.349 sq ft.
Calculate CFM: 0.349 × 600 ≈ 209.4 CFM.
2. The Air Change Method (For Rooms)
If you are designing ventilation for a specific room (like a server room, kitchen, or bathroom), you calculate the required air flow rate based on the volume of the room and how often the air needs to be replaced. This is known as ACH (Air Changes per Hour).
CFM = (Volume × ACH) / 60
Volume = Length × Width × Height (Cubic Feet)
ACH = Number of times air is replaced per hour
60 = Conversion factor (Hours to Minutes)
Example: A 15ft x 15ft x 8ft living room needs 4 air changes per hour.
Calculate Volume: 15 × 15 × 8 = 1,800 cubic feet.
Multiply by ACH: 1,800 × 4 = 7,200 cubic feet per hour.
Divide by 60: 7,200 / 60 = 120 CFM.
Common ACH Guidelines
Residential Living Areas: 4 – 6 ACH
Kitchens: 15 – 20 ACH
Bathrooms: 6 – 8 ACH
Laboratories: 6 – 12 ACH
Warehouses: 2 – 4 ACH
function toggleDuctInputs() {
var radios = document.getElementsByName('ductType');
var rectInputs = document.getElementById('rectInputs');
var roundInputs = document.getElementById('roundInputs');
var isRectangular = true;
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked && radios[i].value === 'round') {
isRectangular = false;
}
}
if (isRectangular) {
rectInputs.classList.remove('hidden');
roundInputs.classList.add('hidden');
} else {
rectInputs.classList.add('hidden');
roundInputs.classList.remove('hidden');
}
}
function calculateDuctCFM() {
// Get values
var velocity = parseFloat(document.getElementById('airVelocity').value);
var radios = document.getElementsByName('ductType');
var ductType = 'rectangular';
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked) {
ductType = radios[i].value;
break;
}
}
// Validate Velocity
if (isNaN(velocity) || velocity < 0) {
alert("Please enter a valid air velocity.");
return;
}
var areaSqFt = 0;
if (ductType === 'rectangular') {
var width = parseFloat(document.getElementById('ductWidth').value);
var height = parseFloat(document.getElementById('ductHeight').value);
if (isNaN(width) || isNaN(height) || width <= 0 || height <= 0) {
alert("Please enter valid duct dimensions.");
return;
}
// Calculate Area in Sq Ft (Input is inches)
areaSqFt = (width * height) / 144;
} else {
var diameter = parseFloat(document.getElementById('ductDiameter').value);
if (isNaN(diameter) || diameter <= 0) {
alert("Please enter a valid duct diameter.");
return;
}
// Calculate Area in Sq Ft (Input is inches)
// Area = pi * r^2. r = d/2.
var radius = diameter / 2;
var areaSqInches = Math.PI * Math.pow(radius, 2);
areaSqFt = areaSqInches / 144;
}
// Calculate CFM: Q = A * V
var cfm = areaSqFt * velocity;
// Display Results
var resultBox = document.getElementById('ductResult');
var resultValue = document.getElementById('ductResultValue');
var areaDisplay = document.getElementById('ductAreaDisplay');
resultBox.style.display = 'block';
resultValue.innerHTML = cfm.toFixed(2) + " CFM";
areaDisplay.innerHTML = "Duct Cross-Sectional Area: " + areaSqFt.toFixed(3) + " sq ft";
}
function calculateRoomCFM() {
var length = parseFloat(document.getElementById('roomLength').value);
var width = parseFloat(document.getElementById('roomWidth').value);
var height = parseFloat(document.getElementById('roomHeight').value);
var ach = parseFloat(document.getElementById('achInput').value);
if (isNaN(length) || isNaN(width) || isNaN(height) || isNaN(ach)) {
alert("Please fill in all room dimensions and ACH fields with valid numbers.");
return;
}
if (length <= 0 || width <= 0 || height <= 0 || ach < 0) {
alert("Values must be positive.");
return;
}
// Calculate Volume
var volume = length * width * height;
// Calculate Required CFM: (Volume * ACH) / 60
var requiredCFM = (volume * ach) / 60;
// Display Results
var resultBox = document.getElementById('roomResult');
var resultValue = document.getElementById('roomResultValue');
var volumeDisplay = document.getElementById('roomVolumeDisplay');
resultBox.style.display = 'block';
resultValue.innerHTML = requiredCFM.toFixed(1) + " CFM";
volumeDisplay.innerHTML = "Room Volume: " + volume.toLocaleString() + " cu ft";
}