live market + reliability data

Connectivity Cost Index

Is satellite internet's pricing premium justified by its performance, or is it a connectivity tax paid for coverage rather than speed?

v4.2 · market, real-world, affordability, and BEAD policy layers for all 50 states + DC: state-by-state provider pricing, FCC 100/20 check, NTIA-verified BEAD awards, premium, income, and subsidy maps, state lookup and compare, plain-English FAQ
Cost-per-Mbps computed against FCC's real reported median speeds per technology per state, not marketing "up to" figures. Personal reliability layer is currently collecting data (see § personal reliability layer, below).
Part 1The short answer

The headline numbers first, then the question this project set out to test.

At a glance

Starlink vs. licensed 5G home
51/51
cheaper per Mbps in every state + DC; margin ranges 2.1× (ID) to 25.5× (AK)
LEO satellite providers
1
unique provider in all 50 states + DC
Cheapest technology
Fiber
$0.004–0.069/Mbps where available
Where satellite loses
4 states
DE, RI, HI, NV: DSL or unlicensed fixed wireless edge out LEO satellite
BEAD $ per funded location, satellite vs. fiber
5.6×
real committed dollars, not a proxy: $701–1,138/location (satellite) vs. $6,420.70 (fiber), from actual project-level BEAD data
Satellite premium where wired exists
8.9×
median: Starlink's cost per Mbps over the cheapest fiber or cable option, from 4.3× (NM) to 49× (CT, WV). See the state map.

The question

The short answer, in four results
Satellite wins

Beats 5G home internet in every state

51/51

Starlink vs. Verizon 5G Home / T-Mobile Home Internet on cost per Mbps. Margin runs 2.1× (ID) to 25.5× (AK).

Satellite wins

Low orbit beats old high-orbit satellite

51/51

Starlink undercuts Viasat/HughesNet-style GSO service on cost per Mbps everywhere, before even counting latency.

Satellite loses

Wired internet wins wherever it exists

$0.004–0.069

Fiber's cost per Mbps range, vs. Starlink's flat $0.196. Cable lands in the same low range.

Satellite loses

A few local options come in cheaper

4 states

Unlicensed fixed wireless in Hawaii, Nevada, and Rhode Island, and DSL in Delaware and Rhode Island (both tiny: under 20 locations each).

Satellite broadband carries a well-known reputation for being expensive relative to its speed, a "tax" paid for coverage in places wired options can't reach. This project tests that claim with public data instead of assuming it: FCC's National Broadband Map (which technologies actually serve which locations, split by GSO vs. LEO satellite) joined against published ISP/carrier pricing. The market layer covers all 50 states plus DC, every region type, not a sample.

The finding holds across every state, with some nuance. LEO satellite (Starlink) beats legacy GSO satellite everywhere (51 of 51) and beats Licensed Fixed Wireless (Verizon 5G Home / T-Mobile Home Internet, the actual 5G-home-internet product, not a niche one) everywhere too (51 of 51), though not by the same margin everywhere. Most states (47 of 51) land at about 10× ($0.196 vs. $2.00), but the gap ranges from a modest 2.1× in Idaho ($0.417) up to 25.5× in Alaska ($5.00). It does not beat every other technology everywhere, though: unlicensed fixed wireless in Hawaii, Nevada, and Rhode Island, and DSL in Delaware and Rhode Island, come in cheaper than LEO satellite on this metric (the two DSL cases cover only 4 and 14 FCC-reported locations). These are real exceptions, not smoothed over. The real story is less "satellite always wins" and more "satellite reliably beats its most direct national competitor (licensed 5G home internet) everywhere, while losing occasionally to cheaper legacy/local options and consistently to wired infrastructure where that exists."

Worth saying up front: Starlink's own cost-per-Mbps is flat at $0.196 in every state (one national price against an FCC technology-level median that barely moves), while Licensed Fixed Wireless is not flat: it varies from $0.417 to $5.00 depending on that state's FCC-reported median speed tier for the technology. So the "beats it everywhere" finding is 51 genuinely different comparisons, not one national ratio repeated 51 times. See methodology for the full caveat.

Part 2How the networks work

A short primer: how each technology physically reaches a home, and which part of the connection this page actually measures.

How each network actually reaches you

Seven technologies show up in the data on this page. They move bits in physically different ways, and that explains most of the price, speed, and latency gaps before any market effect kicks in. Start with the biggest one: how far a satellite signal has to travel.

