FlyerIntel Research
What Weather Costs Each Airport
Hourly weather at 64 airports, matched to every scheduled departure.
Published September 27, 2026 · Source period July 2023 – July 2026
Summary
17,864,400 scheduled departures from 64 airports, July 2023 to July 2026, were matched to the weather at the origin in the hour they were due to leave. 8.7% left in bad weather, and 4.4% of those were cancelled against 1.2% in normal conditions. Bad-weather hours held 26% of all cancellations. The cost does not end with the weather: the normal hours that follow cancelled more flights than usual too, and counting them adds about 49% to the extra cancellations of the bad hours themselves. The airlines’ weather code covers about 22% of the extra arrival delay in those hours.
Key findings
- Bad weather covered 8.7% of departures and 26% of cancellations. 4.4% of departures in it were cancelled against 1.2% in normal conditions, and 65.7% of the flights that operated arrived on time against 79.3%.
- Cancellations were highest in snow or ice hours (12.0%), heavy rain hours (8.8%) and thunderstorm hours (8.7%). IFR hours cancelled 3.9%. Thunderstorm hours had the lowest on-time rate for the flights that did leave, 35.4%.
- Comparing each bad-weather flight only with normal-weather flights from the same airport, calendar month and scheduled hour raises the expected cancellation rate from 0.96% to 1.04%, so season and time of day account for 2% of the raw gap. Against that, bad-weather flights were cancelled 4.44%, about 4.2 times the expected rate.
- The first normal hour after bad weather cancelled 3.7% of flights against 1.1% expected, and four to six hours after it was still 2.2% against 1.1%. Those hours carry about 25,551 extra cancellations beside the 52,124 in the bad hours.
- Each completed flight in bad weather carried 16.5 more coded delay minutes than normal weather predicts. The airlines’ weather code holds 22% of that extra; late-arriving aircraft holds 36%, air traffic holds 27% and airline holds 16%.
- The cost is uneven. At LGA (New York) bad weather cost 9.1 flights per thousand scheduled departures, and at TUS (Tucson) none that stands out; bad-weather hours held 45% of cancellations at MDW and 2% at SJU.
- Airlines coded 75% of the cancellations in bad-weather hours as extreme weather, but only 33% of everything they coded as weather was scheduled for a bad-weather hour at the origin. 17% was scheduled for a normal hour within six hours after one, and 50% for a quiet hour or one of marginal weather.
What counts as bad weather
Every hourly weather report for each airport is reduced to the worst conditions reported in that clock hour. The hour is bad weather when it is IFR or worse (IFR is ceiling 500 to 999 feet or visibility 1 to under 3 miles; LIFR is ceiling under 500 feet or visibility under 1 mile), or when any of these was reported: a thunderstorm reported at the airport; snow, snow grains, ice pellets, freezing rain or freezing drizzle; fog or freezing fog reported at the airport; heavy rain reported at the airport; wind of 25 knots or more, or gusts of 30 knots or more. Normal conditions are VFR (ceiling above 3,000 feet and visibility above 5 miles) with none of those. Marginal VFR, the hours with a ceiling or visibility just under those lines, is neither, and is left out of the comparison. The conditions overlap, because a thunderstorm can arrive under a low ceiling, so a departure is counted in every row its hour fits.
Condition by condition
| Weather at the airport | Departures | Share of all | Cancelled | Times normal | Arrived on time | Points against normal | Average departure delay |
|---|---|---|---|---|---|---|---|
| Normal conditions | 14,683,798 | 82.2% | 1.2% | — | 79.3% | — | 12.4 min |
| Any bad weather | 1,556,749 | 8.7% | 4.4% | 3.9 times | 65.7% | -13.7 | 23.7 min |
| MVFR | 1,769,223 | 9.9% | 2.1% | 1.9 times | 76.4% | -3.0 | 14.5 min |
| Low ceiling | 832,930 | 4.7% | 3.3% | 2.9 times | 73.7% | -5.7 | 16.3 min |
| IFR | 704,636 | 3.9% | 3.9% | 3.4 times | 69.8% | -9.6 | 19.9 min |
| Low visibility | 557,666 | 3.1% | 6.0% | 5.2 times | 63.0% | -16.3 | 25.8 min |
| High wind | 340,860 | 1.9% | 4.8% | 4.2 times | 63.1% | -16.2 | 26.9 min |
| LIFR | 321,674 | 1.8% | 5.4% | 4.7 times | 68.4% | -10.9 | 21.4 min |
| Thunderstorm | 214,359 | 1.2% | 8.7% | 7.6 times | 35.4% | -43.9 | 60.7 min |
| Snow or ice | 191,320 | 1.1% | 12.0% | 10.5 times | 44.4% | -34.9 | 30.2 min |
| Heavy rain | 103,326 | 0.6% | 8.8% | 7.6 times | 42.9% | -36.4 | 52.9 min |
| Fog | 91,318 | 0.5% | 6.7% | 5.8 times | 65.5% | -13.9 | 24.4 min |
All 64 covered airports together, July 2023 to July 2026. Cancelled is the share of scheduled departures; arrived on time is the share of flights that operated arriving under 15 minutes late. The rows overlap, so they do not add up to the total. A condition is shown when it holds at least 120 departures.
Season and hour
Bad weather is not spread evenly through the year or the day, and neither are cancellations: winter and evening flights are cancelled more often whatever the weather. Pooled over every airport, the quiet hours cancelled 0.96% of departures and bad-weather hours 4.44%. Holding each bad-weather flight to quiet-hour flights from the same airport, the same calendar month and the same scheduled hour raises the bar: those flights would have been cancelled 1.04% of the time in normal weather, and they were cancelled 4.44%. Season and time of day account for 2% of the raw gap, and what is left is what this report counts as the cost of the weather. Of the flights that operated, 65.6% arrived on time where 82.4% would in normal weather, and the average departure was 13.8 minutes later than it would have been (23.7 against 9.9 minutes). 1.3% of bad-weather flights sat in an airport, calendar month and hour with too few quiet-hour flights to build a comparison from, and are left out of these figures.
Bad weather and the hours after it, against normal weather
| Group | Departures | Cancelled | Expected cancelled | Times expected | Arrived on time | Expected on time | Average departure delay | Expected delay |
|---|---|---|---|---|---|---|---|---|
| Bad-weather hours | 1,537,000 | 4.4% | 1.0% | 4.2 times | 65.6% | 82.4% | 23.7 min | 9.9 min |
| One hour after | 284,364 | 3.7% | 1.1% | 3.3 times | 61.5% | 78.0% | 30.0 min | 13.6 min |
| Two hours after | 269,091 | 3.3% | 1.1% | 3.0 times | 65.3% | 78.3% | 26.6 min | 13.4 min |
| Three hours after | 255,710 | 2.9% | 1.1% | 2.7 times | 68.0% | 78.3% | 23.6 min | 13.3 min |
| Four to six hours after | 676,079 | 2.2% | 1.1% | 2.1 times | 70.8% | 78.3% | 20.4 min | 13.3 min |
Expected figures are what the quiet-hour flights of the same airport, calendar month and scheduled hour did, applied to the group’s own flights, stratum by stratum. A stratum is used when it holds at least 120 quiet-hour flights. The hours after bad weather are hours of normal weather whose most recent bad-weather hour at that airport, within the previous six hours, was that far back; a departure counts once, by the nearest.
After the weather passes
A flight scheduled for an hour of normal weather can still feel the weather that came before it: crews and aircraft are out of place, and an airport that cancelled a bank of flights an hour ago is rebuilding its schedule. Sorting the normal hours by how long it had been since the last bad-weather hour at the same airport, the excess fades with each hour but has not gone by the end of the window. In the first hour after, 3.7% of departures were cancelled against 1.1% expected, and 61.5% of those that flew arrived on time against 78.0%. Over the six hours that follow, the normal hours carry about 25,551 more cancellations than the quiet hours would have produced, on top of about 52,124 in the bad-weather hours. Counting only the bad hours leaves out 49% of what it counts.
Where the delay is filed
The DOT asks airlines to file every arrival delay of 15 minutes or more under one of five causes: extreme weather, the air traffic system, a late-arriving aircraft, the airline, or security. The DOT’s definitions file non-extreme weather under air traffic, which is one reason the weather code is small. In bad-weather hours, the coded minutes per completed flight were 28.3 against 11.8 in the same airport, calendar month and hour in normal weather, 16.5 more. Of that extra, 22% was filed as extreme weather, and late-arriving aircraft took 36%, air traffic took 27% and airline took 16%. A late-arriving aircraft is the previous flight of the same airframe arriving late, so part of that share can be an earlier weather delay passed on to the next flight.
Coded delay minutes per completed flight in bad weather
| Filed as | In bad weather | Expected in normal weather | Extra | Share of the extra |
|---|---|---|---|---|
| Late-arriving aircraft | 10.3 | 4.4 | 5.9 | 36% |
| Air traffic | 6.8 | 2.4 | 4.4 | 27% |
| Extreme weather | 4.0 | 0.4 | 3.6 | 22% |
| Airline | 7.2 | 4.5 | 2.7 | 16% |
| Security | 0.0 | 0.0 | 0.0 | <1% |
Minutes are those the DOT files under each cause, summed over the flights of bad-weather hours and divided by their 1,464,069 completed flights; a flight less than 15 minutes late carries none. Expected is the same figure for the quiet-hour flights of the same airport, calendar month and hour.
Airport by airport
The cost is not the same everywhere. Counting the cancellations in bad-weather hours beyond what normal weather predicts for the same flights, LGA (New York) lost 9.1 flights per thousand scheduled departures to it, and TUS (Tucson) none that stands out. At 15 of the 61 airports listed the extra is under half a flight per thousand. Bad-weather hours held 45% of the cancellations at MDW and 2% at SJU. The condition named in the last column is the one with the highest cancellation rate at that airport among those with enough departures to name.
Bad weather at each covered airport
| Airport | City | Departures in bad weather | Cancelled in bad weather | Expected at normal-weather rate | Extra cancellations per thousand departures | Share of all cancellations | Worst condition |
|---|---|---|---|---|---|---|---|
| LGA | New York | 56,339 (12.4%) | 8.98% | 1.58% | 9.1 | 34% | Thunderstorm |
| EWR | Newark | 51,613 (13.3%) | 6.89% | 1.39% | 7.3 | 32% | Fog |
| DCA | Washington | 41,449 (9.5%) | 9.28% | 1.62% | 7.3 | 30% | Snow or ice |
| DFW | Dallas–Fort Worth | 72,822 (7.6%) | 10.41% | 1.01% | 7.1 | 35% | Snow or ice |
| JFK | New York | 46,497 (13.2%) | 6.03% | 1.08% | 6.5 | 32% | Thunderstorm |
| ORD | Chicago | 104,455 (11.0%) | 6.53% | 1.00% | 6.1 | 39% | Thunderstorm |
| BOS | Boston | 60,840 (13.8%) | 5.30% | 1.22% | 5.6 | 37% | Snow or ice |
| PHL | Philadelphia | 32,038 (10.5%) | 6.48% | 1.20% | 5.5 | 32% | Thunderstorm |
| MDW | Chicago | 26,598 (11.1%) | 5.01% | 0.89% | 4.6 | 45% | Fog |
| DAL | Dallas | 15,025 (6.7%) | 7.15% | 0.66% | 4.3 | 39% | Snow or ice |
| CLT | Charlotte | 55,311 (9.0%) | 5.69% | 1.00% | 4.2 | 31% | Snow or ice |
| BWI | Baltimore | 30,451 (10.2%) | 4.71% | 0.74% | 4.0 | 34% | Snow or ice |
| MKE | Milwaukee | 11,113 (12.7%) | 3.83% | 1.34% | 3.0 | 29% | Fog |
| PIT | Pittsburgh | 19,127 (14.4%) | 3.16% | 1.08% | 2.9 | 28% | Fog |
| CLE | Cleveland | 17,314 (13.7%) | 3.73% | 1.51% | 2.9 | 27% | Fog |
| ATL | Atlanta | 105,854 (10.5%) | 3.42% | 0.84% | 2.7 | 27% | Snow or ice |
| TPA | Tampa | 17,505 (7.2%) | 5.04% | 1.49% | 2.6 | 20% | High wind |
| IAD | Washington | 17,867 (10.5%) | 3.27% | 0.86% | 2.5 | 26% | Snow or ice |
| RDU | Raleigh–Durham | 16,672 (9.3%) | 4.04% | 1.37% | 2.5 | 21% | High wind |
| CMH | Columbus | 14,268 (10.7%) | 3.45% | 1.12% | 2.5 | 23% | Fog |
| IAH | Houston | 28,922 (8.0%) | 4.12% | 1.09% | 2.4 | 23% | High wind |
| OMA | Omaha | 8,317 (11.1%) | 3.15% | 0.98% | 2.4 | 29% | Snow or ice |
| BNA | Nashville | 20,643 (6.5%) | 4.67% | 1.03% | 2.3 | 22% | Snow or ice |
| STL | St. Louis | 18,612 (9.4%) | 3.39% | 0.89% | 2.3 | 27% | Snow or ice |
| IND | Indianapolis | 17,460 (11.9%) | 2.95% | 1.09% | 2.2 | 22% | Fog |
| BUF | Buffalo | 12,365 (18.9%) | 3.10% | 0.96% | 2.2 | 41% | Snow or ice |
| DEN | Denver | 92,610 (9.6%) | 2.83% | 0.64% | 2.1 | 30% | Fog |
| JAX | Jacksonville | 8,338 (9.2%) | 3.83% | 1.53% | 2.1 | 20% | High wind |
| MEM | Memphis | 5,899 (8.1%) | 3.97% | 1.33% | 2.0 | 19% | IFR |
| BUR | Burbank | 4,529 (4.8%) | 4.95% | 0.78% | 2.0 | 19% | LIFR |
| RSW | Fort Myers | 6,927 (6.5%) | 4.60% | 1.46% | 2.0 | 16% | High wind |
| MCI | Kansas City | 16,876 (11.1%) | 2.99% | 1.23% | 1.9 | 24% | Snow or ice |
| MSP | Minneapolis | 42,174 (11.4%) | 2.36% | 0.73% | 1.9 | 29% | Snow or ice |
| MCO | Orlando | 33,297 (6.7%) | 4.04% | 1.28% | 1.8 | 18% | High wind |
| DTW | Detroit | 53,809 (13.9%) | 2.45% | 1.15% | 1.8 | 27% | Fog |
| SAN | San Diego | 19,707 (6.6%) | 3.47% | 0.96% | 1.7 | 20% | Fog |
| HOU | Houston | 13,363 (7.8%) | 2.90% | 0.84% | 1.6 | 21% | High wind |
| CHS | Charleston | 5,105 (6.6%) | 4.04% | 1.72% | 1.5 | 13% | High wind |
| MIA | Miami | 15,746 (4.6%) | 4.48% | 1.42% | 1.4 | 14% | Fog |
| MSY | New Orleans | 12,426 (8.1%) | 3.15% | 1.46% | 1.4 | 17% | Fog |
| FLL | Fort Lauderdale | 13,418 (4.8%) | 3.30% | 1.63% | 0.8 | 9% | LIFR |
| MYR | Myrtle Beach | 2,891 (6.4%) | 3.26% | 1.81% | 0.7 | 11% | LIFR |
| SAT | San Antonio | 10,996 (8.6%) | 1.67% | 0.96% | 0.6 | 13% | Thunderstorm |
| SNA | Santa Ana | 7,919 (5.8%) | 1.90% | 0.89% | 0.6 | 11% | Fog |
| SFO | San Francisco | 36,006 (8.3%) | 1.53% | 0.87% | 0.6 | 13% | Heavy rain |
| PDX | Portland | 11,286 (6.0%) | 1.69% | 0.81% | 0.5 | 12% | High wind |
| AUS | Austin | 22,580 (8.3%) | 1.58% | 1.02% | 0.5 | 13% | Heavy rain |
| ABQ | Albuquerque | 4,134 (5.4%) | 1.63% | 0.78% | 0.4 | 11% | High wind |
| ONT | Ontario | 4,096 (5.1%) | 1.54% | 0.78% | 0.4 | 9% | High wind |
| HNL | Honolulu | 4,177 (2.2%) | 2.27% | 0.90% | 0.3 | 6% | Heavy rain |
| LAX | Los Angeles | 60,639 (10.2%) | 1.00% | 0.71% | 0.3 | 13% | Heavy rain |
| ANC | Anchorage | 6,631 (11.3%) | 1.68% | 1.26% | 0.3 | 19% | Fog |
| LAS | Las Vegas | 14,522 (2.6%) | 2.00% | 0.84% | 0.3 | 6% | Thunderstorm |
| SMF | Sacramento | 12,018 (7.0%) | 0.99% | 0.56% | 0.3 | 11% | High wind |
| SEA | Seattle | 43,416 (8.5%) | 1.50% | 1.18% | 0.3 | 15% | Snow or ice |
| OAK | Oakland | 10,366 (8.8%) | 1.01% | 0.79% | 0.2 | 13% | LIFR |
| PHX | Phoenix | 6,215 (1.0%) | 2.51% | 0.74% | 0.2 | 4% | Thunderstorm |
| SJC | San Jose | 4,322 (2.9%) | 0.99% | 0.61% | 0.1 | 5% | LIFR |
| SJU | San Juan | 2,333 (2.2%) | 1.44% | 1.03% | 0.1 | 2% | Heavy rain |
| SLC | Salt Lake City | 20,014 (5.6%) | 0.59% | 0.63% | 0.0 | 6% | Snow or ice |
| TUS | Tucson | 1,151 (1.9%) | 0.46% | 0.75% | -0.1 | — | — |
Airports with at least 500 departures in bad weather, 61 of 64, ordered by the extra cancellations per thousand departures. The cancelled and expected rates are over the bad-weather departures that could be matched to quiet hours of the same airport, calendar month and hour, and expected is the rate those hours predict. A share of all cancellations is shown for airports with at least 500 cancelled departures.
What the airline codes say
Every cancellation in the DOT data carries a reason code filed by the airline: its own operation, extreme weather, the air traffic system or security. In bad-weather hours, 75% of cancellations were coded extreme weather, 12% air traffic and 13% the airline. In quiet hours, 50% were still coded weather. Of all 157,862 cancellations coded as weather at these airports, 33% were scheduled for a bad-weather hour at the origin and 17% for a normal hour within six hours after one. The other 50% were scheduled for a quiet hour, which is normal weather with none of the six before it bad, or for an hour of marginal weather. The code names the weather that stopped the flight, and that can be at the destination, along the route, or a storm that passed the day before. The hourly weather here is the origin airport’s alone, so the two are different measures and neither replaces the other.
Cancellations by reason code and the weather in the scheduled hour
| Weather at the origin | Cancelled | Extreme weather | Air traffic | Airline |
|---|---|---|---|---|
| Bad-weather hours | 69,195 | 74.5% | 12.4% | 13.1% |
| Normal hours after bad weather | 42,012 | 63.8% | 17.0% | 19.1% |
| Quiet hours | 126,929 | 49.8% | 14.8% | 35.3% |
| Marginal hours | 27,005 | 60.1% | 15.6% | 24.3% |
Shares are of each row’s cancelled flights that carry a reason code. Security is at most 0.1% of any row and is left out. The normal hours after bad weather are the six hours that follow one.
What this does not show
The weather is the origin airport’s, in the hour the flight was scheduled to leave. It is not the weather at the destination or on the way, and it is not the weather that arrived after the scheduled hour, so a flight cancelled for a storm at the other end, or cancelled a day ahead for one that had not yet arrived, sits in the normal-weather rows. The comparison is between hours of weather and hours without it at the same airport, calendar month and hour, not between what happened and what would have happened without the weather, and days with bad weather also differ in ways this does not see: an airline with a bad day, a runway closure, a ground stop for another reason. Nothing here says which flights the weather cancelled, and no single flight’s cancellation is attributed to it. 20,189 of 17,884,589 scheduled departures (0.1%) are not in the figures: they left in an hour with no weather report, or at a scheduled time the flight records cannot place in one hour.
Methodology
Calculated by FlyerIntel from 21,708,321 individual flight records in the US Department of Transportation Bureau of Transportation Statistics Reporting Carrier On-Time Performance dataset, covering July 2023 through July 2026. Following BTS methodology, a flight counts as delayed when it arrives 15 or more minutes after its scheduled arrival time. Cancelled and diverted flights have no arrival time and are excluded from on-time rates rather than counted as late; cancellation rates are reported separately. Full definitions are published at /methodology/. This report also uses hourly surface weather for each covered airport, 38 UTC months from 2023-07 to 2026-08, from the Iowa Environmental Mesonet’s archive of METAR and SPECI reports, which republishes the National Weather Service stream. An airport’s reports are reduced to one row per UTC clock hour holding the lowest ceiling, lowest visibility, strongest wind and gust, and every present-weather group reported in that hour. Each flight is matched to the row for its origin in its scheduled departure hour: the scheduled local hour in the flight record is turned into an instant using the airport’s own time zone and the daylight-saving rules of that date, and cut to the UTC hour. Flights whose scheduled time is written as midnight, which does not say which midnight, and flights in a local hour that does not exist or happens twice when the clocks change are left out, as are flights in an hour with no report. Each remaining flight is in one group: bad weather, normal weather with a bad-weather hour at that airport six hours or fewer before it (by the nearest one), normal weather with none, or marginal. Expected figures come from flights of the same airport, calendar month and scheduled local hour in the quiet group, when that group holds at least 120 flights, and are summed over strata, never averaged as rates. A rate is printed for a group of at least 120 departures, and an airport is listed with at least 500 departures in bad weather. The condition rows are read from the airport_weather_performance table, which the site’s airport pages also read.
Limitations
The source dataset covers scheduled domestic flights operated by carriers above the DOT reporting threshold; smaller carriers and international flights are not included. Flights sold under a mainline brand but flown by a regional carrier are attributed to the operating carrier, which is how the DOT records them. Past performance describes what has happened and is not a prediction about any individual flight. The weather archive is provided as collected, with very little quality control, and a missing value cannot always be told from an unreported one. An hour’s weather is the worst any report in that hour gave, so an hour with several special reports is more likely to show a brief storm than one with a single report. The figures describe hours of weather, not causes: they show what flying was like in them, and comparing with the same airport, calendar month and hour removes season and time of day but not everything else that differs on a bad-weather day. A cancellation carries the weather at its scheduled departure hour, even when it was decided the day before.
Sources
- FlyerIntel analysis — FlyerIntel · source
- Iowa Environmental Mesonet ASOS/METAR archive — Iowa Environmental Mesonet, Iowa State University · source
- Reporting Carrier On-Time Performance — US Department of Transportation, Bureau of Transportation Statistics · source
Full FlyerIntel methodology · Report a problem with this analysis