Military PFAS Dataset ===================== License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) Citation: TapWaterData Editorial. "Military PFAS Dataset: U.S. Department of Defense PFAS-assessed installations joined to nearby community water systems and federal PFAS drinking-water monitoring (UCMR5)." Data updated 2026-07-11. Licensed under CC BY 4.0. https://tapwaterdata.com/military-pfas Data updated: 2026-07-11 Schema version: 1.0.0 What this is ------------ A maintained join of every U.S. Department of Defense PFAS-assessed installation to the community and on-base federal water systems near it, enriched with the latest federal PFAS monitoring (EPA UCMR5) and the current EPA PFAS drinking-water limits. A water system is associated with an installation by geographic proximity only (service-area overlap, within 3 miles, or a county/ZIP fallback). Proximity is geographic and is never a statement that an installation is the source of anything. Files ----- - military-base-pfas.csv: one row per (installation, water system); flat per-compound columns. - military-base-pfas.json: the full nested dataset with per-base flags and a _meta license block. - military-base-pfas-README.txt: this file. Row model --------- Each CSV row is one water system associated with one installation. An installation with zero associated water systems has NO CSV row but IS present in the JSON index (its "systems" array is empty) -- it is counted honestly and never dropped. Units ----- All PFAS concentrations are in parts per trillion (ppt). Lead is in parts per billion (ppb). Testing states (important) -------------------------- - ucmr5_tested = false means the system was NOT part of UCMR5 monitoring for that compound. Absence of testing is NOT the same as a clean result. - ucmr5_non_detect = true means the system WAS sampled and every result was below the minimum reporting level. - A non-detect is a distinct state from "not tested". UCMR5 results are federal monitoring data, not a violation determination. Sources ------- - U.S. Department of Defense PFAS PA/SI installation list — installations being assessed for PFAS use or potential release (progress as of September 30, 2025) - U.S. Army Corps of Engineers (USACE) Military Installations, Ranges, and Training Areas (MIRTA) boundaries - EPA ECHO Safe Drinking Water Act (SDWA) public water system records - EPA UCMR5 (Fifth Unregulated Contaminant Monitoring Rule) national PFAS occurrence data — Feb 2026 release - EPA PFAS National Primary Drinking Water Regulation (40 CFR 141 Subpart Z; Federal Register document 2024-07773, published April 26, 2024; EPA docket EPA-HQ-OW-2022-0114) - utility-reported water quality data Column dictionary ----------------- base_id: Deterministic installation id (slug + state). base_name: Installation name as published by DoD. branch: Military branch / owning organization. component: Installation component/type (Active, National Guard, BRAC, FUDS). state: State/territory name. state_code: Two-letter state/territory code. lat: Installation centroid latitude (blank when no geometry was resolved). lng: Installation centroid longitude (blank when no geometry was resolved). dod_cleanup_status: DoD PA/SI disposition: no_further_action or proceeding. base_any_system_exceeds_4ppt: True if any associated system's latest PFOA or PFOS exceeds 4 ppt. base_any_system_in_dod_gap: True if any associated system's latest PFOA/PFOS is in the 4-12 ppt DoD interim-action gap. base_any_system_rescission_affected: True if any associated system has a PFHxS/PFNA/HFPO-DA/PFBS detection whose limit EPA proposes to rescind. base_has_on_base_federal_system: True if any associated system is an on-base federal water system. pwsid: EPA Public Water System ID. system_name: Water system name (EPA ECHO SDWA). population_served: Population served (EPA ECHO SDWA). owner_type: EPA owner-type code (F=federal, L=local, P=private, S=state, ...). federal_on_base_system: True when this is an on-base federal water system (attached separately, never merged). join_basis: How the system was associated: overlap, within_3mi, or county_zip_fallback (geographic only). distance_miles: Approximate boundary-to-boundary miles (0 for overlap; blank for county/ZIP fallback). city_slug: Link into the corresponding city page, or blank. hazard_index_computed: Recomputed PFAS-mixture Hazard Index (sum of latest/HBWC over PFHxS,PFNA,HFPO-DA,PFBS); blank when no component was tested. HI MCL = 1. health_based_violations: Count of health-based SDWA violations (EPA ECHO); blank when none recorded. Not a PFAS violation determination. latest_violation_date: Latest health-based SDWA violation date (EPA ECHO), or blank. lead_utility_reported_ppb: Utility-reported lead value in ppb, or blank. lead_reported_date: Date of the utility-reported lead value, or blank. pfoa_ucmr5_tested: [PFOA] True if the system was sampled for this analyte under UCMR5. False is NOT a clean result. pfoa_ucmr5_latest_ppt: [PFOA] Latest UCMR5 result in ppt (blank when not tested or non-detect). pfoa_ucmr5_max_ppt: [PFOA] Maximum UCMR5 result in ppt over the window (context only; blank when not tested or non-detect). pfoa_ucmr5_latest_sample_date: [PFOA] Date of the latest UCMR5 sample, or blank. pfoa_ucmr5_sample_count: [PFOA] Number of UCMR5 sample rows (0 when not tested). pfoa_ucmr5_non_detect: [PFOA] True only if sampled with every result below the reporting level (distinct from not tested). pfoa_ucmr5_mrl_ppt: [PFOA] UCMR5 minimum reporting level in ppt (blank when not tested); UCMR5 cannot see below this. pfoa_utility_reported_ppt: [PFOA] Utility-reported value for this compound in ppt, or blank. pfoa_utility_reported_date: [PFOA] Date of the utility-reported value, or blank. pfoa_mcl_ppt: [PFOA] Codified April-2024 EPA MCL in ppt (blank for PFBS, which has no individual MCL). pfoa_exceeds_mcl: [PFOA] True when the latest result exceeds this compound's MCL. pfoa_exceeds_4ppt: [PFOA] True when the latest PFOA/PFOS result exceeds 4 ppt (false for other compounds). pfoa_in_dod_gap_4to12: [PFOA] True when the latest PFOA/PFOS result is in the 4-12 ppt DoD interim-action gap. pfoa_rescission_affected: [PFOA] True when this compound (PFHxS/PFNA/HFPO-DA/PFBS) has any UCMR5 detection and its limit is among those EPA proposes to rescind (a proposal, not final). pfos_ucmr5_tested: [PFOS] True if the system was sampled for this analyte under UCMR5. False is NOT a clean result. pfos_ucmr5_latest_ppt: [PFOS] Latest UCMR5 result in ppt (blank when not tested or non-detect). pfos_ucmr5_max_ppt: [PFOS] Maximum UCMR5 result in ppt over the window (context only; blank when not tested or non-detect). pfos_ucmr5_latest_sample_date: [PFOS] Date of the latest UCMR5 sample, or blank. pfos_ucmr5_sample_count: [PFOS] Number of UCMR5 sample rows (0 when not tested). pfos_ucmr5_non_detect: [PFOS] True only if sampled with every result below the reporting level (distinct from not tested). pfos_ucmr5_mrl_ppt: [PFOS] UCMR5 minimum reporting level in ppt (blank when not tested); UCMR5 cannot see below this. pfos_utility_reported_ppt: [PFOS] Utility-reported value for this compound in ppt, or blank. pfos_utility_reported_date: [PFOS] Date of the utility-reported value, or blank. pfos_mcl_ppt: [PFOS] Codified April-2024 EPA MCL in ppt (blank for PFBS, which has no individual MCL). pfos_exceeds_mcl: [PFOS] True when the latest result exceeds this compound's MCL. pfos_exceeds_4ppt: [PFOS] True when the latest PFOA/PFOS result exceeds 4 ppt (false for other compounds). pfos_in_dod_gap_4to12: [PFOS] True when the latest PFOA/PFOS result is in the 4-12 ppt DoD interim-action gap. pfos_rescission_affected: [PFOS] True when this compound (PFHxS/PFNA/HFPO-DA/PFBS) has any UCMR5 detection and its limit is among those EPA proposes to rescind (a proposal, not final). pfhxs_ucmr5_tested: [PFHxS] True if the system was sampled for this analyte under UCMR5. False is NOT a clean result. pfhxs_ucmr5_latest_ppt: [PFHxS] Latest UCMR5 result in ppt (blank when not tested or non-detect). pfhxs_ucmr5_max_ppt: [PFHxS] Maximum UCMR5 result in ppt over the window (context only; blank when not tested or non-detect). pfhxs_ucmr5_latest_sample_date: [PFHxS] Date of the latest UCMR5 sample, or blank. pfhxs_ucmr5_sample_count: [PFHxS] Number of UCMR5 sample rows (0 when not tested). pfhxs_ucmr5_non_detect: [PFHxS] True only if sampled with every result below the reporting level (distinct from not tested). pfhxs_ucmr5_mrl_ppt: [PFHxS] UCMR5 minimum reporting level in ppt (blank when not tested); UCMR5 cannot see below this. pfhxs_utility_reported_ppt: [PFHxS] Utility-reported value for this compound in ppt, or blank. pfhxs_utility_reported_date: [PFHxS] Date of the utility-reported value, or blank. pfhxs_mcl_ppt: [PFHxS] Codified April-2024 EPA MCL in ppt (blank for PFBS, which has no individual MCL). pfhxs_exceeds_mcl: [PFHxS] True when the latest result exceeds this compound's MCL. pfhxs_exceeds_4ppt: [PFHxS] True when the latest PFOA/PFOS result exceeds 4 ppt (false for other compounds). pfhxs_in_dod_gap_4to12: [PFHxS] True when the latest PFOA/PFOS result is in the 4-12 ppt DoD interim-action gap. pfhxs_rescission_affected: [PFHxS] True when this compound (PFHxS/PFNA/HFPO-DA/PFBS) has any UCMR5 detection and its limit is among those EPA proposes to rescind (a proposal, not final). pfna_ucmr5_tested: [PFNA] True if the system was sampled for this analyte under UCMR5. False is NOT a clean result. pfna_ucmr5_latest_ppt: [PFNA] Latest UCMR5 result in ppt (blank when not tested or non-detect). pfna_ucmr5_max_ppt: [PFNA] Maximum UCMR5 result in ppt over the window (context only; blank when not tested or non-detect). pfna_ucmr5_latest_sample_date: [PFNA] Date of the latest UCMR5 sample, or blank. pfna_ucmr5_sample_count: [PFNA] Number of UCMR5 sample rows (0 when not tested). pfna_ucmr5_non_detect: [PFNA] True only if sampled with every result below the reporting level (distinct from not tested). pfna_ucmr5_mrl_ppt: [PFNA] UCMR5 minimum reporting level in ppt (blank when not tested); UCMR5 cannot see below this. pfna_utility_reported_ppt: [PFNA] Utility-reported value for this compound in ppt, or blank. pfna_utility_reported_date: [PFNA] Date of the utility-reported value, or blank. pfna_mcl_ppt: [PFNA] Codified April-2024 EPA MCL in ppt (blank for PFBS, which has no individual MCL). pfna_exceeds_mcl: [PFNA] True when the latest result exceeds this compound's MCL. pfna_exceeds_4ppt: [PFNA] True when the latest PFOA/PFOS result exceeds 4 ppt (false for other compounds). pfna_in_dod_gap_4to12: [PFNA] True when the latest PFOA/PFOS result is in the 4-12 ppt DoD interim-action gap. pfna_rescission_affected: [PFNA] True when this compound (PFHxS/PFNA/HFPO-DA/PFBS) has any UCMR5 detection and its limit is among those EPA proposes to rescind (a proposal, not final). hfpo_da_ucmr5_tested: [HFPO-DA] True if the system was sampled for this analyte under UCMR5. False is NOT a clean result. hfpo_da_ucmr5_latest_ppt: [HFPO-DA] Latest UCMR5 result in ppt (blank when not tested or non-detect). hfpo_da_ucmr5_max_ppt: [HFPO-DA] Maximum UCMR5 result in ppt over the window (context only; blank when not tested or non-detect). hfpo_da_ucmr5_latest_sample_date: [HFPO-DA] Date of the latest UCMR5 sample, or blank. hfpo_da_ucmr5_sample_count: [HFPO-DA] Number of UCMR5 sample rows (0 when not tested). hfpo_da_ucmr5_non_detect: [HFPO-DA] True only if sampled with every result below the reporting level (distinct from not tested). hfpo_da_ucmr5_mrl_ppt: [HFPO-DA] UCMR5 minimum reporting level in ppt (blank when not tested); UCMR5 cannot see below this. hfpo_da_utility_reported_ppt: [HFPO-DA] Utility-reported value for this compound in ppt, or blank. hfpo_da_utility_reported_date: [HFPO-DA] Date of the utility-reported value, or blank. hfpo_da_mcl_ppt: [HFPO-DA] Codified April-2024 EPA MCL in ppt (blank for PFBS, which has no individual MCL). hfpo_da_exceeds_mcl: [HFPO-DA] True when the latest result exceeds this compound's MCL. hfpo_da_exceeds_4ppt: [HFPO-DA] True when the latest PFOA/PFOS result exceeds 4 ppt (false for other compounds). hfpo_da_in_dod_gap_4to12: [HFPO-DA] True when the latest PFOA/PFOS result is in the 4-12 ppt DoD interim-action gap. hfpo_da_rescission_affected: [HFPO-DA] True when this compound (PFHxS/PFNA/HFPO-DA/PFBS) has any UCMR5 detection and its limit is among those EPA proposes to rescind (a proposal, not final). pfbs_ucmr5_tested: [PFBS] True if the system was sampled for this analyte under UCMR5. False is NOT a clean result. pfbs_ucmr5_latest_ppt: [PFBS] Latest UCMR5 result in ppt (blank when not tested or non-detect). pfbs_ucmr5_max_ppt: [PFBS] Maximum UCMR5 result in ppt over the window (context only; blank when not tested or non-detect). pfbs_ucmr5_latest_sample_date: [PFBS] Date of the latest UCMR5 sample, or blank. pfbs_ucmr5_sample_count: [PFBS] Number of UCMR5 sample rows (0 when not tested). pfbs_ucmr5_non_detect: [PFBS] True only if sampled with every result below the reporting level (distinct from not tested). pfbs_ucmr5_mrl_ppt: [PFBS] UCMR5 minimum reporting level in ppt (blank when not tested); UCMR5 cannot see below this. pfbs_utility_reported_ppt: [PFBS] Utility-reported value for this compound in ppt, or blank. pfbs_utility_reported_date: [PFBS] Date of the utility-reported value, or blank. pfbs_mcl_ppt: [PFBS] Codified April-2024 EPA MCL in ppt (blank for PFBS, which has no individual MCL). pfbs_exceeds_mcl: [PFBS] True when the latest result exceeds this compound's MCL. pfbs_exceeds_4ppt: [PFBS] True when the latest PFOA/PFOS result exceeds 4 ppt (false for other compounds). pfbs_in_dod_gap_4to12: [PFBS] True when the latest PFOA/PFOS result is in the 4-12 ppt DoD interim-action gap. pfbs_rescission_affected: [PFBS] True when this compound (PFHxS/PFNA/HFPO-DA/PFBS) has any UCMR5 detection and its limit is among those EPA proposes to rescind (a proposal, not final). Regulatory status ----------------- The April 2024 EPA PFAS National Primary Drinking Water Regulation (40 CFR 141 Subpart Z) sets the maximum contaminant levels that are the current, legally enforceable federal limits for these PFAS in public drinking water: 4 parts per trillion (ppt) each for PFOA and PFOS, 10 ppt each for PFHxS, PFNA, and HFPO-DA (GenX), and a Hazard Index of 1 for mixtures of PFHxS, PFNA, HFPO-DA, and PFBS. In 2026 the EPA published two proposals affecting this rule: one (docket EPA-HQ-OW-2025-0654) proposes to rescind the regulatory determinations for the PFHxS, PFNA, HFPO-DA, and PFBS limits together with the Hazard Index, and a companion proposal (docket EPA-HQ-OW-2025-1742) proposes to adjust the compliance timing for the PFOA and PFOS maximum contaminant levels. The public comment period on both proposals closes on July 20, 2026. These are proposals, not final rules: the April 2024 limits remain in force unless and until any change is finalized. UCMR5 results shown here are federal monitoring data, not a violation determination, and a water system's geographic proximity to a military installation is never a statement of cause.