Methodology

Every figure on this site is derived from NOAA public-domain data. This page documents how we pick weather stations, what we compute, and where the limits of each method are. For source datasets see Data Sources.

Primary station per city

Each city is linked to one primary station in NOAA's Global Historical Climatology Network (GHCN). The primary station is chosen as the nearest station that is either an airport (the longest, most uniform records) or a long-record cooperative station. City climate figures come from this station — not interpolated, not blended. This means a city's "climate" is technically the climate at the airport closest to it, which can differ slightly from neighborhood-level conditions.

30-year climate normals

All monthly figures (avg high, avg low, avg precipitation, snow, rainy days) are 1991-2020 normals — a 30-year rolling window that NOAA re-publishes every decade. "Normals" smooth over individual storms and unusual years to describe what's typical. They aren't forecasts. The previous period (1981-2010) ran ~0.4°F cooler on average for most US stations; the next (2001-2030) is expected to be warmer still.

Daily all-time records

We compute the highest temperature ever recorded on each calendar day, the lowest, and the most precipitation in 24 hours — using each primary station's entire daily history (GHCN-Daily). Records span from each station's first year of observation (some go back to the 1840s) through the most recent year of data.

Climate-change signal

For each city we count what fraction of all-time daily heat records and cold records were set in the last decade. If records were spread evenly across a station's history, you'd expect roughly 5% of records per decade. Many US stations show 15-30%+ of all-time heat records set since 2015, while cold records have become rarer. This is a robust signal because each daily record (e.g. "the hottest June 4 ever") can only be held by one year — every new record literally pushes out an old one.

USDA Plant Hardiness Zones (approximation)

Official USDA zones are defined by the average annual extreme minimum temperature — the coldest temperature recorded in a typical winter. We approximate this from each station's coldest-month average low, subtracting a 15°F offset (extreme min tends to be ~15-20°F colder than mean Jan low). Bands are 10°F wide, sub-divided into "a" (colder half) and "b" (warmer half).

Accuracy: most stations fall within one half-zone of the official USDA map. For formal garden planning (especially borderline cases) check the official USDA map at planthardiness.ars.usda.gov.

Köppen-Geiger climate classification

Each city is assigned a Köppen code based on its monthly tavg and precipitation patterns, using the standard rules:

Sub-letters describe precipitation seasonality (f/s/w) and summer temperature (a/b/c/d). Borderline cases between two adjacent zones may be classified differently in academic sources; our classification is internally consistent within the 1991-2020 normals.

Climate twins

For each city we compute its climate signature: a 24-dimensional vector of 12 monthly tavg values plus 12 monthly precipitation values. Each dimension is z-score normalized across the population of all US cities, so that temperature variance and precipitation variance contribute proportionally to similarity scoring.

The closest twin is the city whose vector has the smallest Euclidean distance to a given city's vector, among all US cities at least 2° latitude/longitude (~140 mi) away. The geographic constraint filters out near-neighbor matches that share a primary station (which would always be exact twins).

Heating- and cooling-degree days

HDD and CDD are standard energy-cost proxies based on a 65°F reference. For each month with tavg below 65°F, we add (65 − tavg) × 30 to the heating-degree-day total. Same idea for cooling, in the other direction. Our monthly aggregation is a simplification of the daily definition — for a station, daily aggregation produces slightly higher totals because day-to-day variability adds margin. For relative comparison between cities, the monthly approach is fine.

Best time to visit

For travel-comfort classification we tag each month one of: Excellent (avg high 65-80°F, avg low ≥ 50°F, precip < 4 in), Good (broader band but still mild), Cool, Cold (high < 45°F), Hot (high ≥ 88°F), or Wet (precip ≥ 5 in). The "best window" is the longest consecutive run of Excellent/Good months (allowing year-end wrap-around).

Daylight hours

Daylight hours per month are computed astronomically from each city's latitude and the mid-month day of year. The figure shown is the time between sunrise and sunset for that day (geometric, no atmospheric refraction or civil-twilight offset).

Caveats

Found a number that looks wrong? Get in touch.