PROJECTS / SENSOR TRUST
Can you trust the US air‑sensor network's data?
Every US PM2.5 sensor OpenAQ redistributes, scored each day on one question: is its feed still reporting like it should? Not whether the air is clean. Whether the data is trustworthy. (This is the openly-redistributed feed, low-cost sensors and all, not the full regulatory network.)
New here? PM2.5 is fine particle pollution: the smoke, soot, and dust small enough to breathe deep into the lungs. A PM2.5 sensor is a small monitor, run by an agency, a company, or a hobbyist, that measures how much of it is in the air at one spot and posts the reading online. This page checks whether those monitors are reporting properly. It does not judge whether the air is safe.
The national picture
Of 4,314 sensors OpenAQ redistributes, 2,583 still report.50.8% of those fail at least one data-quality check.
- 1,271reporting cleanly29.5% · clears all four checks
- 1,312reporting, but flawed30.4% · a live feed you can't take at face value
- 1,731dark / silent40.1% · quiet 7+ days, counted not scored
What this means. A failed check almost always means a feed went quiet or dropped readings, the top two bars. It rarely means a reading looked wrong. Barely any sensor does that. A failed feed isn't a broken sensor, and it isn't a bad air measurement. It's a feed you can't take at face value until you look closer. 49% of reporting sensors pass every check. So the story here isn't thatthe air is bad. It's that the network's data is patchier than a map full of dots suggests, and anything built on the raw feed, like research, forecasts, apps, and alerts, inherits that.
Each dot is one reporting sensor, at its location and colored by Trust Score. Cyan is a healthy feed, rose is failing, and a lower score draws a larger dot. Hover or tap any dot for its score and the checks it failed. Dark sensors (silent 7+ days) are counted in the totals but not mapped.
Each cell shows the share of its sensors that failed at least one check. Cyan means few are failing, rose means nearly all. Cells are painted only where sensors actually sit, and sparse cells (fewer than 6 sensors) are left blank rather than guessed. This maps where the network's data is patchy. It does not map air quality.
4,679 raw rows → 4,314 physical sites (deduped) ·2,583 reporting (scored) · 1,731 dark · 2583 mapped
What a Trust Score means
A 0–100 read on one thing: how complete, fresh, and self-consistent a sensor's feed is. Not whether its readings are accurate, and never whether the air is clean. Higher is a feed you can lean on; lower means gaps, silence, or a shift worth a look. It grades only sensors that are actually reporting. Dark ones aren't scored, they're counted separately.
So what does a 50 mean?
A live feed that clears only about half of what we check, usually big gaps in its readings plus one more flag. It is not "average," and not a dead sensor: dead sensors get no score at all. A 50 is a monitor that is still reporting but has real, visible problems.
Provider rankings
Whose feeds report most cleanly?
Who runs a feed is the actionable cut, so providers are the ranking (not states). They're ordered by the share of their reporting sensors that post cleanly, clearing all four checks. Median Trust Score rides along as a secondary read, and the two can disagree: a provider can hold a decent median while almost none of its feeds are fully clean, usually because every feed is chronically incomplete. That gap is the point. Only providers with at least 10 live sensors are ranked. This readsdata health, not air quality.
| # | Provider | Reporting cleanly | Median | Live | Dark |
|---|---|---|---|---|---|
| 1 | AirGradient | 92.7% | 94.8 | 1,340 | 349 |
| 2 | AirNow | 42.0% | 72.9 | 69 | 855 |
| 3 | Clarity | 0.0% | 89.6 | 1,152 | 396 |
| 4 | Love My Air Denver | 0.0% | 82.6 | 21 | 26 |
6 smaller providers (1 live sensor) sit below the 10-sensor floor and are counted but not ranked.
Every sensor
Look up any reporting sensor
All 2,583 reporting (scored) sensors, worst score first. Search by location or provider. A sensor can score below 100 with no failed check: the score also docks partial credit for a check it degrades but doesn't outright fail. The 1,731 dark sensors are counted in the totals above but aren't scored or listed here.
| Location | Provider | Trust | Failed checks |
|---|---|---|---|
| Oakland 1 | Clarity | 51.0 | stalenesscompleteness |
| Toledo Technology Academy of Engineering | AirGradient | 51.0 | stalenesscompleteness |
| SJVAir & CCEJN Terra Bella #2 | AirGradient | 51.0 | stalenesscompleteness |
| Mosquito Manor | AirGradient | 52.8 | stalenesscompleteness |
| Copan | Clarity | 52.9 | stalenesscompleteness |
No sensor matches that search.
Failure rate over time
Is the network getting more or less reliable?
National share of reporting sensors failing at least one check, one point per day, building toward a rolling 90-day view.
Comparable series begins Jul 22, 2026, when the live-only failure rate replaced the old all-sensor number. Earlier days measured a different denominator and are left off, so a change in method never reads as a change in the network.
Methodology
How each sensor is scored
Every sensor runs four pass/fail data-quality checks each day, read from OpenAQ's summary endpoints. The Trust Score is 100 minus graded penalties for the checks it degrades or fails. A sensor counts toward the national failure-rate the moment it fails even one.
Read the open pipeline: loader, scoring, and tests →
| Check | Fails when… | Threshold | Weight |
|---|---|---|---|
| Staleness | the sensor has gone silent | silent > 24 h | 25% |
| Completeness | more than 10% of expected readings are missing | < 90% of expected readings, trailing 30 d | 25% |
| Plausibility | a reading falls below the noise floor or beyond any real ambient value | min < -5 or max > 10000 µg/m³ | 25% |
| Drift | the level has shifted from the sensor's own recent baseline | |z| ≥ 3 vs. the sensor's trailing baseline | 25% |
Weights are provisional and equal across the four checks — they will be tuned once the full-panel score distribution is visible. Staleness and completeness are correlated views of dropout.
Why PM2.5, and why this feed
PM2.5 is fine particle pollution small enough to slip past your lungs' defenses and enter the bloodstream. It carries the tightest link of any common pollutant to premature death, and it's the number on your phone's AQI. This page grades the open network anyone can add to — mostly low-cost community and hobbyist sensors — not the regulatory monitors behind your weather app. That's exactly where "can you trust the data" is a live question. And to be clear: this reads the health of the data, not the air.
Why the checks are built this way
OpenAQ can ingest readings out of chronological order, so a feed can look briefly stale or gappy when the lag is upstream, not at the sensor. Two choices absorb that: completeness is measured over a fixed trailing 30-day window rather than raw last-seen, so it reads the sensor's reporting health, not OpenAQ's ingestion lag; and staleness keeps a deliberately conservative 24-hour bar so ordinary lag never trips it. Windowed completeness, plausibility, and drift all come from one bounded per-sensor daily-aggregate call, with no dense measurement pulls, so the whole panel scores on free rails.
The honest denominator
Two corrections come before any number. First, dedup to physical sites: 4,679 raw rows collapse to 4,314 real locations (one coordinate + provider is one site, so a station's hardware-swap history can't count as dozens of monitors). Second, separate the dark from the reporting: a sensor silent 7+ days, or never seen, is counted as dark (1,731 of them), not scored. We have no recent data to judge its health, and scoring it would let a dead feed read as "fair." That leaves 2,583 reporting sensors actually scored, 2583 of them on the map, each with a US map position. Sensors whose provider license disallows redistribution are held out of scope before scoring (none this run).
Panel: US PM2.5 feeds OpenAQ openly redistributes, low-cost sensors and all. It leans hobbyist and community-network heavy (AirGradient and Clarity dwarf the regulatory AirNow feed, and some attributions are individuals), so it is not "the US air-sensor network" or the regulatory monitors behind your phone's AQI. Two richer checks (flatline detection and cross-sensor consistency) are deferred to a later version.
Source data: OpenAQ (CC BY 4.0) + each sensor's upstream provider. Provider names in the per-sensor table are the upstream attribution.
Derived JSON & open pipeline: github.com/dustincole-data/sensor-data-quality →