Flight Demand Atlas
US + Puerto Rico · BTS DB1B & T-100 · 1993–2026

Flight Demand Atlas

Where Americans and Puerto Ricans fly, where airlines put seats, and what drives both, from 33 years of US flight data.

Traffic: BTS DB1B 2024 · Service: BTS T-100 Mar–May 2026 + airline news
The map

The top 10% of markets fly 4× as often per resident as the bottom 10%

Demand = trips per resident by airport market. Supply = departing seats.

Source: BTS DB1B & T-100; Census ACS 2015–19; catchments by the author.
Change over time · 1993–2025

Flying grew faster than income, while real fares fell 39%

All series indexed to 1995 = 100.
Details
O&D trips are one-way journeys from true origin to true destination; seats include international flights touching the US.

Trips grew 82% since 1995 while real fares fell 39%

Hover for values. Shaded years are shocks.

Source: BTS DB1B & T-100; World Bank GDP; BLS CPI-U. Years.

Trips rise about 2% for every 1% of income growth

Source: BTS DB1B; World Bank GDP; BLS CPI-U. Annual changes, 1994–2019.
What drives demand · 217 airport catchments, 2019

Household income is the strongest outside predictor of how often a place flies

Each dot is an airport market and the people around it. Read the pattern, not single markets.
Details
Catchments share people between nearby airports with a Huff model (seats ÷ distance², set in advance, not fitted). Trips are round-trip equivalents per resident per year, domestic only, counted by where the ticket starts. The red team showed that market-level values move a lot with the catchment settings and with one-way tickets.

Richer places fly more, and San Juan flies more than its income predicts

Source: BTS DB1B 2019; Census ACS 2015–19 (PR: 2013–17).

Seats per resident track trips almost one-to-one (ρ = 0.92)

Rank correlation between every pair of variables. Dot = not significant at 5%.

Source: BTS DB1B & T-100 2019; Census ACS 2015–19.

Income, fares and visitor mix explain about half the gap between places

Source: BTS DB1B & T-100 2019; Census ACS 2015–19.

Flying rises with income and levels off near 3.5 trips per person

Source: Airbus (2019) and Maddison Project via Our World in Data.
City pairs · gravity model · 15,576 pairs among 177 markets

Population, income and distance explain most route traffic

A gravity model predicts each city pair's traffic from population, income and distance. It explains 83–93% of traffic on pairs it never saw.
Details
Poisson gravity model (PPML) on 2019 O&D passengers. Population and distance alone explain 83% out of sample; adding income, geography and visitor share takes it to 93%, but visitor share is built from the same ticket data, so 88% without it is the cleaner figure. Pairs share cities, so true confidence intervals are about twice as wide as a simple robust error suggests.

The model lands within 2× on 79% of busy routes

Log scale. The band is within a factor of 2. Magenta = Puerto Rico pairs.

Source: BTS DB1B 2019; Census ACS 2015–19; model by the author.

Demand peaks near 1,000 km and fades with distance

Source: BTS DB1B 2019; model by the author.

The model explains routes well but cannot forecast new ones

Three tests. Higher is better in each; the dashed line in the third panel is a coin flip.

Source: BTS DB1B & T-100 2018–2025; model by the author.

Why the missing-routes list was withdrawn

Version 1 listed the biggest city pairs with no nonstop. A network planner and an econometrician checked it independently.

  • 395 of the 617 listed pairs had nonstop seats in 2024 (seasonal service, e.g. Fort Myers–Los Angeles for 7 months on 5 airlines).
  • 64 were flown in 2019 and dropped: airlines tested them and left.
  • Many cannot be operated: a daily A320 from Cedar Rapids to New York would not fill, and Los Angeles–San Juan is longer than any mainland pair in the data.
  • The "90% range" was a band on the model's average, about ±6%, not a range for a single route (about ±1.9×).

When a nonstop starts, traffic jumps

