Skip to main content

Airflow CFM Calculator — Blower and Ventilation Requirements

ANALife Services AuthorityNational Calculator Authority›Airflow CFM Calculator — Blower and Ventilation Requirements

.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }

Airflow CFM Calculator — Blower and Ventilation Requirements

Calculate required airflow (CFM — Cubic Feet per Minute) for blowers and ventilation systems using four industry-standard methods: Air Changes per Hour (ACH), Heat Load, Duct Velocity, or Room Volume with target ACH.

Calculation Method

Method 1: Air Changes per Hour (ACH) Method 2: Heat Load (Sensible Cooling/Heating) Method 3: Duct Velocity Method 4: Exhaust / General Ventilation (People-Based)

### Method 1: Air Changes per Hour (ACH)

Room Length (ft)

Room Width (ft)

Ceiling Height (ft)

Required Air Changes per Hour (ACH) Typical: Bedroom 4–6, Office 6–10, Kitchen 15–60, Server Room 20–30

### Method 2: Heat Load (Sensible)

Sensible Heat Load (BTU/hr)

Temperature Difference ΔT (°F) Supply air temp vs. room temp (typical: 15–25°F for cooling)

### Method 3: Duct Velocity

Duct Cross-Section Shape

Round Duct Rectangular Duct

Duct Diameter (inches)

Duct Width (inches)

Duct Height (inches)

Air Velocity (FPM — Feet per Minute) Typical: Supply 600–900 FPM, Return 400–600 FPM, Main trunk 1000–1500 FPM

### Method 4: People-Based Ventilation (ASHRAE 62.1)

Number of Occupants

CFM per Person ASHRAE 62.1: Office 5–20 CFM/person, Classroom 10–15, Gym 20–30

Floor Area (sq ft) (for area component)

CFM per sq ft (area component) ASHRAE 62.1 default: 0.06 CFM/sq ft for offices

Calculate CFM

#### Formulas Used

Method 1 — Air Changes per Hour (ACH):

CFM = (Room Volume × ACH) ÷ 60 Room Volume (ft³) = Length × Width × Height

Method 2 — Sensible Heat Load:

CFM = Q ÷ (1.08 × ΔT) Where Q = sensible heat (BTU/hr), ΔT = temperature difference (°F) 1.08 = 0.075 lb/ft³ (air density) × 0.24 BTU/lb·°F (specific heat) × 60 min/hr

Method 3 — Duct Velocity:

CFM = Duct Area (ft²) × Velocity (FPM) Round: Area = π × (D/2)² ÷ 144 [D in inches → ft²] Rectangular: Area = Width × Height ÷ 144

Method 4 — People-Based (ASHRAE 62.1):

CFM = (Occupants × CFM/person) + (Floor Area × CFM/ft²)

#### Assumptions & References

(function() {

function airShowMethod() { var m = document.getElementById('air-method').value; ['ach','heat','duct','exhaust'].forEach(function(id) { document.getElementById('air-method-' + id).style.display = (id === m) ? '' : 'none'; }); document.getElementById('air-result').style.display = 'none'; }

function airDuctShape() { var s = document.getElementById('air-duct-shape').value; document.getElementById('air-duct-round').style.display = (s === 'round') ? '' : 'none'; document.getElementById('air-duct-rect').style.display = (s === 'rect') ? '' : 'none'; }

function airCalc() { var resultDiv = document.getElementById('air-result'); var method = document.getElementById('air-method').value; var errors = []; var cfm = 0; var details = '';

if (method === 'ach') { var L = parseFloat(document.getElementById('air-room-length').value); var W = parseFloat(document.getElementById('air-room-width').value); var H = parseFloat(document.getElementById('air-room-height').value); var ACH = parseFloat(document.getElementById('air-ach').value); if (isNaN(L) || L ' + 'Room Volume' + vol.toFixed(1) + ' ft³' + 'Air Changes per Hour' + ACH + ' ACH' + 'Formula(' + vol.toFixed(1) + ' × ' + ACH + ') ÷ 60' + ''; }

} else if (method === 'heat') { var Q = parseFloat(document.getElementById('air-heat-btu').value); var dT = parseFloat(document.getElementById('air-heat-dt').value); if (isNaN(Q) || Q ' + 'Sensible Heat Load (Q)' + Q.toLocaleString() + ' BTU/hr' + 'Temperature Difference (ΔT)' + dT + ' °F' + 'Formula' + Q.toLocaleString() + ' ÷ (1.08 × ' + dT + ')' + ''; }

} else if (method === 'duct') { var vel = parseFloat(document.getElementById('air-duct-vel').value); var shape = document.getElementById('air-duct-shape').value; var area = 0; var areaDesc = ''; if (isNaN(vel) || vel ' + 'Duct Cross-Section Area' + area.toFixed(4) + ' ft²' + 'Area Calculation' + areaDesc + '' + 'Air Velocity' + vel.toLocaleString() + ' FPM' + 'Formula' + area.toFixed(4) + ' ft² × ' + vel.toLocaleString() + ' FPM' + ''; }

} else if (method === 'exhaust') { var ppl = parseFloat(document.getElementById('air-people').value); var cfmPer = parseFloat(document.getElementById('air-cfm-person').value); var flArea = parseFloat(document.getElementById('air-floor-area').value); var cfmSqft = parseFloat(document.getElementById('air-cfm-sqft').value); if (isNaN(ppl) || ppl ' + 'People Component' + ppl + ' × ' + cfmPer + ' = ' + peopleCFM.toFixed(1) + ' CFM' + 'Area Component' + flArea + ' × ' + cfmSqft + ' = ' + areaCFM.toFixed(1) + ' CFM' + 'Total (People + Area)' + peopleCFM.toFixed(1) + ' + ' + areaCFM.toFixed(1) + ' CFM' + ''; } }

if (errors.length > 0) { resultDiv.style.display = 'block'; resultDiv.className = 'calc-result calc-error'; resultDiv.innerHTML = 'Please fix the following:' + errors.map(function(e){ return ''; }).join('') + ''; return; }

// Blower sizing recommendation var safetyFactor = cfm * 1.15; var cfmRounded = Math.ceil(cfm / 50) * 50;

// ACH back-calculation for context var achNote = ''; if (method !== 'ach') { achNote = ''; }

resultDiv.style.display = 'block'; resultDiv.className = 'calc-result calc-success'; resultDiv.innerHTML = 'Required Airflow: ' + cfm.toFixed(1) + ' CFM' + details + '' + 'Blower / Fan Sizing Recommendations:' + '' + '- Minimum rated CFM: ' + cfm.toFixed(1) + ' CFM' + '- With 15% safety factor: ' + safetyFactor.toFixed(1) + ' CFM' + '- Suggested blower selection (round up to nearest 50 CFM): ' + cfmRounded + ' CFM' + '- Equivalent: ' + (cfm * 1.699).toFixed(1) + ' m³/hr | ' + (cfm * 0.000472).toFixed(4) + ' m³/s' + '' + '' + 'Note: Add 10–20% for duct losses, filter resistance, and system inefficiencies in final blower selection.'; }

// Expose to global scope window.airShowMethod = airShowMethod; window.airDuctShape = airDuctShape; window.airCalc = airCalc;

})();

More Calculators

References