Air Quality Index (AQI) Calculator
ANA›Life Services Authority›National Calculator Authority›Air Quality Index (AQI) Calculator
.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; } }
Air Quality Index (AQI) Calculator
Calculate the AQI for major air pollutants using the US EPA linear interpolation method. Enter the measured concentration for one or more pollutants to find the overall AQI and health category.
PM2.5 – Fine Particulate Matter (µg/m³, 24-hr avg)
PM10 – Coarse Particulate Matter (µg/m³, 24-hr avg)
Ozone O₃ (ppm, 8-hr avg)
Carbon Monoxide CO (ppm, 8-hr avg)
Sulfur Dioxide SO₂ (ppb, 1-hr avg)
Nitrogen Dioxide NO₂ (ppb, 1-hr avg)
Calculate AQI
function airCalc() { const resultDiv = document.getElementById("air-result"); resultDiv.innerHTML = "";
// EPA AQI Breakpoints: [C_lo, C_hi, I_lo, I_hi] const breakpoints = { pm25: [ [0.0, 12.0, 0, 50], [12.1, 35.4, 51, 100], [35.5, 55.4, 101, 150], [55.5, 150.4, 151, 200], [150.5, 250.4, 201, 300], [250.5, 350.4, 301, 400], [350.5, 500.4, 401, 500] ], pm10: [ [0, 54, 0, 50], [55, 154, 51, 100], [155, 254, 101, 150], [255, 354, 151, 200], [355, 424, 201, 300], [425, 504, 301, 400], [505, 604, 401, 500] ], o3_8h: [ [0.000, 0.054, 0, 50], [0.055, 0.070, 51, 100], [0.071, 0.085, 101, 150], [0.086, 0.105, 151, 200], [0.106, 0.200, 201, 300] ], co: [ [0.0, 4.4, 0, 50], [4.5, 9.4, 51, 100], [9.5, 12.4, 101, 150], [12.5, 15.4, 151, 200], [15.5, 30.4, 201, 300], [30.5, 40.4, 301, 400], [40.5, 50.4, 401, 500] ], so2: [ [0, 35, 0, 50], [36, 75, 51, 100], [76, 185, 101, 150], [186, 304, 151, 200], [305, 604, 201, 300], [605, 804, 301, 400], [805,1004, 401, 500] ], no2: [ [0, 53, 0, 50], [54, 100, 51, 100], [101, 360, 101, 150], [361, 649, 151, 200], [650,1249, 201, 300], [1250,1649,301, 400], [1650,2049,401, 500] ] };
const categories = [ { max: 50, label: "Good", color: "#00e400", text: "#000" }, { max: 100, label: "Moderate", color: "#ffff00", text: "#000" }, { max: 150, label: "Unhealthy for Sensitive Groups", color: "#ff7e00", text: "#000" }, { max: 200, label: "Unhealthy", color: "#ff0000", text: "#fff" }, { max: 300, label: "Very Unhealthy", color: "#8f3f97", text: "#fff" }, { max: 500, label: "Hazardous", color: "#7e0023", text: "#fff" } ];
function getCategory(aqi) { for (let c of categories) { if (aqi = bp[0] && C 0) { resultDiv.innerHTML = "" + errors.join("") + "
"; return; } if (results.length === 0) { resultDiv.innerHTML = "Please enter at least one pollutant concentration.
"; return; }
// Overall AQI = maximum individual AQI results.sort((a, b) => b.aqi - a.aqi); const overallAQI = results[0].aqi; const cat = getCategory(overallAQI);
let rows = results.map(r => { const c2 = getCategory(r.aqi); return "" + r.label + "" + r.conc + " " + r.unit + "" + "" + r.aqi + "" + "" + c2.label + ""; }).join("");
resultDiv.innerHTML = "" + "" + overallAQI + "" + "Overall AQI – " + cat.label + "" + "Dominant pollutant: " + results[0].label + "" + "" + "" + "PollutantConcentrationAQICategory" + "" + rows + ""; }
#### Formula
The US EPA uses linear interpolation between breakpoints to convert a pollutant concentration into a sub-index AQI value:
AQIp = [(IHi − ILo) / (CHi − CLo)] × (Cp − CLo) + ILo
- Cp – truncated pollutant concentration
- CLo, CHi – concentration breakpoints bracketing Cp
- ILo, IHi – AQI values corresponding to those breakpoints
The overall AQI is the maximum sub-index across all pollutants entered.
Concentration truncation rules (per EPA): PM2.5 → 1 decimal; PM10, SO₂, NO₂ → integer; O₃ → 3 decimals; CO → 1 decimal.
#### Assumptions & References
- Breakpoints follow the US EPA Technical Assistance Document for the Reporting of Daily Air Quality – AQI (May 2024).
- Reference: EPA AQI Technical Assistance Document
More Calculators
- Gravitational Force Calculator
- Pennsylvania EV Tax Credit and Incentive Savings Calculator
- Projectile Motion Calculator
- Pest Inspection Frequency Calculator
- Pipe Wall Thickness Calculator
- Rodent Infestation Severity Calculator
- Phoenix Water Bill Estimator
- Dietary Reference Intake (DRI) Calculator
- Vitamin & Mineral Daily Needs Calculator
- Telehealth Visit Cost Savings Calculator
- Telehealth vs In-Person Care Cost Comparison Calculator
- Remote Patient Monitoring Frequency Calculator