Traffic jumps when a nonstop starts, but much of it is cheaper fares and passengers moving from nearby airports.
Details
Pairs that went from no nonstop to a regular nonstop, vs pairs that stayed without one (2018→19, 2022→23, 2023→24). Launch routes cut fares 19–28%, traffic shifts from nearby airports (region-wide growth was about +10%), and 2018–19 entrants were already growing faster.
Source: BTS DB1B & T-100, 2018–2024.
Puerto Rico · SJU · BQN · PSE

Puerto Rico's air market boomed, and the diaspora shapes where it flies

Why does Puerto Rico fly less? Our best guess

Ranked by how much we think each factor matters. ↓ holds PR back, ↑ pushes it up.

Half of mainland trips are under 1,500 km; Puerto Rico has none

Source: BTS DB1B 2024, city pairs with catchments ≥ 100k.
Puerto Rico
Best guess: Puerto Rico is behind mainly because it is poorer and has no short domestic trips; for its income, it already flies more than the poorest mainland places.

PR seats hit records in 2024–25, led by Frontier

Domestic scheduled flights, stacked by airport. Marked: Hurricane María (Sep 2017) and COVID (Apr 2020).

Source: BTS T-100, scheduled domestic seats, Jan 2015–May 2026.

Diaspora explains the excess

Source: BTS DB1B 2019; ACS 2016–20 Puerto Rican population by metro.

13 of Puerto Rico's top 20 routes carry more traffic than predicted

Source: BTS DB1B 2024; model by the author.
Puerto Rico routes · SJU · BQN · PSE · traffic 2024 · service May 2026

Where Puerto Rico's demand is, and which routes run full

Fuller routes cost more, but still less than the mainland

Source: BTS DB1B & T-100, 2024.

Los Angeles is San Juan's biggest market with no nonstop

O&D passengers per day in 2024, both directions. Label = nonstop service from SJU in Mar–May 2026 (BTS T-100), plus announced changes.

Source: BTS DB1B 2024; BTS T-100 Mar–May 2026; airline news, Oct 2026.
Puerto Rico · how to climb · peers, Hawaii, levers

Income and tourism set Puerto Rico's ceiling; new nonstops are the quick wins

How PR compares with peers, what the gap is made of, and what would lift it for Puerto Ricans.

Rich island economies fly 1.4–10× more per person than Puerto Rico

Air trips per person, 2019. GDP per person at right.
Source: Airbus (2019) via Our World in Data; Maddison Project GDP (2018). Iceland (14.4) left off the scale.

Income and tourism move the most trips; nonstops are the fastest win

Extra PR domestic trips per year, millions. Range = low to high estimate.
Source: BTS DB1B 2024; models on this page. Estimates, not forecasts.

Hawaii is twice as far yet flies 3× more: the difference is income, not network

Puerto Rico vs Hawaii, the other US island market.
Source: BTS DB1B 2019 & 2024; BTS T-100 2025 and Mar–May 2026; Census ACS 2015–19 (PR 2013–17).

Six moves, from months to years

What would lift Puerto Rico's air connections, and what Puerto Ricans get from each.
Impact ranges are rough.
Details
Nonstop launches: the +76% traffic jump measured on this page (CI +56% to +99%) overstates new demand, because launches cut fares and pull passengers from nearby airports, so the low case uses +20%. Income: resident trips (38% of PR trips) × elasticity 1.4–2.1 for a 10% rise. Visitors: 62% of PR trips start off the island, so +10% visitors adds about 0.7 M trips. The Caribbean connector is not estimated because BTS does not cover international flights. Aerostar operates SJU under a lease from the PR Ports Authority.
Tables

Puerto Rico's routes, and the scorecard

New York and Orlando each carry over 4,000 passengers a day