10,000 km 20,000 km 30,000 km Earth LEO satellite (Starlink) · ~550 km so close it barely leaves the surface at this scale GSO satellite (Viasat, HughesNet) · 35,786 km parked over the equator, matching Earth's rotation Drawn to scale, 1 px ≈ 46 km. Earth's radius (6,371 km) shown for reference.
GSO satellite latency floor
~477 ms
Physics alone. Your request goes up to the satellite and down to a gateway, and the reply makes the same trip back: 4 × 35,786 km at the speed of light. Real connections add processing on top.
LEO satellite latency floor
~7 ms
Same four legs at ~550 km, with the satellite straight overhead. Real-world numbers run higher (satellites are rarely directly above you, and traffic still routes through a ground gateway), but the starting point is about 65× lower.
Fiber latency floor
~1 ms / 100 km
Light in glass moves at roughly two-thirds of its vacuum speed. For wired networks the distance that matters is how far away the server is, not how high up anything is.

The seven technologies, side by side. Numbers come from the same national data used everywhere else on this page: the FCC-reported median download speed and cheapest-plan cost per Mbps (each the median across all 50 states + DC), plus the real BEAD subsidy committed per funded location.

How this data is actually measured: networking basics

Every number below travels the same basic path, and the protocol carrying it changes what "connection quality" even means. Quick primer before the data.

Your device laptop, phone, TV Router Wi-Fi + local network Modem translates the ISP signal ISP & internet what this project measures ← your home network → ← FCC / Ookla / BEAD data on this page →

This project measures from the modem outward: ISP pricing, advertised vs. real speeds, subsidy data. Router/Wi-Fi problems (weak signal, old hardware, too many devices) are real but a different problem, and not what any number on this page is testing.

TCP: reliable delivery
Confirms every packet arrived, resends anything lost, keeps everything in order. Used for: web pages, file downloads, email. Tradeoff: one lost packet stalls everything behind it until it's resent. That's the "spinning wheel" moment on a slow connection.
UDP: speed over guarantees
Sends packets and moves on. No confirmation, no resending. Used for: video calls, online gaming, and live streaming, where a late packet is worthless anyway. Tradeoff: a lost packet is just gone. You get a frozen video frame, not a delay.

Worth knowing: Ookla's Speedtest, which the real-world performance layer below is built on, actually measures throughput over TCP (multiple parallel connections), not UDP. That's a deliberate choice, since TCP's own congestion-control behavior is closer to what a real download or upload actually feels like than a raw UDP probe would be. Latency/jitter/packet-loss are measured as a separate, lighter-weight check. Not every speed-test tool works this way, but Ookla specifically does.

This is why latency (round-trip delay, in ms), jitter (how much that delay swings from packet to packet), and packet loss (% of packets that never arrive), all three shown in the personal reliability layer further down, matter differently depending on the protocol. TCP mostly hides jitter and loss behind retries; you just see a page load slower. UDP doesn't hide it. That's the frozen call or the game lag spike, which is exactly why real-time apps use it instead of TCP.

Part 3What a Mbps costs

Monthly price divided by the FCC's median speed, per technology and per state, and what that monthly price means against household income.

Cost per Mbps, range across all 50 states + DC

