Peak Expiratory Flow (PEF) is a measurement of how fast you can blow air out of your lungs when you exhale forcefully after inhaling fully. This measurement is a key indicator of how well your airways are working, particularly for individuals with asthma or chronic obstructive pulmonary disease (COPD).
How the Calculator Works
This calculator uses standard medical regression formulas (based on the Nunn and Gregg studies) to estimate what a "normal" peak flow should be for a person of your age, height, and gender. Predicted values are estimates; your "Personal Best" reading—taken when you are feeling well—is often a more accurate baseline for managing your respiratory health.
Understanding the Traffic Light Zones
Asthma management often uses a traffic light system to help patients understand their current respiratory status:
Green Zone (80-100% of predicted/best): Your breathing is stable. Continue your usual maintenance medications.
Yellow Zone (50-80% of predicted/best): Use caution. Your airways may be narrowing. You may need to use your rescue inhaler or follow your prescribed asthma action plan.
Red Zone (Below 50% of predicted/best): Medical Alert. You are experiencing significant airway obstruction. Use your rescue medication immediately and contact a healthcare professional or seek emergency care.
How to Use a Peak Flow Meter
Move the marker to the bottom of the scale (zero).
Stand up straight and take a deep breath in.
Close your lips tightly around the mouthpiece.
Blow out as hard and as fast as you can in a single "huff".
Write down the number reached. Repeat two more times and record the highest of the three readings.
Disclaimer: This calculator is for educational purposes only and should not replace professional medical advice. Always follow the action plan provided by your doctor.
function calculatePeakFlow() {
var gender = document.getElementById('gender').value;
var age = parseFloat(document.getElementById('age').value);
var height = parseFloat(document.getElementById('height').value);
var currentFlow = parseFloat(document.getElementById('currentFlow').value);
var errorMsg = document.getElementById('error-msg');
var resultSection = document.getElementById('result-section');
if (isNaN(age) || isNaN(height) || age < 5 || height < 50) {
errorMsg.style.display = 'block';
resultSection.style.display = 'none';
return;
}
errorMsg.style.display = 'none';
var predicted;
// Formula based on Gregg and Nunn (standard for adults)
// Values in Liters per minute
if (gender === 'male') {
// Male: ((Height in m * 5.48) + 1.58 – (age * 0.041)) * 60
predicted = ((height/100 * 5.48) + 1.58 – (age * 0.041)) * 60;
} else {
// Female: ((Height in m * 3.72) + 2.24 – (age * 0.03)) * 60
predicted = ((height/100 * 3.72) + 2.24 – (age * 0.03)) * 60;
}
predicted = Math.round(predicted);
// Calculate Zones
var greenMin = Math.round(predicted * 0.8);
var yellowMin = Math.round(predicted * 0.5);
document.getElementById('predicted-value').innerText = predicted + " L/min";
document.getElementById('range-green').innerText = greenMin + " – " + predicted + " L/min";
document.getElementById('range-yellow').innerText = yellowMin + " – " + (greenMin – 1) + " L/min";
document.getElementById('range-red').innerText = " 0) {
var percentage = Math.round((currentFlow / predicted) * 100);
var status = "";
var color = "";
if (percentage >= 80) {
status = "Green Zone (Good)";
color = "#2e7d32";
} else if (percentage >= 50) {
status = "Yellow Zone (Caution)";
color = "#fbc02d";
} else {
status = "Red Zone (Danger)";
color = "#c62828";
}
comparisonText.innerHTML = "Your current reading is " + percentage + "% of predicted. Status: " + status + "";
} else {
comparisonText.innerHTML = "";
}
resultSection.style.display = 'block';
}