Student / Research Project

Estimating PFAS Contamination Risk in Freshwater Fish

This tool uses a predictive research model to estimate the possible risk of PFAS ("forever chemical") contamination in freshwater fish, based on location, elevation, date, and fish size. It is intended to support research and education around per- and polyfluoroalkyl substances (PFAS) in aquatic ecosystems.

⚠️
Disclaimer This tool is for research purposes only. It uses a predictive model that may have significant margins of error. It is not an official health advisory. Always refer to your local Department of Fish and Wildlife for official consumption guidelines.

What This Project Does

PFAS are persistent synthetic chemicals that have been linked to industrial sites, airports, and military installations that historically used PFAS-containing firefighting foam (AFFF). These chemicals can enter waterways and bioaccumulate in fish over time. This project explores whether a simple set of location- and biology-based inputs can produce a useful, approximate risk estimate.

Scatter plot of PFAS data with a fitted upper-envelope curve of the form C/x
The fitted upper-envelope curve (purple), of the form C/x, plotted against the underlying sample data. The curve is set so that ~95% of points fall below it.
Full-range scatter plot of the underlying PFAS sample data
The same dataset shown across its full range, illustrating the rapid C/x-style decay that the upper-envelope model is fit to.

Run a Prediction

Enter the catch location, elevation, date, and fish length below. These values are passed into the getPFASUE() model described in the Methodology section.

Decimal degrees, -90 to 90
Decimal degrees, -180 to 180
Elevation of the catch site, in miles above sea level
Format: mm/dd/yy (e.g. 07/04/26)
Total length of the fish, in millimeters
No data leaves your browser — everything runs locally in JavaScript.

Prediction Results

⚠️
Disclaimer This tool is for research purposes only. It uses a predictive model that may have significant margins of error. It is not an official health advisory. Always refer to your local Department of Fish and Wildlife for official consumption guidelines.

Estimated PFAS Uptake Estimate (PFAS-UE) for this catch:

-- Risk
Estimated PFAS (ppb, 95% Upper Envelope)
--
Nearest Known Base
--
Fish Length Input
--

Model Inputs

Methodology

This site uses getPFASUE(), a 95th-percentile upper-envelope (quantile regression) formula. It is fit so that roughly 95% of actual sampled PFAS concentrations fall below the predicted curve — it estimates a statistical upper bound, not an average/expected concentration. It combines three inputs:

1

Proximity to Known Military Installations (D)

The site's latitude/longitude is compared against a reference list of ~750 U.S. military installation coordinates (military bases historically associated with PFAS-containing firefighting foam, AFFF). The distance in miles to the nearest installation is calculated using the haversine formula and used directly as an input to the formula.

2

Elevation (E)

Site elevation above sea level, in miles, is used directly as an input to the formula.

3

Fish Length (L)

PFAS is known to bioaccumulate over an organism's lifetime. Fish length is used here as a proxy for age/size and is passed directly into the formula.

All of this logic lives inside the getPFASUE() JavaScript function in the page source, clearly marked with comments. The catch date is still collected and the quantile constant (q) is still fixed at 0.95, but neither currently factors into the calculation in this version of the formula — that time-dependent term is commented out in the source rather than removed, in case it's reinstated later.

Limitations

This tool has significant limitations that anyone using it should understand.