§ BlogHow the data works

How the Starlink Availability USA dataset is built, start to finish

A county number on this site passes through seven steps and two thresholds before it appears. Here is each step, with the real rules, and the limits no process can fix.

Cover: a funnel of four stages: Reports in, Form checks, Human review, n ≥ 5 published.

Key takeaways

  • Readers submit anonymous, county-level reports. The form has no free text and never asks for an address, name, email or screenshot.
  • Automatic checks stop bots and impossible values. Unusual amounts wait for a second report; duplicates count once.
  • A person accepts or rejects every report and never edits one. Rejections are counted by reason and published.
  • A county shows a surcharge number at 5 accepted reports, or speeds at 20 unobstructed tests, in the last 6 months.
  • Press reports are a separate, unverified layer and never enter crowd medians. As of Oct 5, 2026, 0 reports had been received.
On this page
  1. The pipeline, step by step
  2. Two layers that never mix
  3. The open data
  4. Limits no process removes
  5. Following one report through (hypothetical)
  6. Common misreadings
  7. What to do next
  8. Questions people ask
  9. Sources

The Starlink Availability USA dataset is built from anonymous reports that readers submit by county: what checkout showed (a surcharge and its amount, $0, or sold out) and, optionally, a speed test. Each report passes automatic checks, an outlier hold if it’s unusual, a duplicate check and a human review. Accepted reports from the last 6 months are then grouped by county, and a county shows numbers only once it has at least 5 surcharge reports or 20 unobstructed speed tests. Press reports are logged separately and never mixed in.

This page walks through every step with the real rules, says what gets rejected and why, and lists the limits that no process removes. The short version of the rules lives on the method page; this is the long version.

The pipeline, step by step

Seven steps: submit, automatic checks, outlier hold, duplicate check, human review, dataset export with thresholds, and publication as map, CSV and changelog.
Figure 1. Seven steps from a report to a published number. Source: /method/, src/lib/report-schema.js and src/lib/publish.js (method-1, Oct 5, 2026).

1. A reader submits a report

The report form asks for:

Field Values Required?
State and county Dropdowns Yes
First 3 ZIP digits e.g. 985 Optional
What you were doing New order, reactivation, address change, plan switch, Mini or Roam activation Yes
What checkout showed A surcharge with an amount, $0, or sold out / at capacity / waitlist Yes
Amount Whole dollars, up to $5,000 If a surcharge
Plan Residential, Roam, Business or priority, Not sure Yes
Kit Rental, bought, Mini, Not sure Yes
Month you saw it Last 24 months Yes
Speed test Download, upload, latency, time band, tool, obstruction % Optional

The events match the moments Starlink’s surcharge article names: purchasing new service, activating a new plan, changing service address, and moving between addresses. Reactivation is its own option because Starlink’s help pages disagree on it.

There is no free-text box, so there’s nowhere to type an address by accident. Why we chose county over address is explained in why we never ask for your street address.

2. Automatic checks

Before a report reaches anyone:

  • A hidden honeypot field catches most bots; a report submitted faster than 3 seconds after the form loads is treated as a bot.
  • Values outside sensible ranges are refused with a message saying why: amounts above $5,000, download above 1,000 Mbps, upload above 300 Mbps, latency outside 1 to 2,000 ms, months older than 24.
  • A “$0” surcharge must be reported as “No surcharge,” and amounts must be whole dollars.
  • To stop one person flooding a county, the server makes a one-way hash of a secret salt, the date and the IP address, and counts against it for 24 hours. The hash is stored apart from reports and deleted automatically after 24 hours.

3. Outlier hold

An amount is flagged if it’s more than 3 times or less than a third of the county’s current accepted median, or if it’s any non-zero amount in a county where every accepted report is $0. A flagged report waits until a second, independent report agrees, or is rejected as “outlier, unconfirmed” after 60 days. Honest-but-unusual quotes aren’t thrown away; they just need company.

4. Duplicate check

Identical reports for the same county, trigger, result, amount and month received on the same day count once.

5. Human review

The curator reads every report and accepts or rejects it. Reports are never edited. Rejections use one of six reason categories:

Reason Example
Duplicate The same report sent twice on one day
Outlier, unconfirmed A flagged amount with no second report after 60 days
Implausible Speeds a tool can’t show, or an amount that doesn’t match how checkout shows a surcharge
Out of scope Not one of the events the form covers
Personal data Should be impossible (no free text); if it happens, the row is deleted and intake paused
Bot Caught by the automatic checks

Monthly totals of received, accepted, rejected and pending, with rejections by reason, are published on the data page. As of October 5, 2026: 0 received, 0 accepted, 0 rejected, 0 pending.

6. Export: thresholds and the window

After each review round, accepted reports are exported and grouped by county:

  • Window: the last 6 whole calendar months. As of the October 2026 export, that’s May to October 2026.
  • Surcharge cell: published at n ≥ 5 accepted reports. Shows the median, range, most common trigger, and first and newest month.
  • Speed cell: published at n ≥ 20 tests, excluding tests with more than 1% obstruction. Shows p25, median and p75 for download, upload and latency.
  • State page: indexed by search engines only when at least 3 of its counties are published.
  • Below threshold: “not enough reports yet” and the count so far. Never an estimate, never a neighbor’s numbers (why).

Map colors use five steps ($0, $1–249, $250–499, $500–999, $1,000+). “Not enough reports” is hatching, never a color. Details: how a county gets published.