Routes with 100+ passengers a day. "vs comparable" = fare vs mainland routes of the same distance and size.
Details
Status now: tight = load factor ≥ 88%, fewer than 1.25 seats per local passenger and at least 5 flights a week; loose = load factor under 80%; hub-fed = full planes, but more than 1.8 seats per local passenger because connections fill the rest; thin = nonstop, but under 5 flights a week; paused = flew in 2024–25 but not in Mar–May 2026; seasonal = flies only part of the year.
Source: BTS DB1B 2024 (traffic, fares); BTS T-100 Jun 2025–May 2026 (service, load factor).
Domestic only. Service checked through May 2026.
Details
Domestic only: San Juan's international routes (Dominican Republic, Caribbean, Europe, Latin America; 12.5% of SJU passengers in 2025) are not in BTS data. Traffic is counted in both directions, so a route's demand mixes islanders, the diaspora and visitors. Load factor includes connecting passengers. Service status is from BTS T-100 through May 2026 (latest available) and was checked against airline announcements in Oct 2026; Frontier paused Cleveland–San Juan on 5 Jan 2026 and plans to resume it on 17 Dec 2026.

Three of seven hypotheses held up; the gap layer failed its gate

Set before the data came in; verdicts revised after an independent review.
Money & costs · 2026 USD

Low fares save Puerto Rico's flyers about $460 M a year

What PR domestic tickets cost, and what travelers keep because PR fares sit below comparable mainland routes.

Cost
$2.63–2.64 B
per year, paid for PR domestic tickets (2023–2024 traffic)
Savings
$290–540 M
per year, vs paying comparable mainland fares (10–17% discount)
Benefit ÷ cost
$0.11–0.20
saved per $1 spent on tickets
Who pays
Travelers
Islanders, the diaspora and visitors; BTS data can't split them

Even the low case saves travelers about $290 M a year

Scenarios for the PR fare discount vs comparable mainland routes. 2026 USD.
ScenarioFare discountSaved per yearSaved per one-way ticket
Low10%$292 M$26
Base15%$464 M$41
High17%$538 M$47
Spend = O&D passengers × average fare on all PR city pairs.
Details
BTS DB1B 2023 and 2024 (10% ticket sample × 10), inflated to 2026 USD with CPI-U (Jan–Aug 2026 average). Average one-way fare ≈ $231. The discount comes from the fare models on this page (10% in the yearly model, 15% traffic-weighted in the route benchmark, 17% at the top of the range across specifications). The comparison is "mainland-level pricing", not a real alternative a traveler could buy. It ignores peak season: on the fullest routes, peak-quarter fares run up to 60% above off-peak.
Source: BTS DB1B 2023–2024; BLS CPI-U; fare model by the author.
How I built it

How I built it

The problemFind where demand and seats don't match, starting with Puerto Rico.

I wanted a map that shows where people want to fly and where airlines actually put seats, so I could spot places that are underserved, starting with Puerto Rico, where tickets often feel expensive. Before drawing anything I needed to know what drives demand in the first place, so I wrote down seven hypotheses and one gate in advance: if the model could not beat a naive forecast on data it had never seen, the "gap" layer would not go on the map.

The dataPublic US flight data, 1993–2026, checked against official totals within 1%.

Everything here is public. The US Department of Transportation publishes a 10% sample of domestic airline tickets every quarter since 1993 (DB1B) and a monthly count of every scheduled flight segment (T-100). Both are US government works in the public domain. The BTS website blocked my build machine, so I pulled the same tables from two public GitHub mirrors and checked them against BTS press releases: 2019 scheduled domestic passengers came out at 818.7 million against 811.4 million reported, and December 2024 at 72.4 million against 72.1 million. County population and income come from the Census ACS 2015–19, Puerto Rico's municipio income from ACS 2013–17, and the country comparison from Airbus and the Maddison Project through Our World in Data.

Turning tickets into demandEach county's people are shared among nearby airports.

An airport has no residents, so I built catchments. Each county's people are shared among nearby airport markets in proportion to seats divided by distance squared, a Huff model whose settings I fixed before looking at results. Airports less than 60 km apart, like Orlando and Sanford, count as one market. A trip belongs to the place where its ticket starts, which matters later: one-way tickets make leisure places look busier than they are.

Models and validation93% explained on unseen routes; it could not predict new ones.

