kvlak limn

Environment · EPA AirData · Annual AQI by County

Days of Bad Air

Every monitored county in America gets a daily air-quality reading. Stack a year of them and a hard map appears: a handful of western counties choke on more than a hundred unhealthy days, while most of the country now breathes clean almost all year. This is where the bad air still is, what is in it, and how far it has fallen.

996 monitored counties covering 2000-2024 Full
147days worst county: Riverside, CA
4,016 bad-air days logged nationwide, 2024
996 counties with an EPA monitor
74% fewer bad-air days per county since 2000

The atlas of bad air

Mean bad-air days / county · 2024

Shade every state by how many unhealthy days its typical monitored county logged, and the country splits in two. The West and the desert Southwest carry nearly all the weight; a wide band of the interior and the eastern seaboard barely registers. Air quality in America is not a national condition - it is a regional one.

Alabama: 0.6 bad-air days/county (PM2.5)Alaska: 3.1 bad-air days/county (PM2.5)Arizona: 17 bad-air days/county (Ozone)Colorado: 8.9 bad-air days/county (Ozone)Florida: 0.7 bad-air days/county (PM2.5)Georgia: 1.7 bad-air days/county (PM2.5)Indiana: 0.8 bad-air days/county (Ozone)Kansas: 1.7 bad-air days/county (Ozone)Maine: 0.3 bad-air days/county (Ozone)Massachusetts: 0.9 bad-air days/county (Ozone)Minnesota: 1.4 bad-air days/county (PM2.5)New Jersey: 3.1 bad-air days/county (Ozone)North Carolina: 0.4 bad-air days/county (Ozone)North Dakota: 7.8 bad-air days/county (Ozone)Oklahoma: 5.2 bad-air days/county (Ozone)Pennsylvania: 1.5 bad-air days/county (Ozone)South Dakota: 3.8 bad-air days/county (Ozone)Texas: 10.4 bad-air days/county (PM2.5)Wyoming: 5.2 bad-air days/county (Ozone)Connecticut: 8.3 bad-air days/county (Ozone)Missouri: 1.2 bad-air days/county (Ozone)West Virginia: 0.1 bad-air days/county (PM2.5)Illinois: 1.7 bad-air days/county (PM2.5)New Mexico: 8.1 bad-air days/county (Ozone)Arkansas: 1.2 bad-air days/county (PM2.5)California: 21.9 bad-air days/county (Ozone)Delaware: 1.3 bad-air days/county (Ozone)District Of Columbia: 4 bad-air days/county (Ozone)Hawaii: 0.3 bad-air days/county (PM2.5)Iowa: 0.1 bad-air days/county (PM2.5)Kentucky: 1 bad-air days/county (PM2.5)Maryland: 1.9 bad-air days/county (Ozone)Michigan: 1.1 bad-air days/county (Ozone)Mississippi: 1 bad-air days/county (PM2.5)Montana: 2.5 bad-air days/county (PM2.5)New Hampshire: 0.1 bad-air days/county (Ozone)New York: 1.6 bad-air days/county (Ozone)Ohio: 1.7 bad-air days/county (Ozone)Oregon: 7.1 bad-air days/county (PM2.5)Tennessee: 1 bad-air days/county (PM2.5)Utah: 6.6 bad-air days/county (Ozone)Virginia: 0.3 bad-air days/county (Ozone)Washington: 0.9 bad-air days/county (PM2.5)Wisconsin: 2.1 bad-air days/county (Ozone)Nebraska: 1 bad-air days/county (PM2.5)South Carolina: 0.7 bad-air days/county (PM2.5)Idaho: 9.1 bad-air days/county (PM2.5)Nevada: 5.8 bad-air days/county (Ozone)Vermont: 0 bad-air days/county (Ozone)Louisiana: 2 bad-air days/county (PM2.5)Rhode Island: 1 bad-air days/county (PM2.5)
Bad-air days / county
  • under 2
  • 2 - 4
  • 4 - 6
  • 6 - 10
  • 10 or more
  • no monitor

