← All studies · askamerica.ai

Millions of American schoolchildren attend school near a contaminated site — and those schools skew urban and lower-income

Primary source: Kraft, Malik & Falken (Brown University), Proceedings of the National Academy of Sciences, 2026. Supplemented with an AskAmerica recompute against EPA Superfund NPL sites.

Millions of US schoolchildren attend school near a contaminated site — and those schools are disproportiona… PNAS/Brown Univ. 2026 study (EPA-tracked hazard sites) + AskAmerica recompute using EPA Superfund NPL sites only (2026-09-10) Students within 1/4 mile of a hazard site (national, PNAS) 3,000,000+ 8% of schools Schools within 1 mile of a hazard site (PNAS) 44% documented exposure distance Race/ethnicity: relative likelihood of attending school within 1/4 mile of a… 0 20 40 60 80 100 120 140 Group % more likely Native American Black Hispanic Low-income Source: Kraft et al., PNAS 2026 (Brown University) AskAmerica recompute: schools within 1 mile of a Final-NPL Superfund si… 0 20 40 60 80 100 Group Percent Free/reduced lunch rate Urban locale enrollment share Within 1 mile of Superfund NPL site (n=1,812 schools) Not within 1 mile (n=95,012 schools) AskAmerica: edu.ccd_schools x environment.superfund_sites (npl_status_code='F'), haversine <=1 mile, school year 2023 AskAmerica's own tables (edu.ccd_schools, environment.superfund_sites) do not carry EPA brownfields or TRI facility locations or a precomputed school-hazard distance, so the national 3M/44% figures are drawn directly from the published Brown/PNAS study, not recomputed here. The recompute panel uses only the ~1,337 Final NPL Superfund sites (a stricter, smaller universe than PNAS's combined Superfund+brownfield+TRI hazard list),… AskAmerica · askamerica.ai
SVG

Summary

More than 3 million pre-K-12 students nationally attend a school within a quarter mile of a known EPA-tracked environmental hazard site (Superfund site, brownfield, or Toxics Release Inventory facility) — about 8% of all US schools. Roughly 44% of schools sit within one mile, the distance at which negative health and academic effects have been documented in the literature. These schools are not evenly distributed: Native American, Black, Hispanic and low-income students are 124%, 86%, 43% and 40% respectively more likely than their peers to attend a school near a hazard site, and hazard-adjacent schools are concentrated in cities. This is the finding of a 2026 Brown University study published in PNAS (Kraft, Malik & Falken). AskAmerica's own warehouse does not carry the brownfield/TRI facility locations or a precomputed school-to-hazard distance needed to reproduce that study directly, but an independent recompute against the ~1,337 EPA Final National Priorities List (NPL) Superfund sites alone found the same qualitative pattern: schools within one mile of a Final NPL site have a higher free/reduced-price-lunch poverty rate (59.7% vs. 56.3%) and are far more concentrated in urban locales (83.9% vs. 69.4% of enrollment) than schools farther away.

The published finding

Kraft, Malik and Falken (Brown University Annenberg Institute) geocoded the national universe of pre-K-12 schools against EPA-tracked environmental hazard sites — Superfund sites, brownfields, and Toxics Release Inventory (TRI) facilities — and measured distance from each school to the nearest hazard. Headline results, as reported in the study and Brown's press release:

The authors attribute the pattern to historical siting decisions: "Industrial operations often located their facilities in marginalized communities that have more limited political and economic power to oppose them."

What AskAmerica's warehouse could and could not reproduce

AskAmerica carries edu.ccd_schools (NCES Common Core of Data, one row per school per year, with latitude/longitude, enrollment, and free/reduced-price-lunch counts as a poverty proxy) and environment.superfund_sites (EPA SEMS/Envirofacts, one row per Superfund site, with latitude/longitude and NPL status). It does not carry EPA brownfield inventory locations or TRI facility locations — the other two-thirds of the hazard universe the PNAS study used — so a like-for-like reproduction of the study's national 3-million/44% figures is not possible from this corpus alone. Those figures are reported here as published, not recomputed.