For places, I regressed trips per resident on income, population, distance to a large hub, fares and visitor share, with robust errors and checks for collinearity. For routes, I fit a Poisson gravity model on 15,576 city pairs and tested it three ways. On pairs it never saw it explains 93% of the variation, every year from 2015 to 2024. As a next-year forecast it loses to "same as last year". And its "gap" did not predict where airlines launched routes in 2025 (AUC 0.48, a coin flip). That last test failed the gate.

When the first version was done, six independent reviewers, each playing a different specialist (a network planner and an econometrician among them), tried to break it without seeing my reasoning. I changed the page because of what they found.

What the AI didClaude wrote the code and ran the tests; I set the questions and checked the answers.

I worked with Claude, Anthropic's AI model, as my analyst. It found the data mirrors, wrote the Python pipeline (pandas, statsmodels, scipy) and the D3 charts, ran the tests and ran the review as separate agents. I chose the questions, the scope (the US plus Puerto Rico), what counted as a pass or a fail, and what this page should say, and I checked the results against what I know from flying in and out of San Juan.

What failedFive mistakes, found and fixed in the open.
  • The gap layer. My headline idea was to color places by actual ÷ predicted demand. It mostly restated whether a nonstop already existed, and it did not predict new routes. I withdrew it.
  • The missing-routes list. 395 of the 617 "missing" pairs already had seasonal nonstops.
  • Puerto Rico's income claim. Every PR market earns less than the poorest mainland one, so "PR flies twice what its income predicts" was an extrapolation. I dropped it.
  • A circular calibration. The best-fitting catchment setting used the outcome itself, so I went back to the fixed setting.
  • A stale fact. One version listed Cleveland–San Juan as a nonstop because it used 2024 schedules; Frontier paused it in January 2026. Every route's status is now checked against the latest T-100 month (May 2026) and airline news.
What's nextInternational traffic and two untested guesses.

San Juan's international traffic (12.5% of SJU passengers in 2025) is not in BTS data, and two of my guesses about why Puerto Rico flies less, an older population and less business travel, are still untested. Those come next.

Full method notes

Data

    Choices and limits

      Sources & licenses

      Sources and licenses

      11 sourcesall public or open-licensed2 need attribution1 to check: AirbusShow table
      SourceUsed forData dateLicenseCommercial use
      BTS DB1B (via AirportData mirror)Trips, fares, routes1993–2025US government, public domain; mirror license not statedYes
      BTS T-100 (via ADAN8888 and AirportData)Seats, load factor, service1990–May 2026US government, public domain; mirror license not statedYes
      Census ACS 2015–19 and 2013–17 (via OpenIntro usdata, JHU CSSE lookup)County and municipio population and income2013–2019Census: public domain; JHU lookup: CC BY 4.0Yes, with attribution
      Census county boundaries (Plotly GeoJSON)Maps2010Public domainYes
      OurAirportsAirport locations2026Public domainYes
      Our World in Data: Airbus trips per capita; Maddison Project GDPCountry S-curve2018–2019OWID CC BY 4.0; Maddison CC BY 4.0; Airbus figure third-partyCheck Airbus terms
      BLS CPI-U; World Bank GDP (via datasets on GitHub)Inflation, real income1990–Aug 2026Public domain / ODC-PDDLYes
      Wikipedia: PR municipio income, Stateside Puerto RicansPR income, diaspora by metroACS 2013–20CC BY-SA 4.0Yes, with attribution and share-alike
      PR Planning Board; CUNY CentroGross Product; population changeFY2019; 2010–2020Public figures, citedYes, cited
      Metro PR, Deep ArrivalRoute pauses and returnsNov 2025–Aug 2026News, cited as factsFacts only
      D3 7.9.0, topojson-client 3.1.0, d3-composite-projections 1.4.0; Google FontsCharts, maps, type—ISC, ISC, BSD-3-Clause; SIL OFLYes
      Notice. Student analysis from public samples. Not for airline route planning, investment or business decisions. Estimates carry ranges; treat single routes with care.