Fill = the state's mean bad-air days across its monitored counties, on a single-hue teal density ramp. Grey states have no reporting monitor - that is a data gap, not clean air. Hover a state for its figure; the table below is the source of truth.

The 8 worst states in a table (the map's source of truth)
StateBad-air days / countyCountiesTop pollutant
California 21.9 52 Ozone
Arizona 17 13 Ozone
Texas 10.4 45 PM2.5
Idaho 9.1 19 PM2.5
Colorado 8.9 30 Ozone
Connecticut 8.3 8 Ozone
New Mexico 8.1 16 Ozone
North Dakota 7.8 9 Ozone

The worst-hit counties

Bad-air days · 2024

One row per county, ranked by days over an AQI of 100. Southern California and its inland valleys own the top of the board outright - eight of the worst ten counties sit downwind of Los Angeles, where sun, traffic, and mountains trap the smog. The bar is the count; the tag is the pollutant that drove the most of those days.

  1. 01 Riverside CA 147 Ozone med 87
  2. 02 San Bernardino CA 144 Ozone med 87
  3. 03 Los Angeles CA 133 Ozone med 80
  4. 04 Tulare CA 111 Ozone med 71
  5. 05 Kern CA 94 Ozone med 72
  6. 06 Fresno CA 79 Ozone med 67
  7. 07 Maricopa AZ 73 Ozone med 77
  8. 08 Pinal AZ 70 PM10 med 77
  9. 09 El Paso TX 63 Ozone med 67
  10. 10 Cameron TX 61 PM2.5 med 61
  11. 11 San Diego CA 52 Ozone med 71
  12. 12 Imperial CA 50 Ozone med 63
  13. 13 Boise ID 49 PM2.5 med 48
  14. 14 Harris TX 47 PM2.5 med 61
  15. 15 Salt Lake UT 43 Ozone med 54

Bar length = bad-air days on a shared scale (max 147, Riverside). The tag names the pollutant behind the most of those days and is always text-labeled, so colour is never the sole signal. med = the county's median AQI across the year.

Two kinds of bad air

Chronic vs acute · 16 counties

Not every bad-air county is bad the same way. Read left-to-right for the everyday load - the median day's AQI. Read bottom-to-top for how often the air turns unhealthy. And the bigger the bubble, the worse that county's single peak day. Riverside sits high and right: bad most days. A clean county with one giant bubble was simply caught under wildfire smoke once.

0 40 80 120 160 30405060708090 median AQI (everyday load) → bad-air days → San Bernardino, CA: 144 bad-air days, median AQI 87, peak 593 (Ozone) Pinal, AZ: 70 bad-air days, median AQI 77, peak 337 (PM10) Maricopa, AZ: 73 bad-air days, median AQI 77, peak 261 (Ozone) Los Angeles, CA: 133 bad-air days, median AQI 80, peak 230 (Ozone) Riverside, CA: 147 bad-air days, median AQI 87, peak 213 (Ozone) Tulare, CA: 111 bad-air days, median AQI 71, peak 185 (Ozone) Kern, CA: 94 bad-air days, median AQI 72, peak 177 (Ozone) Fresno, CA: 79 bad-air days, median AQI 67, peak 169 (Ozone) San BernardinoRiverside
Ozone-ledPM2.5-led bubble = peak AQI

Each bubble is one county; area scales with its worst single day (peak AQI 169-593). Colour marks the dominant pollutant and is always text-labeled. Values below.

The 16 counties in a table (the chart's source of truth)
CountyMedian AQIBad-air daysPeak AQITop pollutant
Riverside, CA 87 147 213 Ozone
San Bernardino, CA 87 144 593 Ozone
Los Angeles, CA 80 133 230 Ozone
Tulare, CA 71 111 185 Ozone
Kern, CA 72 94 177 Ozone
Fresno, CA 67 79 169 Ozone
Maricopa, AZ 77 73 261 Ozone
Pinal, AZ 77 70 337 PM10

The long cleanup

Mean bad-air days / county · 2000-2024

Here is the story the atlas hides. The typical monitored county went from about 15.2 bad-air days a year in 2000 to roughly 4 in 2024 - a 74% fall. Cleaner fuels, catalytic converters, and a wave of coal-plant retirements read here as one long slide down. The easy wins are spent, though: the curve flattens after the mid-2010s, and wildfire smoke now pushes the western numbers back up.

0 4 8 12 16 20 200020052010201520202024 2000: 15.2 bad-air days/county (1104 counties)2001: 15.5 bad-air days/county (1121 counties)2002: 18.5 bad-air days/county (1129 counties)2003: 11.9 bad-air days/county (1136 counties)2004: 7.9 bad-air days/county (1121 counties)2005: 14.3 bad-air days/county (1114 counties)2006: 11.3 bad-air days/county (1091 counties)2007: 13.7 bad-air days/county (1082 counties)2008: 7.6 bad-air days/county (1077 counties)2009: 4 bad-air days/county (1077 counties)2010: 6.4 bad-air days/county (1076 counties)2011: 7.6 bad-air days/county (1071 counties)2012: 9.4 bad-air days/county (1050 counties)2013: 4.2 bad-air days/county (1044 counties)2014: 3.4 bad-air days/county (1036 counties)2015: 3.9 bad-air days/county (1042 counties)2016: 3.9 bad-air days/county (1030 counties)2017: 4.5 bad-air days/county (1029 counties)2018: 5.1 bad-air days/county (1021 counties)2019: 2.1 bad-air days/county (1023 counties)2020: 4.6 bad-air days/county (1006 counties)2021: 5.3 bad-air days/county (1005 counties)2022: 3.3 bad-air days/county (1003 counties)2023: 6.2 bad-air days/county (992 counties)2024: 4 bad-air days/county (996 counties) 15.2 4

One marker per reporting year; the wash beneath the line is decoration, not a second series. Y axis = mean bad-air days across every monitored county that year. 1,104 counties reported in 2000; 996 in 2024.

An uneven recovery

Bad-air days / county by region · 2000-2024

The national average fell hard, but the cleanup was not shared. The East and the South cut their bad-air days by roughly 80 to 90 percent - an ozone problem that cleaner fuels and retired coal plants steadily solved. The West is the holdout: it came down too, but only about 40 percent, and still sits several times higher than any other region, because its air is ruled by wildfire smoke (PM2.5), not the ozone the rest of the country fixed. Same scale on every panel - the dashed line is the 2024 national average.

West PM2.5
16.1 9.4

PM2.5-driven; bad-air days improved across 2000-2024

South Ozone
20.4 2.4

Ozone-driven; bad-air days improved across 2000-2024

Northeast Ozone
11.9 1.8

Ozone-driven; bad-air days improved across 2000-2024

Midwest Ozone
8.5 1.7

Ozone-driven; bad-air days improved across 2000-2024

Small multiples on one shared vertical scale (0-32 days), so a taller line means dirtier air. The dashed line marks the 4-day national average for 2024; a region riding above it is still doing worse than the country as a whole.

What's in the bad air

Share of bad days by driver · 2024

A bad-air day is credited to whichever pollutant pushed the index highest. Two culprits do almost all the damage: summertime ozone (50.6%) and fine-particle PM2.5. Add coarse PM10 and particle pollution accounts for 48% of bad days; every other regulated pollutant, together, barely clears one percent.

Ozone: 50.6% of bad days Ozone 50.6% PM2.5: 45.3% of bad days PM2.5 45.3% PM10: 2.9% of bad days Other: 1.1% of bad days
Ozone 50.6%PM2.5 45.3%PM10 2.9%Other 1.1%

One 100%-wide bar; segment width = that pollutant's share of the nation's bad-air days, with a 2px gap between slots. Other folds the two trace gases: NO2 0.9% and CO 0.2%. Colour is always paired with a text label.

The driver flips by region

Ozone needs sun and traffic; particles come from fire, woodsmoke, and winter inversions. So which pollutant leads is really a map of geography and season - the same bad-air day means something different in a Los Angeles July and a Salt Lake January.

Northeast Ozone

Ozone-driven; bad-air days improved across 2000-2024

Midwest Ozone

Ozone-driven; bad-air days improved across 2000-2024

South Ozone

Ozone-driven; bad-air days improved across 2000-2024

West PM2.5

PM2.5-driven; bad-air days improved across 2000-2024

A year on the dial

Riverside County, California · 2024

Abstract counts become a calendar you can feel. Each arc is a run of days from Riverside County's 366 monitored days in 2024, coloured by the EPA's six official air-quality bands. Most of the ring is green and yellow - but 147 days crossed into unhealthy territory, and that slice is what this whole page is counting.

Good (AQI 0-50): 43 days, 12% Moderate (AQI 51-100): 176 days, 48% Unhealthy for Sensitive Groups (AQI 101-150): 80 days, 22% Unhealthy (AQI 151-200): 60 days, 16% Very Unhealthy (AQI 201-300): 7 days, 2% 147 bad-air days of 366
  • Good AQI 0-50 43 d
  • Moderate AQI 51-100 176 d
  • Unhealthy for Sensitive Groups AQI 101-150 80 d
  • Unhealthy AQI 151-200 60 d
  • Very Unhealthy AQI 201-300 7 d
  • Hazardous AQI 301+ 0 d

Each ring segment is proportional to that band's share of the year; the six colours are the EPA's canonical AQI scale, and every band carries its AQI range and day count in the key. The Riverside 2024 split is real: the county's actual Good/Moderate/USG/Unhealthy/Very Unhealthy/Hazardous day counts from the annual file.

The long tail

Monitored counties by bad-air days · 2024

Line up all 996 monitored counties by how many unhealthy days they logged and the inequality is stark. The median county had just 1 bad-air days all year. 705 of them had two or fewer. The burden lives in the thin tail on the right - the 42 counties with more than twenty bad days that the headlines are really about.

0 100 200 300 400 500 461 counties had 0 bad-air days 461 0 244 counties had 1-2 bad-air days 244 1-2 122 counties had 3-5 bad-air days 122 3-5 90 counties had 6-10 bad-air days 90 6-10 37 counties had 11-20 bad-air days 37 11-20 26 counties had 21-40 bad-air days 26 21-40 9 counties had 41-70 bad-air days 9 41-70 3 counties had 71-100 bad-air days 3 71-100 4 counties had 100+ bad-air days 4 100+ bad-air days in the year → median county

Each column counts the monitored counties whose 2024 bad-air-day total fell in that range; every count is labeled so the short tail stays readable. Columns deepen with severity on the same teal ramp as the atlas. Buckets are the real 2024 distribution, county by county.

Methodology

Notes on the Data

The figures on this page derive from EPA AirData - Annual AQI by County (2024 reporting year). EPA compiles a daily Air Quality Index for each monitored county from its criteria-pollutant network, then publishes one annual "AQI by County" row per county: how many days landed in each AQI band, the year's peak and median AQI, and how many days each pollutant was the one driving the index. A bad-air day on this page is any day with an AQI of 101 or higher - the point where the air is officially unhealthy for sensitive groups or worse.

What's real

Every figure on this page is a real EPA AirData aggregate, machine-ingested through this site's pipeline. The worst-county counts, the state means behind the atlas, the national pollutant shares, the per-county Good-day shares, the regional pollutant splits and their year-by-year recovery lines, the county-count distribution, and the Riverside dial all come straight from the annual files, spanning 2000-2024. The pipeline is documented and exact: src/lib/source.ts declares the real 18-column schema, and scripts/build-data.ts streams the EPA zips in data/raw/ into this same JSON - leaderboard, atlas, trend, scatter, histogram and all. We never present curated numbers as real.

What you're not seeing

AirData only covers counties with an EPA monitor - roughly a thousand of the country's ~3,200 counties. A blank county on the atlas means "no monitor," not "clean air." The AQI also credits each day to a single dominant pollutant, so a smoky day that was also ozone-heavy counts once. And a county's daily index reflects its worst monitor, not an average resident's exposure - people near a freeway or a fire breathe worse than the county line suggests.


Generated 2026-07-07 21:45 UTC

Source: EPA AirData - Annual AQI by County