What is directly computable here is a narrower version of the same question, using only the ~1,337 sites EPA currently lists as Final NPL Superfund sites (the most severe, cleanup-listed tier — a small fraction of the roughly 55,000 sites in the full SEMS Superfund universe, most of which were investigated and never listed). The starting school population for 2023 is 102,274 schools, all of which have valid coordinates (0 missing). Of those, 5,450 schools (5.3%) were excluded from the recompute because their enrollment was null or zero (mostly closed, virtual-only, or administrative-only records with no student body to count) — these are not a random subset of schools, but they are, by definition, schools with no enrolled students to attribute to any distance band, so their exclusion cannot bias the reported poverty/urbanicity rates, only the headline school-count. That leaves 96,824 schools with valid coordinates and positive enrollment, joined by great-circle distance to the Final-NPL Superfund site list:

These counts are far smaller than PNAS's national totals precisely because they use only the strictest, smallest slice of EPA's hazard-site universe (Final NPL Superfund sites) rather than the combined Superfund+brownfield+TRI list PNAS used, which numbers in the tens of thousands of additional sites. The gap is expected, not a contradiction of the published study.

What kind of communities: the AskAmerica recompute

Comparing the 1,812 schools within one mile of a Final NPL Superfund site to the 95,012 that are not (out of the 96,824 schools with positive enrollment), using NCES's free/reduced-price-lunch count as a poverty proxy and NCES urban-centric locale codes for city/urban-fringe classification (2023 school year):

GroupSchoolsEnrollmentFree/reduced-price-lunch rateUrban-locale enrollment share
Within 1 mile of a Final NPL Superfund site1,812914,38759.7%83.9%
Not within 1 mile95,01248,594,44656.3%69.4%

The gap is modest on income (about 3.4 points higher FRPL) but large on urbanicity (about 14.5 points higher urban-locale enrollment share) for schools near a Final NPL Superfund site — directionally consistent with PNAS's finding that cities carry the greatest hazard-proximity exposure, and with the broader income/race disparities PNAS reports at the full quarter-mile threshold across the wider hazard-site universe. This recompute cannot speak to race/ethnicity, because edu.ccd_schools does not carry a school-level racial-composition breakdown; the race disparities reported above (124%/86%/43%) come from the published study, not from this recompute.

Bottom line

By the best available published estimate (PNAS 2026, Brown University), over 3 million US schoolchildren attend a school within a quarter mile of an EPA-tracked contaminated or hazardous site, and 44% attend one within a mile — the exposure-effect distance. Those schools are disproportionately in cities and disproportionately serve Native American, Black, Hispanic, and low-income students, reflecting historical industrial siting patterns in communities with less political power to resist them. An independent AskAmerica recompute limited to the strictest EPA Superfund NPL listing (a small subset of the full hazard universe PNAS used) reproduces the same qualitative pattern — hazard-adjacent schools skew poorer and much more urban — at smaller absolute counts, as expected given the narrower site definition.

Every query behind this report

5 warehouse calls ran in this session, in order. Each is reproducible against the same snapshot.

