Reference
Methodology: How PoolWindow Computes Its Dates
Last updated: July 15, 2026
Every date on this site comes from one documented site model applied to public climate data. This page states each formula in one sentence with its number, so you can check, quote, or disagree with any of them. None of this is a physical law or a lab result — it is a reproducible convention, and we label it "site model" everywhere it appears.
Inputs
Temperature normals come from the NOAA/NCEI U.S. Climate Normals 1991–2020 daily dataset, fields
DLY-TMAX-NORMAL and DLY-TMIN-NORMAL.
Each city uses its nearest station that publishes complete daily temperature normals within 60 km (about 37 miles); the station name and distance are printed on every city page.
First-freeze dates use the same normals program's annual/seasonal dataset, field
ANN-TMIN-PRBFST-T32FP50 — the date by which there is a 50% probability the first 32°F minimum has
occurred.
Live air temperatures on city pages come from the Open-Meteo forecast API: 21 past days plus 10 forecast days of daily highs and lows.
City coordinates, populations, and time zones come from the SimpleMaps US Cities (Basic) database.
The model, formula by formula
mean7(d) is the centered 7-day average of (DLY-TMAX-NORMAL + DLY-TMIN-NORMAL) / 2 — three days either side of day d, wrapping across the year boundary.
openAnchor is the first calendar day whose mean7 reaches 61°F.
We use 61°F on the 7-day mean as a proxy for "unheated pool water is approaching 65°F," the zone where algae growth accelerates.
openBy, the recommended opening date, is openAnchor minus 14 days.
openWindow runs from openBy minus 7 days to openAnchor.
closeAnchor is the last calendar day of the year whose mean7 is at or above 61°F.
closeBy, the closing deadline, is the earlier of closeAnchor plus 10 days or the first-freeze date minus 7 days.
closeWindow runs from closeAnchor to closeBy; where the freeze cap lands before closeAnchor (some mountain climates), the window is anchored to the deadline instead and the city page says so.
swimSeasonDays counts the days whose normal high is at or above 80°F.
A city is classified year-round when its mean7 never falls below 61°F — or when its warm season crosses New Year (the mean dips below the threshold only briefly in midwinter), leaving no in-calendar closing week; such pages carry no closing deadline and describe winter care instead.
Anchors are found by scanning outward from the coldest day of the year, so seasons that straddle the calendar boundary resolve correctly.
A first-freeze normal dated January–June is treated as next winter's freeze when capping the closing deadline — along the warm coasts the typical first 32°F night falls after New Year.
Feb 29 is dropped from the normals so every year maps onto a stable 365-day calendar.
The water-temperature model
Estimated water temperature is an exponential moving average of daily mean air temperature:
W[t] = W[t−1] + K × (Tmean[t] − W[t−1]) with K = 0.12.
K = 0.12 gives the model a thermal memory of roughly two weeks, which matches how slowly a residential pool's water mass follows the air.
W is initialized as the average Tmean of the first 5 days of the 21-day lookback window.
The same formula runs in the browser on live Open-Meteo data and at build time on the normals (the seasonal fallback curve shown when live data is unavailable).
We display the result as "Estimated unheated pool water temp," and we treat it as accurate to about ±5°F.
Honest limitations
The model assumes an unheated, outdoor, in-ground pool of typical residential depth in open sun.
Heated pools, indoor pools, screened enclosures (common in Florida), above-ground pools, high-shade yards, and windy exposures all move real water temperature outside the model's error bars.
Normals are 30-year statistics, not forecasts: an unusual spring or fall in your city can shift the right real-world date by weeks, which is exactly what the live widget is for.
Station distance matters: a station up to 60 km away, or at a different elevation, represents your backyard imperfectly; we print both values on every city page rather than hiding them.
Dates on this site are planning guidance for pool maintenance timing only — they are not safety advice, water quality advice, or a promise about swimming conditions.
Chemical guidance on this site never includes dosages; the label on each product is the only dosing authority we recognize.
Rebuild cadence
The whole site is regenerated from source data in one build; the "Last updated" line on every page is that build's date.
Climate normals change once per decade (the next NOAA release covers 2001–2030), so date changes between builds come only from bug fixes or coverage changes.
Questions or corrections: see contact. Data licenses and attribution: see sources.