The AQI formula
The US Air Quality Index turns a pollutant concentration into a number from 0 to 500 on a common scale for all pollutants. For each pollutant, the EPA publishes a table of breakpoints: concentration ranges (C low to C high) and the index range (I low to I high) that belongs to each. Inside a range the index is a straight line:
AQI = (I high − I low) ÷ (C high − C low) × (C − C low) + I low
The slope differs from row to row, so a microgram means more index points at low concentrations than at high ones. In the Good row, 1 µg/m³ is worth 50 ÷ 9 = 5.6 points, in the Unhealthy row only 49 ÷ 69.9 = 0.7 points.
Worked example: six daily PM2.5 means to AQI
Rows 2 to 7 are the US EPA PM2.5 breakpoints (24-hour, 2024 revision). Rows 10 to 15 convert six daily means into AQI values, rows 17 to 20 show the calculation for 41.91 µg/m³ and two counts. The readings are synthetic.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | C low (µg/m³) | C high (µg/m³) | I low | I high | Category |
| 2 | 0.0 | 9.0 | 0 | 50 | Good |
| 3 | 9.1 | 35.4 | 51 | 100 | Moderate |
| 4 | 35.5 | 55.4 | 101 | 150 | Unhealthy for Sensitive Groups |
| 5 | 55.5 | 125.4 | 151 | 200 | Unhealthy |
| 6 | 125.5 | 225.4 | 201 | 300 | Very Unhealthy |
| 7 | 225.5 | 325.4 | 301 | 500 | Hazardous |
| 8 | |||||
| 9 | 24-h PM2.5 | Truncated | Row | AQI | Category |
| 10 | 6.84 | 6.8 | 1 | 38 | Good |
| 11 | 9.05 | 9.0 | 1 | 50 | Good |
| 12 | 22.15 | 22.1 | 2 | 75 | Moderate |
| 13 | 35.46 | 35.4 | 2 | 100 | Moderate |
| 14 | 41.91 | 41.9 | 3 | 117 | Unhealthy for Sensitive Groups |
| 15 | 58.27 | 58.2 | 4 | 153 | Unhealthy |
| 16 | |||||
| 17 | Slope for 41.9 (row 3 of the table) | 2.4623 | |||
| 18 | Index for 41.9 before rounding | 116.76 | |||
| 19 | Days with AQI above 100 | 2 | |||
| 20 | Days above the WHO 24-hour guideline (15) | 4 | |||
- B10
=TRUNC(A10,1)Truncate to one decimal - C10
=MATCH(B10,$A$2:$A$7,1)Breakpoint row (approximate match) - D10
=ROUND((INDEX($D$2:$D$7,C10)-INDEX($C$2:$C$7,C10))/(INDEX($B$2:$B$7,C10)-INDEX($A$2:$A$7,C10))*(B10-INDEX($A$2:$A$7,C10))+INDEX($C$2:$C$7,C10),0)Interpolate and round - E17
=(D4-C4)/(B4-A4)Slope of the row for 41.9
For learning the method only. Official AQI values come from your local air quality agency. Breakpoints after the US EPA AQI technical guidance, PM2.5 values revised in 2024.
Step 1: start from the right average
The PM2.5 breakpoints apply to a 24-hour average, not to a single hourly reading. Average the hourly values of one day, and only if enough hours are valid. A common rule is at least 75% data completeness, 18 of 24 hours. For the current conditions that apps show every hour, the EPA uses a weighted recent average called the NowCast, then puts it through the same breakpoints.
Measure in µg/m³. PM2.5 is a mass of particles, so unlike gases such as NO2 or ozone there is no ppb conversion.
Step 2: truncate, do not round
The EPA's technical guidance truncates PM2.5 to one decimal before the lookup: =TRUNC(A10,1). The difference matters at the edges. A mean of 9.05 µg/m³ truncates to 9.0 and stays Good (AQI 50), while rounding would give 9.1 and Moderate. A mean of 35.46 truncates to 35.4 and stays Moderate at exactly 100, while rounding would push it over 100 into the next category.
Step 3: find the breakpoint row with MATCH
Because the C low column is sorted in ascending order, an approximate MATCH returns the last row whose C low is not above the concentration: =MATCH(B10,$A$2:$A$7,1). For 41.9 that is row 3, the 35.5 to 55.4 range. INDEX then reads the four breakpoints and the category from that row, for example INDEX($E$2:$E$7,C10) for the name. The same approximate-match idea works with XLOOKUP or VLOOKUP, and the INDEX and MATCH guide covers the pattern in more depth.
Step 4: interpolate and round
For 41.9 µg/m³ the slope is (150 − 101) ÷ (55.4 − 35.5) = 49 ÷ 19.9 = 2.4623 index points per µg/m³. The concentration is 41.9 − 35.5 = 6.4 above C low, so the index is 2.4623 × 6.4 + 101 = 116.76, which rounds to 117. The other days in the example give 38, 50, 75, 100 and 153, and two of the six days are above 100.
When several pollutants are measured, each gets its own sub-index from its own table, and the reported AQI is the highest one. That pollutant is named as the main pollutant of the day.
The 2024 breakpoints, other indices and the WHO guideline
In 2024 the EPA tightened the annual PM2.5 standard to 9.0 µg/m³ and revised the AQI table: Good now ends at 9.0 instead of 12.0, Unhealthy at 125.4 instead of 150.4, and the two Hazardous rows were merged into one. Older calculators and charts still use the previous values, so check the date of any table you copy.
The US AQI is only one index. The European AQI, the UK Daily Air Quality Index, India's AQI and others use different bands, so always say which index you report. The WHO 2021 air quality guidelines are not an index at all: they recommend 15 µg/m³ as a 24-hour level, not to be exceeded on more than 3 to 4 days a year, and 5 µg/m³ as the annual mean. Four of the six days in the example are above 15 µg/m³, even though only two have an AQI above 100.
Common mistakes
- Rounding instead of truncating. 9.05 rounds to 9.1 (Moderate) but truncates to 9.0 (Good). Use
TRUNC(C,1)before the lookup. - Using an hourly value with the 24-hour table. The PM2.5 breakpoints are for 24-hour means. One hourly spike is not a daily AQI.
- Old breakpoints. Tables from before 2024 end Good at 12.0 µg/m³. Check the source date when you copy a table.
- Forgetting the final ROUND. The AQI is reported as a whole number. 116.76 is reported as 117.
- An unsorted breakpoint table. Approximate MATCH needs C low in ascending order. Otherwise it returns the wrong row without an error.
- Averaging AQI values. The index is not linear across rows. Average the concentrations first, then convert the average to an AQI.
Frequently asked questions
How do you calculate AQI from PM2.5?
Take the 24-hour average PM2.5 in µg/m³, truncate it to one decimal, find the breakpoint row it falls into and apply AQI = (I high − I low) / (C high − C low) × (C − C low) + I low. Round the result to a whole number.
What PM2.5 level is a good AQI?
Under the US EPA breakpoints revised in 2024, a 24-hour PM2.5 average from 0 to 9.0 µg/m³ is Good (AQI 0 to 50), and 9.1 to 35.4 µg/m³ is Moderate (AQI 51 to 100).
Why is my AQI different from the one in a weather app?
Apps usually show the NowCast, a weighted average of recent hours, rather than a full 24-hour mean. They may also use another country's index, older breakpoints or a different monitoring station.
Is AQI the same as the WHO guideline?
No. The AQI is an index for reporting daily air quality. The WHO 2021 guideline recommends 15 µg/m³ as a 24-hour PM2.5 level and 5 µg/m³ as an annual mean, which is stricter than the AQI's Good band for a single day.