query — 8 rows — 7692 ms
SELECT npl_status_code, count(*) FROM environment.superfund_sites GROUP BY npl_status_code ORDER BY 2 DESC
query — 1 rows — 1811 ms
SELECT count(*) FROM edu.ccd_schools WHERE "year" = 2023 AND latitude IS NOT NULL AND enrollment > 0
query — 1 rows — 3335 ms
WITH npl AS (
  SELECT site_id, latitude AS slat, longitude AS slon,
         CAST(ROUND(latitude/0.05) AS INTEGER) AS gy,
         CAST(ROUND(longitude/0.05) AS INTEGER) AS gx
  FROM environment.superfund_sites
  WHERE npl_status_code = 'F' AND latitude IS NOT NULL AND longitude IS NOT NULL
),
offs AS (SELECT * FROM (VALUES (-1),(0),(1)) AS t(o)),
npl_cells AS (
  SELECT n.site_id, n.slat, n.slon, n.gy + oy.o AS gy, n.gx + ox.o AS gx
  FROM npl n CROSS JOIN offs oy CROSS JOIN offs ox
),
sch AS (
  SELECT ncessch, latitude AS clat, longitude AS clon, enrollment,
         free_or_reduced_price_lunch AS frpl, urban_centric_locale,
         CAST(ROUND(latitude/0.05) AS INTEGER) AS gy,
         CAST(ROUND(longitude/0.05) AS INTEGER) AS gx
  FROM edu.ccd_schools
  WHERE "year" = 2023 AND latitude IS NOT NULL AND longitude IS NOT NULL AND enrollment > 0
),
pairs AS (
  SELECT s.ncessch, s.enrollment, s.frpl, s.urban_centric_locale,
         3959 * acos( LEAST(1.0, GREATEST(-1.0,
           cos(radians(s.clat))*cos(radians(n.slat))*cos(radians(n.slon)-radians(s.clon))
           + sin(radians(s.clat))*sin(radians(n.slat)) ))) AS dist_mi
  FROM sch s
  JOIN npl_cells n ON n.gy = s.gy AND n.gx = s.gx
),
mind AS (
  SELECT ncessch, enrollment, frpl, urban_centric_locale, min(dist_mi) AS min_dist
  FROM pairs
  GROUP BY ncessch, enrollment, frpl, urban_centric_locale
)
SELECT
  sum(CASE WHEN min_dist <= 0.25 THEN 1 ELSE 0 END) AS schools_qtr_mi,
  sum(CASE WHEN min_dist <= 0.25 THEN enrollment ELSE 0 END) AS students_qtr_mi,
  sum(CASE WHEN min_dist <= 1.0 THEN 1 ELSE 0 END) AS schools_1mi,
  sum(CASE WHEN min_dist <= 1.0 THEN enrollment ELSE 0 END) AS students_1mi,
  count(*) AS schools_matched
FROM mind
query — 2 rows — 3580 ms
WITH npl AS (
  SELECT site_id, latitude AS slat, longitude AS slon,
         CAST(ROUND(latitude/0.05) AS INTEGER) AS gy,
         CAST(ROUND(longitude/0.05) AS INTEGER) AS gx
  FROM environment.superfund_sites
  WHERE npl_status_code = 'F' AND latitude IS NOT NULL AND longitude IS NOT NULL
),
offs AS (SELECT * FROM (VALUES (-1),(0),(1)) AS t(o)),
npl_cells AS (
  SELECT n.site_id, n.slat, n.slon, n.gy + oy.o AS gy, n.gx + ox.o AS gx
  FROM npl n CROSS JOIN offs oy CROSS JOIN offs ox
),
sch AS (
  SELECT ncessch, latitude AS clat, longitude AS clon, enrollment,
         free_or_reduced_price_lunch AS frpl, urban_centric_locale,
         CAST(ROUND(latitude/0.05) AS INTEGER) AS gy,
         CAST(ROUND(longitude/0.05) AS INTEGER) AS gx
  FROM edu.ccd_schools
  WHERE "year" = 2023 AND latitude IS NOT NULL AND longitude IS NOT NULL AND enrollment > 0
),
pairs AS (
  SELECT s.ncessch, s.enrollment, s.frpl, s.urban_centric_locale,
         3959 * acos( LEAST(1.0, GREATEST(-1.0,
           cos(radians(s.clat))*cos(radians(n.slat))*cos(radians(n.slon)-radians(s.clon))
           + sin(radians(s.clat))*sin(radians(n.slat)) ))) AS dist_mi
  FROM sch s
  JOIN npl_cells n ON n.gy = s.gy AND n.gx = s.gx
),
mind AS (
  SELECT ncessch, min(dist_mi) AS min_dist
  FROM pairs
  GROUP BY ncessch
),
allsch AS (
  SELECT s.ncessch, s.enrollment, s.frpl, s.urban_centric_locale,
         m.min_dist,
         CASE WHEN m.min_dist <= 1.0 THEN 'within_1mi' ELSE 'not_within_1mi' END AS grp
  FROM sch s LEFT JOIN mind m ON m.ncessch = s.ncessch
)
SELECT
  grp,
  count(*) AS n_schools,
  sum(enrollment) AS total_enrollment,
  round(100.0*sum(CASE WHEN frpl >= 0 THEN frpl ELSE 0 END) / NULLIF(sum(CASE WHEN frpl >= 0 THEN enrollment ELSE 0 END),0), 1) AS pct_frpl,
  round(100.0*sum(CASE WHEN urban_centric_locale IN (11,12,13,21,22,23) THEN enrollment ELSE 0 END)/sum(enrollment),1) AS pct_enroll_urban