Each bar spans the lowest-to-highest monthly price ÷ FCC median advertised download speed seen for that technology nationwide (fiber, cable, and DSL use each state's largest provider; the rest use one national plan). A bar with no visible span means the value is identical everywhere. Only LEO Satellite is flat across all 50 states + DC. States with an undefined DSL cost (median speed rounds to 0 Mbps) are excluded from this range; see methodology.

Which technologies meet the FCC's broadband definition?

Since 2024 the FCC defines broadband as at least 100 Mbps down and 20 Mbps up. Cost per Mbps rewards raw speed, so this checks the other question: does a technology's typical service in each state clear that bar at all?

Mapped by state: satellite premium, affordability, and BEAD subsidy

Part 4What people actually get

Advertised speeds checked against what people actually measure.

Real-world speed vs. advertised (Ookla)

Fixed broadband (51)Mobile (51)Each dot is one state. Down and to the right is better. Hover for details.

FCC's numbers above are provider-reported advertised speeds. This section checks them against what people actually measure: median blended speed/latency per state from Ookla's public Speedtest data (Q2 2026), across every technology mix in that state, not filtered to one technology. Covers all 50 states + DC.

StateNetworkMedian down (Mbps)Median up (Mbps)Median latency (ms)Tests

These are blended medians across every technology serving a state, not "fiber's real speed" or "satellite's real speed" specifically. A high-fiber-density state's blended fixed median sitting far below fiber's advertised "up to 8000 Mbps" isn't fiber underperforming; it's that the real-world mix, including slower DSL/wireless/satellite lines, pulls the state-wide median down. Mobile is meaningfully slower than fixed everywhere. At full 51-state scale, fixed median download ranges from 148.7 Mbps (AK) to 398.8 Mbps (FL). Alaska is the slowest and highest-latency state: it also has the highest mobile latency (61ms), while Vermont has the lowest mobile test volume. States are assigned with a real Census-shapefile point-in-polygon join.

Quarter-over-quarter trend (Q1 → Q2 2026)

Slower in Q2Faster in Q2One column per state, sorted. Hover for details.

Covers all 50 states + DC (102 state/network combinations). There are still only two quarters of history, which isn't enough to call this a confirmed trend and the picture is mixed. Median download speed declined from Q1 to Q2 2026 in 82 of 102 combinations (80.4%), most sharply for Nebraska mobile (-23.3%) and West Virginia mobile (-15.8%). But 19 combinations actually increased: Florida, Arizona (fixed +3.2%, mobile +9.6%), DC mobile (+11.0%), and Wyoming mobile (+9.4%) also gained.

StateNetworkQ1 2026 (Mbps)Q2 2026 (Mbps)Change

The cause isn't established here. A majority decline across most states and both network types in a single quarter could reflect real network congestion/usage growth, a shift in who's running speed tests (device/carrier mix), or something in Ookla's own data collection changing between releases. Not attributing this to any specific cause without more quarters of history; flagging it as an observed pattern worth watching, not a conclusion. This will get more reliable automatically as the quarterly GitHub Actions refresh accumulates more history.

Part 5Where the subsidy money goes

The federal BEAD program: how much each state got, what it builds, and who it reaches.

Where the subsidy money goes: BEAD allocation vs. satellite dependence

Change from the 2023 allocation to the 2025 award, one column per state. Every state was cut. Hover for dollar amounts.

The federal BEAD program allocated $42.45B across states in 2023. In 2025, NTIA restructured the program ("Benefit of the Bargain"); this layer shows both the original 2023 allocation and the 2025 provisional award for all 50 states + DC. The provisional award for 50 of 51 is individually verified against NTIA's own official per-state "BEAD Final Proposal Overview" PDF (broadbandusa.ntia.gov). DC is the one exception, since no such PDF has been published for it, so DC keeps an earlier secondary-source estimate, flagged as unverified (see methodology). As a proxy for "underserved" locations, GSO Satellite locations served (from the FCC layer above) stands in. BEAD's own eligibility rules treat satellite as non-qualifying/lower-tier service in most cases, so places with heavy GSO satellite coverage plausibly correlate with places lacking adequate terrestrial options.

The restructuring cut funding in every state. Median cut across all 50 states + DC: −62.0% vs. the original 2023 allocation. The range is wide: Oregon (−14.7%), Illinois (−16.9%), and California (−25.5%) came through relatively unscathed; DC (−99.0%), North Dakota (−95.3%), and Connecticut (−95.0%) were cut nearly to zero. This is confirmed structural, not a data artifact. See methodology for sourcing.
StateOriginal (2023)Provisional (2025)ChangeGSO satellite locations$ per GSO-served locationMonths of Starlink

The per-location spread is even more dramatic once NTIA-verified: Alaska's provisional award works out to ~$1,021 per GSO-satellite-served location vs. Connecticut's ~$2.21, a 462× difference. Some of this is the formula working as intended (BEAD weights toward high-cost rural buildout), but a 462× spread is large enough that "does the per-location subsidy track real deployment cost, or mostly track how much each state's award was cut" is still a real, open question. The granular layer below answers a related question (satellite vs. fiber cost per location, nationally) but not this exact one (why does the same technology's implied subsidy vary 462× by state).

Scale sanity-check, not a real cost comparison: the last column shows how many months of the cheapest current Starlink residential plan ($55/mo) each state's $-per-location figure would buy. Even Alaska's outlier $1,021.06/location, the highest in the country, is worth about 18.6 months of a consumer satellite subscription, and most states are under 2 months. This isn't a claim that BEAD money could or should just buy Starlink plans instead. BEAD funds permanent infrastructure, not a recurring service, and the location-count denominator above is already a loose "underserved" proxy, not a precise buildout-cost basis (see Methodology). What it does show: the per-location dollar figure, on its own, is nowhere near what it would cost to actually connect a household to anything, wired or wireless, reinforcing that this number tracks the proxy's denominator (how many locations "have satellite coverage," which is nearly all of them) far more than it tracks real deployment economics.

What BEAD money actually builds: real per-project technology mix

5,806 real BEAD projects, broken down by the technology planned for each of the 3.78M locations they fund. The bar shows who gets built, and the cards show what each location costs.

Share of BEAD-funded locations
This answers the question the original proxy couldn't: satellite (GSO + LEO combined) accounts for 22.0% of all BEAD-funded locations nationally (833,094 of 3,780,117) at a real committed cost of $701–$1,138 per location, vs. $6,420.70 per location for fiber (63.3% of funded locations). That's a genuine 5.6× gap in actual dollars, not a proxy estimate. BEAD is leaning on satellite at real scale, not just where fiber is geographically impossible, and largely via Starlink specifically (Space Exploration Technologies Corp/SpaceX subgrantee entries outnumber Amazon Kuiper's roughly 7:1 in LEO-funded project locations in this dataset; Kuiper is present too, not hypothetical).
TechnologyProjects (with ≥1 location this tech)Locations fundedBEAD $ (proportional)$ per funded location
GSO Satellite429,210$20,478,800$701.09
LEO Satellite1,967803,884$915,151,984$1,138.41
Unlicensed Fixed Wireless4828,377$75,717,993$2,668.29
LBR Fixed Wireless198165,106$485,885,303$2,942.87
Licensed Fixed Wireless559289,162$1,150,319,469$3,978.11
Cable14569,402$355,762,798$5,126.12
Fiber3,1532,394,375$15,373,558,559$6,420.70
Other3601$9,217,166$15,336.38
Unknown (no location data)560$88,048,942n/a

About this data: the earlier BEAD sections use GSO Satellite coverage as a proxy for "underserved locations" because state-total allocation figures don't say what technology the money actually funds. NTIA's BEAD Final Proposal data does: 5,806 real subgrantee projects, each with an actual federal subsidy amount and a list of specific locations with the technology planned for each one. This section replaces the proxy with those real numbers: project-level dollars, split across technologies by each project's actual location mix (~5.7% of projects fund more than one technology, e.g. mostly fiber with a handful of satellite locations for the hardest-to-reach spots; the $ figure is allocated proportionally to each technology's share of that project's locations, not assigned whole to one). Source: a third-party compilation of NTIA's own Final Proposal submissions (broadbandexpanded.com, since NTIA has no single bulk download). The compiler itself flags this as "not intended to be authoritative." National totals here ($18.47B) now run within 1.8% of the sum of this site's own state-total figures ($18.15B) once those were individually verified against NTIA's official per-state overview PDFs (see the BEAD table above and methodology). The two independent sources agree closely at the national level, which is reassuring, though individual states can still diverge (Illinois: $831.2M verified vs. $935.8M in this granular layer; confirmed not a duplicate-counting or stale-data bug, but a real ~13,200-location technology-mix discrepancy between sources that isn't fully pinned down; see methodology).

"Projects" here counts distinct projects with at least one location of that technology, not a mutually-exclusive split. A mixed project counts under every technology it actually funds, which is the point (it's why the split exists). Fiber's real per-location cost ($6,420.70) sitting an order of magnitude above every wireless/satellite option is the number this whole layer was built to find. It's the actual answer to whether the state-total $/location spread (CT $2.21 to AK $1,021.06, above) tracks real buildout cost: partially. The 462× state-level spread is real and NTIA-verified, not a data artifact, but this national technology-level breakdown shows it isn't simply "some states pay more for the same thing". Different states fund very different technology mixes (Alaska is 51.8% fiber, 33.9% LEO satellite; most East Coast states are 90%+ fiber), and fiber costs 5.6× more per location everywhere. Both effects are real and stack.

Projects with no location data: 56 BEAD projects nationally ($88.0M combined) have zero matching rows in the location-level data. That's a scope gap in the source compilation, not something attributable by technology. Dropping them would have silently understated a few states' totals, most severely South Dakota (one $72.8M project with no location rows, which previously zeroed out SD's entire presence in this layer) and DC (one $827K project, previously most of why DC looked incomplete here). Both are now correctly represented, shown in the "Unknown (no location data)" row above rather than vanishing.

How this layer reconciles with the state totals: the state-total BEAD figures above were individually re-verified against NTIA's own official per-state overview PDFs (50 of 51 states directly confirmed; DC has no such PDF published, flagged unverified). This superseded the original secondary-source figures, which checked out unreliable (only 12 of 27 spot-checked states matched NTIA's real numbers within 2%; Hawaii was 3× overstated). Against those now-verified figures, this granular layer's own state totals agree within 15% for 49 of all 51 states + DC. Root cause found for the two exceptions: Rhode Island's and North Carolina's project-level totals here match the old, superseded telecompetitor.com figures to the dollar ($16,137,983 and $408,511,175.10 respectively); broadbandexpanded.com's underlying project data for those two states appears to reflect an earlier submission than the one NTIA's current overview PDF shows, not a live-vs-verified mismatch in this layer's own math. Illinois sits just under the flag threshold at +12.6% ($935.8M here vs. $831.2M verified). Ruled out the stale-snapshot pattern that resolved RI/NC and ruled out duplicate/double-counted data (checked directly: no duplicate project IDs, no location shared across projects, every IL project has matching location rows). The real difference is a genuine technology-mix and location-count mismatch against NTIA's own summary: this project's data shows more Fiber and LEO Satellite locations and fewer Fixed Wireless locations than NTIA's category totals, netting to about 13,200 more locations overall (155,734 vs. NTIA's 142,416–142,546), not a data-quality bug found in either source, but not fully explained either; see docs/BEAD_LAYER_SCOPE.md for the full breakdown. The national technology-level pattern above (fiber vs. satellite cost gap) is far more robust than any single state's number, since it's averaged across thousands of projects rather than one state's total.

Where BEAD-funded community institutions actually are

22,675 individual schools, libraries, health clinics, fire/police departments, public housing sites, and government buildings that will get BEAD-funded broadband, each plotted at its own real address, not a state-level aggregate. Hover a cluster for the breakdown.

Source: the same NTIA Final Proposal data as the granular BEAD layer above, this time at the individual-institution level (CAI_20260827.csv). 22,675 of 25,909 listed CAIs have a usable coordinate (3,036 have no lat/lon or an exact 0,0 placeholder, excluded). American Samoa (23) and Guam (175) aren't plotted. This map reuses the choropleth's d3.geoAlbersUsa() projection, which only repositions Alaska/Hawaii, not the Pacific territories. Type-code labels are inferred from each institution's name (e.g. "S" only ever appears on schools in a sample check), not from an official published codebook. None exists on broadbandexpanded.com's funding page or bundled with the data. Confident, not independently confirmed against NTIA's own taxonomy. Coordinates rounded to 4 decimal places (~11m) for a smaller download.

Where the other 1.1M eligible locations went

3.78M locations got a funded BEAD project (above). Another 1,097,151 (22.5% of everything eligible) didn't, each with a reason code an Eligible Entity had to justify to NTIA. Source: NTIA's own fp_no_BEAD_locations.csv schema, same compilation as the funded-location data.

67.5% were already being helped some other way: already privately served (45.6%) or already funded by a different federal/state program (21.9%). Another 22.5% turned out not to be real locations at all (removed from the FCC's own address list). Only 330 locations nationally (0.03%) were excluded because a state said it couldn't afford to serve them, the "we gave up" category NTIA sets a deliberately high bar for. Used by just 3 states: CT (168), MN (158), MD (4).
Part 6Explore the data

Every layer for one state or two side by side, plus the full table to filter and download.

Look up a state

Every layer on this page, for one state. Pick one below or click a state on the state map, and add a second state to compare them side by side. The link updates, so you can share it.

State

Every technology priced here, cheapest per Mbps first (bar length on a log scale)

Fiber, cable, and DSL are priced from this state's own largest provider for that technology (its cheapest published plan). Satellite and 5G home internet are sold at one national price, so they use that. Where a state's largest provider has no published price, the national plan fills in and is labeled that way. Speeds are this state's own FCC-reported median for the technology.

Full comparison table

Filter by state/technology/price, click a column header to sort, and download whatever is showing as a CSV.

State (ctrl/cmd-click for multiple)
Technology (ctrl/cmd-click for multiple)
Max $/mo
State Technology Priced provider Monthly ($) FCC median down (Mbps) $/Mbps Unique providers Locations served
Part 7What's next, and the fine print

A first-hand layer still collecting data, plain-English answers to common questions, and every caveat and correction.

Personal reliability layer (in progress)

The one layer on this page that's measured first-hand instead of pulled from a public dataset. Here's how a sample gets made.

2 home machines macOS launchd + Windows Task Scheduler Every 30 minutes ~48 samples per machine per day Speed + ping test 10 MB down, 5 MB up (Cloudflare) 10 pings to 1.1.1.1 Private local database SQLite on each machine, raw rows never published This page summary stats only, once there's enough data
Download / upload
Mbps
Time to pull 10 MB from and push 5 MB to Cloudflare's speed-test servers.
Latency
ms
Average round trip across 10 pings to Cloudflare's 1.1.1.1.
Jitter
ms
How much those 10 round trips swing: the standard deviation of the ping times.
Packet loss
%
Share of the 10 pings that never came back.
A lightweight logger (Cloudflare speed-test endpoints + ping, no separate speed-test app needed) is running every 30 minutes on two machines, each on its own home broadband connection, logging download/upload throughput, latency, jitter, and packet loss to a local database. The logger also supports labeling a session as a tethered/cellular connection (--label cellular-tether), but no cellular data has actually been collected yet. Both machines are on home Wi-Fi so far. Satellite is intentionally out of scope for this layer for now (no satellite hardware access); it stays in the market-layer analysis above. This needs a few weeks of runway before the personal-vs-market overlay is meaningful. Check back for an update once there's enough data to say something real.

Questions people ask

The short, plain-English version. Click any question.

What does "cost per Mbps" mean?

The monthly price of a plan divided by the download speed you'd typically get, using the FCC's median reported speed for that technology in that state rather than the "up to" number in an ad. It answers "how much speed does each dollar buy," which makes a $50 fiber plan and a $50 5G plan comparable.

So is Starlink the best deal?

Depends what's available. It beats 5G home internet on cost per Mbps in all 51 states and beats older geostationary satellite everywhere. But where fiber or cable reaches, those are cheaper per Mbps by 4.3× to 49× (median 8.9×). Starlink's real strength is being available almost anywhere.

Why is Starlink's number the same in every state?

Starlink sells one national price ($55/mo for the entry plan here), and the FCC reports the same median speed for it everywhere (280 Mbps). Same price, same speed, same $0.196 per Mbps. Wired prices and speeds vary by state and provider, so theirs don't.

What is 100/20, and why does it matter?

Since 2024 the FCC counts a connection as broadband only if it reaches 100 Mbps down and 20 up. Fiber, cable, and LEO satellite meet that at the typical location in every state; 5G home internet meets it in 1 of 51, and geostationary satellite in none.

Can people actually afford it?

For a household at the state median income, Starlink's $55 plan is 0.56% (Massachusetts) to 1.14% (Mississippi) of monthly income. Half of households earn less than the median, and at half the median every share doubles.

What is BEAD?

The federal Broadband Equity, Access, and Deployment program, $42.45B allocated to states in 2023 to connect places without good internet. A 2025 restructuring cut the median state's award by 62%, and satellite now serves 22% of the locations it funds at about a sixth of fiber's cost per location.

Why does the FCC speed differ from what I measure at home?

The FCC numbers are what providers advertise as each location's best available plan. The real-world section uses Ookla speed tests, which reflect the plan people actually bought, their Wi-Fi, and congestion. Both are shown so the gap is visible.

Where does the data come from, and can I use it?

FCC National Broadband Map, published provider pricing, Ookla open data, NTIA BEAD filings, and Census income data via FRED. Everything is in the public GitHub repo, the full table downloads as CSV, and the footer has a citation line.

Methodology & caveats

19 notes, click any card to read it
Caveats to keep in mind 8
Starlink's cost-per-Mbps is flat nationwide; Licensed Fixed Wireless's is not.

Starlink is priced from a single national plan against an FCC technology-level median that barely moves (280/30 Mbps in all 51 states/DC), so its $0.196/Mbps is genuinely identical everywhere. The original 10-state sample happened to show Licensed Fixed Wireless at a flat $2.00 too, which looked like the same mechanical pattern, but at full 51-state scale it actually varies $0.417 (Idaho) to $5.00 (Alaska), because that technology's FCC-reported speed tier isn't as nationally uniform as Starlink's. The "beats it everywhere" finding is therefore stronger now, not weaker: 51 genuinely different comparisons landing the same direction, not one ratio repeated.

LEO satellite does not beat every technology everywhere.

Unlicensed fixed wireless in Hawaii, Nevada, and Rhode Island (as low as $0.045/Mbps) and DSL in Rhode Island ($0.04/Mbps) and Delaware ($0.178/Mbps) all come in cheaper than Starlink's $0.196/Mbps on this metric. The two DSL cases are real rows in the FCC data but cover only 14 (RI) and 4 (DE) locations, with a reported median speed far above normal DSL, so they say more about FCC reporting than about the DSL market. Shown rather than smoothed over.

A small "Other" technology bucket appears in 15 of the 51 states/DC.

Locations under an FCC technology code outside the 8 mapped here, largest in TX (867 locations). Negligible in every case (never above ~0.001% of a state's locations), so it's noted rather than silently dropped, but not worth a dedicated investigation at this size.

Advertised vs. FCC-median speed gap.

FCC's LEO Satellite median (280/30 Mbps) is higher than any individual Starlink residential pricing tier in the dataset (which top out at 400 Mbps for $130; the common $55 tier is only 100 Mbps). The $0.196/Mbps figure is cheapest plan price ÷ FCC's fleet-wide median speed, not an apples-to-apples plan-to-speed match. Both columns are kept visible in the table above rather than resolved silently.

DSL is degenerate in 2 states.

FCC's reported median download speed for DSL rounds to 0 Mbps in NJ (65,253 locations) and VA (271,861 locations), almost certainly legacy copper barely providing real service, not a data error. Cost-per-Mbps is mathematically undefined (division by zero) in both and shown as such in the table rather than smoothed over.

Fixed Wireless is three technologies, not one.

FCC splits it into Unlicensed (code 70), Licensed (71), and Licensed-by-Rule/LBR (72). An earlier version of this page collapsed all three into one "Fixed Wireless" row and let 71/72 fall into an unlabeled "Other" bucket, which mattered, since Licensed Fixed Wireless (the actual technology behind Verizon 5G Home / T-Mobile Home Internet) turned out to be the single largest fixed-wireless population by far in every state. Now split and priced correctly; LBR has no matching published pricing in any state, so it's shown in the table but excluded from the range chart and left unpriced rather than researched for a niche product.

Pricing is a snapshot, not a full market.

One cheapest published plan per provider (as of September 2026), not an exhaustive rate survey. Some of those prices are introductory rates that rise after 12 to 24 months; data/provider_pricing.csv notes which. Taxes, equipment, and modem fees are left out, which matches how providers advertise but understates the real monthly bill.

Fiber, cable, and DSL use each state's largest provider; the rest use a national plan.

For fiber, cable, and DSL, the price comes from the provider with the largest coverage for that technology in each state (per BroadbandNow's state pages), so Texas fiber is priced from AT&T Fiber and Oregon's from Ziply. Coverage figures there are a provider's total footprint, so a provider is counted under the technology it lists first; AT&T's combined listing is counted as fiber, since AT&T no longer sells DSL to new customers, and resellers like EarthLink are excluded. AT&T stopped selling DSL to new customers in 2023, so where AT&T is the largest DSL provider, DSL is priced from the next-largest provider still selling it (Brightspeed, CenturyLink, or Frontier), as long as that provider covers at least 2% of the state. That leaves 6 states (CA, GA, HI, KY, OK, TN) on the national DSL average. Starlink, Viasat, Verizon 5G Home, and T-Mobile Home Internet are sold at one national price, so those always use it. Provider picks and prices are in data/state_top_providers.csv and data/provider_pricing.csv.

Corrections found by checking the data 6
Ookla regional figures now use a real state-boundary join.

Originally filtered by a lon/lat bounding box, which could pick up border slivers from neighboring states. Now does a true point-in-polygon join against US Census cartographic boundary shapefiles (via geopandas). Numbers shifted slightly once border noise was excluded (e.g. NC's fixed-tile count dropped from ~124K to ~73K tiles, median down speed nudged up).

Q1→Q2 trend expanded to all 50 states + DC, correcting an overstated finding.

The 10-state sample's "near-universal decline, Florida the one exception" framing didn't hold at full scale: 82 of 102 state/network combinations declined (80.4%, not effectively 90%+), and 19 combinations actually increased, including Arizona, DC mobile, and Wyoming mobile, not just Florida. Required downloading Q1 2026's raw tile files (they weren't kept locally after the original 10-state run) since build_ookla_timeseries.py needs the actual prior-quarter tiles, not just the current summary CSV.

Replaced BEAD provisional-award figures with NTIA-verified numbers, all 50 states + DC.

The original figures (v2, telecompetitor.com-sourced) checked out unreliable when investigated further: spot-checking 27 states directly against NTIA's own official per-state "BEAD Final Proposal Overview" PDFs (broadbandusa.ntia.gov, a primary source with no bulk download, so each state's current PDF path had to be looked up individually via its NTIA "awardee" page, since the URL's date-folder drifts as proposals get amended) found only 12 of 27 matched within 2%; Hawaii was 3× overstated ($94.87M shown vs. the real $30.67M). Re-verified all 50 states + DC this way: 50 states now carry a real NTIA figure; DC is the one exception (no overview PDF exists for it) and keeps the old unverified estimate, flagged as such. This changed the headline spread from 355× (CT $2.21 to AK $784.17) to 462× (CT $2.21 to AK $1,021.06). Alaska's real number was higher than the old estimate, not lower. See scripts/build_bead_provisional_awards.py for the full sourcing methodology and priority order, and docs/BEAD_LAYER_SCOPE.md for how this was discovered.

Fixed a data-completeness gap in the granular BEAD layer: 56 projects ($88.0M) with no location data were being silently dropped.

build_bead_final_proposal.py only counted a project if it had matching rows in LOCATION.csv: 56 projects nationally don't, most consequentially South Dakota's single largest project ($72.8M), which previously zeroed out SD's entire presence in this layer (it simply didn't appear in the table), and one DC project ($827K) that was most of why DC's granular total looked implausibly tiny. Both now show correctly via a new "Unknown (no location data)" technology row rather than vanishing. Found while root-causing the RI/NC/IL reconciliation gaps (which turned out to have a different, unrelated cause; see below). This didn't change the headline satellite-vs-fiber finding (still 22.0% / $6,420.70 per location / 5.6×) since $88M is under 0.5% of the $18.47B total, but it did fix two states that were previously misleadingly absent or incomplete.

Root-caused the RI/NC BEAD reconciliation gaps: both match an old, superseded secondary-source figure exactly, not a live data error.

Rhode Island's and North Carolina's granular project-level totals ($16,137,983 and $408,511,175.10) match the original, since-replaced telecompetitor.com figures for those states, to the dollar: strong evidence that broadbandexpanded.com's underlying project data for RI and NC reflects an earlier BEAD submission than the one NTIA's current overview PDF shows, rather than a bug in this layer's aggregation. Checked directly against data/raw/bead/PROJECT_20260827.csv, no location-join needed to see it. Illinois does not show this pattern (its raw total doesn't match its old telecompetitor figure either).

Illinois's reconciliation gap ruled out as a duplicate-counting or stale-data bug; real cause is a technology-mix/location-count mismatch, not fully explained.

Re-verified IL's NTIA figure is current (the PDF now lives at a newer URL path but is unchanged: still "Updated 11/24/2025," still $831,161,724). Checked directly for double-counting: 0 duplicate project IDs, 0 locations shared across more than one project, 0 IL projects missing from LOCATION.csv (so no Unknown-bucket contribution). All $935,758,035.68 traces to 232 real projects covering 155,734 genuinely distinct locations. The actual gap: IL's own NTIA PDF reports 142,546 eligible locations split Fiber 97,122 / Fixed Wireless 33,610 / LEO Satellite 11,490 / Hybrid Fiber-Coax 194, while this layer's location counts for IL are Fiber 107,678 / LEO 24,224 / Fixed Wireless 23,352 / Cable 480. Fiber and LEO both come in higher than NTIA's totals, fixed wireless lower, netting to roughly 13,200 more locations overall. Not a bug found in either source, but the mechanism (technology-code mapping difference, or a real scope difference in which locations a funded project can include beyond NTIA's strict eligible set) isn't pinned down; it would need a location-level join against NTIA's own eligibility data, not available in this dataset. See docs/BEAD_LAYER_SCOPE.md for the full numbers.

Expansions and additions 5
Ookla layer expanded to all 50 states + DC, matching the market layer.

The nationwide Ookla tile files were already local; expanding coverage only required widening COMPARISON_STATES in load_ookla_regional.py, no new downloads. Alaska overtook Montana as the slowest/highest-latency state once added (148.7 Mbps median fixed download, 61ms mobile latency), a genuinely new finding from the expanded sample, not visible at 36 states.

BEAD layer rebuilt with confirmed 2025 provisional awards for all 50 states + DC.

(Since superseded: the provisional-award figures were later re-verified against NTIA's own PDFs; see Corrections.) Both the original June 2023 allocation and the 2025 "Benefit of the Bargain" provisional award are hand-compiled from a single consistent secondary source (NTIA's own allocation-totals page blocks automated fetching), cross-checked against directly-sourced NTIA/state-broadband-office figures for NJ, TX, and CO during the earlier caveat fix (all matched within ~1-2%). "Provisional" means administrative review is still ongoing per state as of compilation, so these are not guaranteed to be each state's final locked-in number, and should be re-verified before citing elsewhere. GSO Satellite locations served remains an "underserved" proxy, not a precise BEAD-eligibility count. See docs/BEAD_LAYER_SCOPE.md for the full reasoning.

Added a Starlink-cost cross-reference to the BEAD table.

Each state's $-per-location figure is now also shown as months of the cheapest current Starlink residential plan ($55/mo, sourced the same way build_cost_comparison.py picks a representative price). This is explicitly not a claim that the subsidy could substitute for a Starlink plan. BEAD funds one-time infrastructure, not a subscription. But it's a useful scale check: even Alaska's outlier (originally $784.17/location on the pre-verification figures, now $1,021.06/location once NTIA-verified; see below) is under 2 years of consumer satellite service, which is a strong signal that the per-location dollar figure is driven mostly by the proxy's oversized denominator (nearly every location "has satellite coverage") rather than by real last-mile deployment cost. See scripts/build_bead_comparison.py.

Added a granular BEAD layer with real per-project technology splits, replacing the GSO-satellite-coverage proxy with actual funded-location data.

NTIA's own site has no bulk Final Proposal download, so this uses a third-party compilation (broadbandexpanded.com) of 5,806 real subgrantee projects, each with an actual federal subsidy amount and a location-level technology list. ~5.7% of projects fund more than one technology; the dollar figure is split across technologies proportional to each one's share of that project's locations, not assigned whole to one (checked directly: 290 of 5,093 sampled projects had >1 technology). Headline: satellite (GSO+LEO) is 22.0% of all funded locations at $701–$1,138/location vs. fiber's $6,420.70/location (63.3% of locations), a real 5.6× cost gap, not a proxy estimate. Reconciled against the NTIA-verified state totals: 49 of 51 states + DC agree within 15%; the two exceptions (RI, NC) are explained in the corrections above. See scripts/build_bead_final_proposal.py and the section above for the full caveats.

Choropleth map now plots all 50 states + DC, not just the contiguous 48 + DC.

Alaska and Hawaii were previously excluded from the map's rendering (though not from any table or the underlying data) over antimeridian-wrap and disconnected-islands concerns. The map already used d3's AlbersUSA projection, which solves exactly that problem by repositioning AK/HI as bottom-left insets, so the exclusion was unnecessary. Alaska turns out to be the map's most subsidy-intense state ($1,021/location on NTIA-verified figures), which the map's legend previously couldn't show since AK wasn't plotted.