With a strong El Niño predicted for next winter, it's worth knowing what that actually tends to mean for snowpack across the West — and history is the best guide we have. This map pairs 40 years of peak snowpack data with the ENSO phase for each winter, so you can look back at past El Niño and La Niña years and see how your region actually fared.
Use the slider or arrow buttons to step through each year. The ENSO phase for that winter is labeled in the map header. Filter by phase to isolate El Niño or La Niña years and compare the patterns directly. Dark blue means well above the 1991–2020 median peak; red means well below. Click any basin for the specific percentage.
Peak SWE % of 1991–2020 Median · HUC8 Watersheds · Western US · 1982–2025 · NRCS SNOTEL via OutsideDB · ENSO classification: NOAA ONI Dec–Feb
How It Was Built
The underlying data is SNOTEL station records from our PostgreSQL database — specifically the nrcs.snotel_historical_daily table, which holds every daily observation we have going back to the 1960s. For each station and each water year, we identified the single highest SWE reading between January and June: the annual peak. That peak was then expressed as a percentage of the station's own 1991–2020 median peak, which is the NRCS standard reference period.
Rather than plotting individual stations, we aggregated to HUC8 watersheds — the eight-digit Hydrologic Unit Code basins defined by the USGS Watershed Boundary Dataset. Each station was assigned to its HUC8 basin using a PostGIS spatial join (ST_Within), and the basin value for each year is the median of all station percentages within that basin. Basins with fewer than two active stations in a given year are excluded.
| Step | What It Does | Why This Approach |
|---|---|---|
| Annual peak | Max SWE reading Jan–Jun per station per water year | Captures the season's stored water at its highest point regardless of when it occurs |
| % of median | Station peak ÷ that station's 1991–2020 median peak | Normalizes across different elevations and climates — a 10-inch peak at a low station may be exceptional; the same reading at a high station may be terrible |
| Spatial join | PostGIS ST_Within against USGS WBD HUC8 polygons |
More accurate than using SNOTEL attribute codes, which can be stale or incorrect |
| Basin aggregation | Median of all station percentages within the basin | Median is more robust than mean when a basin has outlier stations; it also matches the NRCS approach for basin-level reporting |
| ENSO classification | NOAA ONI Dec–Feb average for the winter preceding peak | The Dec–Feb window captures the core of the snow accumulation season when ENSO teleconnections to western US precipitation are strongest |
ENSO and the Color of the Map
The ENSO filter is probably the most interesting lens on this dataset. The oceanic and atmospheric patterns that define El Niño and La Niña don't control western snowpack directly — local topography, storm track, and elevation all introduce a lot of noise — but at the basin level the signal is real enough to be worth exploring.
Filter to strong El Niño years and the southern Rockies and California ranges tend to light up — the subtropical jet strengthens and tracks further south, delivering moisture to Arizona, New Mexico, and the Sierra. The Pacific Northwest and northern Rockies often run below normal in those same years as the polar jet shifts away. La Niña years tend to reverse the pattern: the Pacific Northwest and northern Rockies do better, while the southern tier runs dry.
The northern Rockies — Montana, northern Idaho, and the ranges along the Continental Divide — show a weaker ENSO response than the Southwest, which is consistent with what the climate literature would predict. Their position at higher latitudes means they're more exposed to the polar jet and less sensitive to the subtropical teleconnections that ENSO primarily drives.
What the Map Can and Can't Tell You
A few caveats worth keeping in mind when exploring the data. SNOTEL stations are deliberately sited in forested mid-mountain terrain where snowpack is relatively stable — they are not in exposed alpine zones, which means the readings systematically underrepresent conditions at the highest elevations where snowpack is deepest. Basin values should be read as an index of relative snowpack, not a literal estimate of total water volume.
Station coverage has also improved over time. Earlier years in the dataset — particularly before 1990 — have sparser station networks, so some basin medians for early years are based on fewer stations and carry more uncertainty. The 1991–2020 reference period itself was constructed from a denser network than was available in the early 1980s, so very early years should be interpreted carefully.
Finally, the spatial join assigns each station to a single HUC8 basin. In practice, some high-elevation stations sit near watershed divides and could reasonably be attributed to either basin. The median aggregation dampens the impact of individual borderline cases, but you may see occasional basins that seem anomalous — usually a sign of very few stations or a boundary station pulling the median.
The Data Behind the Map
The Python script that generates this file queries our local SNOTEL database, runs the peak extraction and spatial join, pulls ENSO classifications from the NOAA ONI index, and writes everything — basin geometries and all year-by-year values — directly into the HTML as embedded JSON. Leaflet.js handles the rendering client-side. There is no server component after generation; the file can be loaded from anywhere.