FROM allsch
GROUP BY grp
query — 1 rows — 1828 ms
SELECT count(*) AS total_2023, sum(CASE WHEN latitude IS NULL OR longitude IS NULL THEN 1 ELSE 0 END) AS missing_coords, sum(CASE WHEN enrollment IS NULL OR enrollment <= 0 THEN 1 ELSE 0 END) AS missing_or_zero_enroll FROM edu.ccd_schools WHERE "year" = 2023

Sources

  1. Kraft, Malik & Falken — "US schools' proximity to environmental hazard sites: A national analysis," PNAS, 2026 — Primary published study; PNAS page returned HTTP 403 on direct fetch attempt, so figures are cited via Brown University's official press release covering the same study, not recomputed here
  2. Brown University press release: "New research shows nearly half of U.S. pre-K-12 schools are near environmental hazard sites" (2026-08-11) — Fetched and parsed directly 2026-09-10; source of the 3M/44%/8%/race-disparity figures
  3. The 74: "Millions of U.S. Students Attend Schools Near Environmentally Hazardous Sites" — Secondary coverage, consistent with the primary source
  4. Education Week: "Millions of Students Attend Schools Near Toxic Sites, a New Study Shows" — Secondary coverage
  5. AskAmerica: schools within 1 mile of a Final NPL Superfund site vs. other schools, FRPL rate and urban locale share, 2023 — See sql
    Show SQL
    WITH npl AS (SELECT site_id, latitude AS slat, longitude AS slon, CAST(ROUND(latitude/0.05) AS INTEGER) AS gy, CAST(ROUND(longitude/0.05) AS INTEGER) AS gx FROM environment.superfund_sites WHERE npl_status_code = 'F' AND latitude IS NOT NULL AND longitude IS NOT NULL), offs AS (SELECT * FROM (VALUES (-1),(0),(1)) AS t(o)), npl_cells AS (SELECT n.site_id, n.slat, n.slon, n.gy + oy.o AS gy, n.gx + ox.o AS gx FROM npl n CROSS JOIN offs oy CROSS JOIN offs ox), sch AS (SELECT ncessch, latitude AS clat, longitude AS clon, enrollment, free_or_reduced_price_lunch AS frpl, urban_centric_locale, CAST(ROUND(latitude/0.05) AS INTEGER) AS gy, CAST(ROUND(longitude/0.05) AS INTEGER) AS gx FROM edu.ccd_schools WHERE "year" = 2023 AND latitude IS NOT NULL AND longitude IS NOT NULL AND enrollment > 0), pairs AS (SELECT s.ncessch, s.enrollment, s.frpl, s.urban_centric_locale, 3959 * acos(LEAST(1.0, GREATEST(-1.0, cos(radians(s.clat))*cos(radians(n.slat))*cos(radians(n.slon)-radians(s.clon)) + sin(radians(s.clat))*sin(radians(n.slat))))) AS dist_mi FROM sch s JOIN npl_cells n ON n.gy = s.gy AND n.gx = s.gx), mind AS (SELECT ncessch, min(dist_mi) AS min_dist FROM pairs GROUP BY ncessch), allsch AS (SELECT s.ncessch, s.enrollment, s.frpl, s.urban_centric_locale, m.min_dist, CASE WHEN m.min_dist <= 1.0 THEN 'within_1mi' ELSE 'not_within_1mi' END AS grp FROM sch s LEFT JOIN mind m ON m.ncessch = s.ncessch) SELECT grp, count(*) AS n_schools, sum(enrollment) AS total_enrollment, round(100.0*sum(CASE WHEN frpl >= 0 THEN frpl ELSE 0 END) / NULLIF(sum(CASE WHEN frpl >= 0 THEN enrollment ELSE 0 END),0), 1) AS pct_frpl, round(100.0*sum(CASE WHEN urban_centric_locale IN (11,12,13,21,22,23) THEN enrollment ELSE 0 END)/sum(enrollment),1) AS pct_enroll_urban FROM allsch GROUP BY grp