Calculate the Breathing Zone Outdoor Airflow (Vbz) based on ASHRAE Standard 62.1 guidelines.
Custom Input
Office Space
Reception Area
Conference/Meeting Room
Classroom (Age 5-8)
Classroom (Age 9+)
Lecture Classroom
Restaurant Dining
Gym / Sports Area
Retail Store
Corridor
Square Feet (ft²)
Number of People
CFM per person
CFM per ft²
Total Required Outdoor Airflow (Vbz)
0 CFM
About Minimum Ventilation Rates
Ensuring adequate indoor air quality (IAQ) is critical for the health, comfort, and productivity of building occupants. This calculator uses the Ventilation Rate Procedure (VRP) outlined in ASHRAE Standard 62.1, which is the recognized industry standard for ventilation system design in commercial and institutional buildings.
The Calculation Formula
The calculation for the Breathing Zone Outdoor Airflow ($V_{bz}$) combines two factors: the airflow required for the people in the room and the airflow required to handle building emissions from the floor area. The formula is:
Vbz = (Rp × Pz) + (Ra × Az)
Where:
Rp = Outdoor airflow rate required per person (CFM/person).
Pz = Zone population (Number of people).
Ra = Outdoor airflow rate required per unit area (CFM/ft²).
Az = Zone floor area (ft²).
Typical Ventilation Rates (ASHRAE 62.1)
Different occupancy categories require different ventilation rates based on anticipated activity levels and occupant density. Below are common values used in the industry:
Occupancy Category
People Rate (Rp) CFM/person
Area Rate (Ra) CFM/ft²
Office Space
5
0.06
Conference Room
5
0.06
Classroom (Age 9+)
10
0.12
Restaurant Dining
7.5
0.18
Retail / Sales
7.5
0.12
Corridors
0
0.06
Why Ventilation Matters
Proper ventilation dilutes and removes indoor contaminants such as carbon dioxide (CO2), volatile organic compounds (VOCs), and airborne pathogens. Inadequate ventilation can lead to "Sick Building Syndrome," characterized by headaches, fatigue, and respiratory issues among occupants.
How to Use This Calculator
Select Space Type: Choose a preset from the dropdown menu to automatically fill standard ASHRAE rates for $R_p$ and $R_a$. Select "Custom" to enter your own engineering values.
Enter Area: Input the gross floor area of the zone in square feet.
Enter Occupancy: Input the number of people expected to occupy the zone during typical usage.
Review Rates: Ensure the CFM/person and CFM/ft² match your local building codes or specific design requirements.
Calculate: Click the button to see the total required Cubic Feet per Minute (CFM) of outdoor air.
Disclaimer: This tool provides estimates based on general ASHRAE Standard 62.1 parameters. Local building codes, mechanical system efficiency (Ez), and specific version years (2010, 2013, 2019, 2022) may vary. Always consult with a licensed Mechanical Engineer (PE) for HVAC system design and compliance.
function updateRates() {
var type = document.getElementById('roomType').value;
var rpInput = document.getElementById('ratePerPerson');
var raInput = document.getElementById('ratePerArea');
// Presets based on typical ASHRAE 62.1 values
// Format: [Rp (CFM/person), Ra (CFM/sqft)]
var presets = {
'office': [5, 0.06],
'reception': [5, 0.06],
'conference': [5, 0.06],
'classroom_5_8': [10, 0.12],
'classroom_9_plus': [10, 0.12],
'lecture': [7.5, 0.06],
'restaurant': [7.5, 0.18],
'gym': [20, 0.18],
'retail': [7.5, 0.12],
'corridor': [0, 0.06]
};
if (type !== 'custom' && presets[type]) {
rpInput.value = presets[type][0];
raInput.value = presets[type][1];
} else if (type === 'custom') {
rpInput.value = ";
raInput.value = ";
}
}
function calculateVentilation() {
// Get Inputs
var area = parseFloat(document.getElementById('floorArea').value);
var people = parseFloat(document.getElementById('occupancy').value);
var rp = parseFloat(document.getElementById('ratePerPerson').value);
var ra = parseFloat(document.getElementById('ratePerArea').value);
// Validation
if (isNaN(area) || area < 0) {
alert("Please enter a valid floor area.");
return;
}
if (isNaN(people) || people < 0) {
alert("Please enter a valid number of people.");
return;
}
if (isNaN(rp) || rp < 0) {
alert("Please enter a valid rate per person (Rp).");
return;
}
if (isNaN(ra) || ra < 0) {
alert("Please enter a valid rate per area (Ra).");
return;
}
// Calculation: Vbz = (Rp * Pz) + (Ra * Az)
var peopleComponent = rp * people;
var areaComponent = ra * area;
var totalVbz = peopleComponent + areaComponent;
// Display Results
var resultBox = document.getElementById('resultBox');
var totalEl = document.getElementById('totalCFM');
var breakdownEl = document.getElementById('breakdownText');
resultBox.style.display = 'block';
totalEl.innerHTML = Math.round(totalVbz * 100) / 100 + " CFM";
breakdownEl.innerHTML =
"Breakdown:" +
"People Component (" + people + " ppl × " + rp + " CFM): " + Math.round(peopleComponent * 100) / 100 + " CFM" +
"Area Component (" + area + " ft² × " + ra + " CFM): " + Math.round(areaComponent * 100) / 100 + " CFM";
}