Texas Air Quality
EPA monitor data through 2025 · Updated August 13, 2026 · Methods
In 2025, Texas recorded 135 days above an Air Quality Index of 100, the level at which EPA begins warning sensitive groups, out of 365 days with monitoring data. Most of those bad days were driven by ozone. Under the AQI rules that applied before 2013, the same air would have scored 106 days. Since 2000, unhealthy days are 6% lower on a consistent definition.
How to read a statewide figure. The Air Quality Index describes one place at one time. A statewide number is the worst monitor anywhere in the state on each day, so it answers “was the air unhealthy somewhere in Texas?” — not “what did a typical resident breathe?” In a large state with many monitors it will read high even if most of the state was clean. EPA publishes the AQI for metropolitan areas rather than states for exactly this reason. For what people actually breathed, use the metro pages below.
Unhealthy days by year, scored two ways
EPA changed what an AQI of 100 means in 2013 and again in 2015, so a count published before those changes is not comparable to one published after. Each panel below applies a single fixed rulebook to every year, so each is internally consistent. Why this matters.
Scored by today's rules
Scored by the pre-2013 rules
What 2025 looked like
| Air quality category | Days | Share of monitored days |
|---|---|---|
| Good | 3 | 1% |
| Moderate | 227 | 62% |
| Unhealthy for sensitive groups | 89 | 24% |
| Unhealthy or worse | 46 | 13% |
Median AQI 90 · 90th-percentile AQI 157 · worst day 2122. Scored under current rules.
What drove the unhealthy days
Of the 135 days above 100 in 2025, 65 were driven by ozone and 23 by fine particles, with 47 from another pollutant. The two behave differently. Ozone peaks on hot sunny afternoons; fine particles now spike mainly with wildfire smoke. In the eastern United States, ozone has stopped responding to emission cuts: nitrogen oxide emissions kept falling after 2014 and ambient ozone barely moved.
The unhealthy days in 2025
Every day the index passed 100, what it reached, and which pollutant drove it. 29 of these 135 would not have counted as unhealthy under the pre-2013 rules.
| Date | Peak AQI | Driven by | Pre-2013 score |
|---|---|---|---|
| Jan 4 | 158 | Coarse particles | 158 |
| Jan 7 | 283 | Coarse particles | 283 |
| Jan 17 | 168 | Coarse particles | 168 |
| Jan 20 | 118 | Coarse particles | 118 |
| Jan 30 | 183 | Coarse particles | 183 |
| Feb 1 | 140 | Ozone | 116 |
| Feb 3 | 104 | Fine particles | 93 (not unhealthy) |
| Feb 4 | 130 | Fine particles | 115 |
| Feb 6 | 102 | Fine particles | 100 (not unhealthy) |
| Feb 7 | 101 | Fine particles | 90 (not unhealthy) |
| Feb 8 | 103 | Fine particles | 92 (not unhealthy) |
| Feb 9 | 137 | Fine particles | 120 |
| Feb 10 | 156 | Coarse particles | 156 |
| Feb 11 | 633 | Coarse particles | 620 |
| Feb 12 | 161 | Fine particles | 153 |
| Feb 14 | 179 | Coarse particles | 179 |
| Feb 15 | 113 | Coarse particles | 113 |
| Feb 25 | 112 | Coarse particles | 112 |
| Feb 27 | 283 | Coarse particles | 283 |
| Mar 1 | 179 | Ozone | 154 |
| Mar 2 | 157 | Fine particles | 147 |
| Mar 3 | 1059 | Coarse particles | 1003 |
| Mar 4 | 383 | Coarse particles | 394 |
| Mar 5 | 208 | Fine particles | 202 |
| Mar 6 | 446 | Coarse particles | 451 |
| Mar 7 | 414 | Coarse particles | 423 |
| Mar 11 | 122 | Coarse particles | 122 |
| Mar 13 | 194 | Coarse particles | 194 |
| Mar 14 | 607 | Coarse particles | 596 |
| Mar 15 | 169 | Coarse particles | 169 |
| Mar 18 | 2122 | Coarse particles | 1959 |
| Mar 19 | 164 | Fine particles | 156 |
| Mar 25 | 136 | Ozone | 114 |
| Mar 26 | 157 | Coarse particles | 157 |
| Mar 27 | 116 | Coarse particles | 116 |
| Mar 28 | 106 | Coarse particles | 106 |
| Mar 29 | 223 | Coarse particles | 223 |
| Mar 30 | 117 | Fine particles | 104 |
| Mar 31 | 120 | Fine particles | 107 |
| Apr 1 | 1342 | Coarse particles | 1257 |
| Apr 2 | 121 | Coarse particles | 121 |
| Apr 3 | 112 | Fine particles | 99 (not unhealthy) |
| Apr 4 | 104 | Fine particles | 93 (not unhealthy) |
| Apr 8 | 101 | Ozone | 87 (not unhealthy) |
| Apr 9 | 126 | Ozone | 106 |
| Apr 10 | 133 | Ozone | 111 |
| Apr 11 | 115 | Ozone | 100 (not unhealthy) |
| Apr 12 | 133 | Ozone | 111 |
| Apr 16 | 123 | Coarse particles | 123 |
| Apr 17 | 710 | Coarse particles | 689 |
| Apr 18 | 762 | Coarse particles | 736 |
| Apr 19 | 123 | Coarse particles | 123 |
| Apr 27 | 1139 | Coarse particles | 1075 |
| Apr 28 | 101 | Coarse particles | 101 |
| May 2 | 158 | Fine particles | 151 |
| May 6 | 122 | Fine particles | 108 |
| May 7 | 139 | Fine particles | 121 |
| May 8 | 110 | Fine particles | 98 (not unhealthy) |
| May 11 | 129 | Ozone | 109 |
| May 12 | 140 | Ozone | 116 |
| May 13 | 403 | Coarse particles | 413 |
| May 14 | 189 | Coarse particles | 189 |
| May 15 | 115 | Ozone | 100 (not unhealthy) |
| May 18 | 117 | Coarse particles | 117 |
| May 19 | 135 | Fine particles | 125 |
| May 21 | 101 | Ozone | 87 (not unhealthy) |
| May 23 | 136 | Ozone | 114 |
| May 29 | 126 | Ozone | 106 |
| May 30 | 106 | Fine particles | 94 (not unhealthy) |
| Jun 2 | 126 | Ozone | 112 |
| Jun 9 | 121 | Coarse particles | 121 |
| Jun 10 | 117 | Coarse particles | 117 |
| Jun 15 | 240 | Coarse particles | 240 |
| Jun 16 | 150 | Ozone | 124 |
| Jun 17 | 103 | Coarse particles | 103 |
| Jul 9 | 105 | Ozone | 90 (not unhealthy) |
| Jul 10 | 159 | Coarse particles | 159 |
| Jul 11 | 151 | Coarse particles | 151 |
| Jul 12 | 278 | Coarse particles | 278 |
| Jul 15 | 101 | Ozone | 87 (not unhealthy) |
| Jul 24 | 161 | Ozone | 137 |
| Jul 26 | 101 | Ozone | 87 (not unhealthy) |
| Jul 29 | 172 | Ozone | 147 |
| Jul 30 | 156 | Ozone | 132 |
| Jul 31 | 143 | Ozone | 119 |
| Aug 1 | 119 | Ozone | 101 |
| Aug 3 | 159 | Ozone | 135 |
| Aug 4 | 161 | Ozone | 137 |
| Aug 5 | 122 | Ozone | 104 |
| Aug 6 | 108 | Ozone | 93 (not unhealthy) |
| Aug 8 | 115 | Ozone | 100 (not unhealthy) |
| Aug 13 | 143 | Ozone | 119 |
| Aug 18 | 122 | Ozone | 104 |
| Aug 19 | 147 | Ozone | 122 |
| Aug 20 | 161 | Ozone | 137 |
| Aug 21 | 129 | Ozone | 109 |
| Aug 24 | 112 | Ozone | 97 (not unhealthy) |
| Aug 25 | 147 | Ozone | 122 |
| Aug 26 | 140 | Ozone | 116 |
| Aug 27 | 115 | Ozone | 100 (not unhealthy) |
| Sep 3 | 108 | Ozone | 93 (not unhealthy) |
| Sep 4 | 122 | Ozone | 104 |
| Sep 5 | 126 | Ozone | 106 |
| Sep 9 | 140 | Ozone | 116 |
| Sep 10 | 154 | Ozone | 129 |
| Sep 11 | 179 | Ozone | 154 |
| Sep 12 | 147 | Ozone | 122 |
| Sep 13 | 151 | Ozone | 127 |
| Sep 14 | 115 | Ozone | 100 (not unhealthy) |
| Sep 15 | 154 | Ozone | 129 |
| Sep 16 | 156 | Ozone | 132 |
| Sep 17 | 140 | Ozone | 116 |
| Sep 18 | 136 | Ozone | 114 |
| Sep 19 | 136 | Ozone | 114 |
| Sep 27 | 112 | Ozone | 97 (not unhealthy) |
| Sep 28 | 108 | Ozone | 93 (not unhealthy) |
| Sep 29 | 129 | Ozone | 109 |
| Sep 30 | 129 | Ozone | 109 |
| Oct 1 | 151 | Ozone | 127 |
| Oct 2 | 147 | Ozone | 122 |
| Oct 3 | 101 | Ozone | 87 (not unhealthy) |
| Oct 9 | 106 | Fine particles | 94 (not unhealthy) |
| Oct 10 | 123 | Fine particles | 109 |
| Oct 11 | 112 | Ozone | 97 (not unhealthy) |
| Oct 12 | 101 | Ozone | 87 (not unhealthy) |
| Oct 13 | 133 | Ozone | 111 |
| Oct 14 | 143 | Ozone | 119 |
| Oct 15 | 143 | Ozone | 119 |
| Oct 16 | 108 | Ozone | 93 (not unhealthy) |
| Nov 9 | 132 | Coarse particles | 132 |
| Nov 15 | 106 | Coarse particles | 106 |
| Dec 4 | 109 | Fine particles | 96 (not unhealthy) |
| Dec 9 | 102 | Coarse particles | 102 |
| Dec 10 | 122 | Coarse particles | 122 |
| Dec 24 | 103 | Coarse particles | 103 |
Metro areas in Texas
Ranked by unhealthy days in their latest year. These are the geographies EPA actually reports the AQI for.
| Metro area | Unhealthy days | Pre-2013 rules | Main driver |
|---|---|---|---|
| El Paso, TX | 63 | 55 | fine particles |
| Houston-The Woodlands-Sugar Land, TX | 46 | 33 | ozone |
| Dallas-Fort Worth-Arlington, TX | 45 | 29 | ozone |
| San Antonio-New Braunfels, TX | 11 | 5 | ozone |
| Brownsville-Harlingen, TX | 8 | 5 | fine particles |
| Corpus Christi, TX | 8 | 4 | fine particles |
| Austin-Round Rock, TX | 6 | 3 | ozone |
| Laredo, TX | 5 | 1 | ozone |
| Killeen-Temple, TX | 4 | 1 | ozone |
| McAllen-Edinburg-Mission, TX | 4 | 2 | ozone |
| Waco, TX | 3 | 1 | ozone |
| Beaumont-Port Arthur, TX | 2 | 0 | ozone |
| Lubbock, TX | 2 | 2 | fine particles |
| Odessa, TX | 2 | 2 | fine particles |
| Corsicana, TX | 1 | 0 | fine particles |
| Kingsville, TX | 1 | 0 | fine particles |
| Longview, TX | 1 | 0 | ozone |
| Amarillo, TX | 0 | 0 | ozone and fine particles equally |
| Eagle Pass, TX | 0 | 0 | ozone and fine particles equally |
| Marshall, TX | 0 | 0 | ozone and fine particles equally |
| Tyler, TX | 0 | 0 | ozone and fine particles equally |
| Victoria, TX | 0 | 0 | ozone and fine particles equally |
The full series
| Year | Unhealthy days, current rules | Pre-2013 rules | Days monitored |
|---|---|---|---|
| 2000 | 135 | 113 | 366 |
| 2001 | 136 | 108 | 365 |
| 2002 | 140 | 116 | 365 |
| 2003 | 157 | 127 | 365 |
| 2004 | 118 | 101 | 366 |
| 2005 | 152 | 123 | 365 |
| 2006 | 150 | 119 | 365 |
| 2007 | 113 | 82 | 365 |
| 2008 | 102 | 72 | 366 |
| 2009 | 75 | 54 | 365 |
| 2010 | 84 | 60 | 365 |
| 2011 | 127 | 86 | 365 |
| 2012 | 116 | 70 | 366 |
| 2013 | 74 | 52 | 365 |
| 2014 | 52 | 25 | 365 |
| 2015 | 67 | 46 | 365 |
| 2016 | 51 | 25 | 366 |
| 2017 | 64 | 36 | 365 |
| 2018 | 70 | 43 | 365 |
| 2019 | 62 | 37 | 365 |
| 2020 | 71 | 35 | 366 |
| 2021 | 67 | 38 | 365 |
| 2022 | 104 | 63 | 365 |
| 2023 | 100 | 71 | 365 |
| 2024 | 167 | 126 | 366 |
| 2025 | 135 | 106 | 365 |
Sources
- EPA AirData daily monitor files, recomputed under both breakpoint tables. Methods and validation.
- Download the full dataset for every state and metro.