7. Published

Each export updates the county lookup and map, the CSV files and the date shown in the site header. Any change to a rule (a threshold, the window, an exclusion) is logged in the public changelog on the method page and the data page. The first entry, “method-1,” is dated October 5, 2026.

Two layers that never mix

Two columns: the crowd layer is anonymous county reports reviewed and published at n ≥ 5; the press layer is dated article quotes marked unverified that never enter crowd medians.
Figure 2. A circle marks the crowd layer and a diamond the press layer, so the difference never depends on color. Source: /method/ and /reading-the-data/; press entries in press-reports.json (retrieved Oct 5, 2026).

The press layer logs each news article that quoted a surcharge or sold-out area: outlet, link, publication date, the place named and the quoted amount. For example, Broadband Breakfast reported $750 for new customers in Portland, Seattle, Spokane and Coeur d’Alene on June 23, 2025. Press amounts stay “unverified” until a matching crowd report or a Starlink support article confirms them, and they never enter a county median, because one quote for a metro on one date isn’t a county’s typical value. The press file has 64 rows as of October 5, 2026.

The open data

File One row per Notes
surcharges.csv County with any accepted reports Statistics filled only where n ≥ 5
speeds.csv County with any accepted tests Statistics filled only where n ≥ 20
press-reports.csv Press entry All amounts unverified

All three are free under CC BY 4.0: credit “Starlink Availability USA” with a link, and say the data is self-reported. The crowd files have headers and no rows yet. Individual reports are never published; only county totals. Journalists can find citation wording on the press page.

Limits no process removes

  • Self-selection. People who saw a surprising fee are more likely to report than people who saw $0. We ask for $0 results specifically and say so.
  • Lag. A 6-month window smooths noise but responds slowly when a surcharge changes quickly.
  • Address-level variation. Starlink sets the surcharge by service address and plan. Two addresses in one county can see different results, so a county median is a guide, not your quote.
  • No verification by Starlink. We can’t check reports against Starlink’s systems.
  • No follow-up. We don’t collect contact details, so we can’t ask a reporter to clarify. That’s the privacy trade-off we chose.

Following one report through (hypothetical)

A reader in a mid-sized county checks out for a new Residential kit in September 2026 and sees a $250 surcharge line. Here is what happens to their report:

  1. Submit. They choose their state and county, skip ZIP3, pick “Ordering a new kit,” “A surcharge, with an amount,” type 250, choose Residential, “Kit I bought,” and September 2026. No speed test.
  2. Automatic checks. The amount is a whole number under $5,000, the fields are all on the list, and the form took longer than 3 seconds. It’s queued as pending.
  3. Outlier check. The county has three accepted reports: $0, $250 and $500, a median of $250. $250 is within 3 times and a third of that, so it isn’t flagged.
  4. Duplicate check. No identical report arrived that day.
  5. Review. The curator accepts it. Nothing is edited.
  6. Export. The county now has 4 accepted reports in the May–October 2026 window. Still hatched: “4 reports so far.”
  7. Next report. When a fifth accepted report arrives, the county publishes a median, range, most common trigger (here, new order) and the months covered.

If the reader had typed 2,500 by mistake, the outlier rule would have held it (more than 3 times the median) until a second report agreed or 60 days passed.

Common misreadings

  • “The site says Starlink charges $X here.” No: readers reported a median of $X over a dated window. Starlink publishes no amounts.
  • “Hatched means no fee.” It means not enough reports yet.
  • “Press and crowd numbers disagree, so one is wrong.” They measure different things. See reading the data.

What to do next

  1. Read the rules in one place on the method page.
  2. See how the thresholds and window work in how a county gets published.
  3. Add your own result, $0 included, on the report form. It takes about two minutes and asks for your county only.

Questions people ask

Where does Starlink Availability USA's surcharge data come from?
From anonymous reports by readers who saw a surcharge, a $0 result, a sold-out message or a speed test, submitted by county. A separate press layer logs amounts quoted in news articles, marked unverified. Nothing comes from Starlink or SpaceX.
Can fake reports get into the data?
Some protection is built in: a honeypot field and minimum fill time stop most bots, out-of-range values are refused, unusual amounts wait for an independent second report, duplicates count once, a salted daily hash rate-limits floods, and a person reviews every report. No method makes it impossible.
Do you edit reports?
No. Reports are accepted or rejected, never changed. Rejections are counted by reason (duplicate, outlier not confirmed, implausible, out of scope, personal data, bot) and published.
How often is the data updated?
The dataset is regenerated after each review round and the date is shown at the top of every page. The rolling window is the last 6 whole calendar months.
Can I use the data?
Yes, under CC BY 4.0. Credit “Starlink Availability USA” with a link and say the data is self-reported. The data page has the CSV files and column definitions.
Is the data verified by Starlink?
No. We can't check reports against Starlink's systems, and we don't try. Every cell is labeled “self-reported, not verified by Starlink.”

Sources

  1. Starlink support: What is a demand surcharge? (modified Apr 9, 2026) (retrieved Oct 6, 2026)
  2. Creative Commons: Attribution 4.0 International (CC BY 4.0) (retrieved Oct 6, 2026)
  3. Broadband Breakfast: Starlink imposes $750 surcharge on new customers in major northwestern US cities, Jun 23, 2025 (retrieved Oct 5, 2026)