Methodology
Every number on this site comes from NOAA station data. This page explains which data, which station, and how each number is calculated.
Sources
- NOAA U.S. Climate Normals, 1991-2020: normal highs, lows, precipitation, snowfall, degree days, hourly normals and freeze probabilities.
- GHCN-Daily: daily highs, lows, precipitation and snow depth for 1991-2020, used for day counts and year-to-year records.
- NOAA Integrated Surface Database (ISD-Lite): hourly dew point and wind for 1991-2020, used for muggy, comfortable and beach days.
- US Census Bureau: city populations (Vintage 2025 estimates; ACS 2020-2024 for census-designated places), boundaries and ZIP code areas. USGS: city center points and elevations.
All raw files are kept unchanged, with their checksums, and every page can be rebuilt from them.
Choosing stations
Each kind of data gets its own station: temperature, rain, snowfall, snow depth, frost dates, hourly normals, cloud cover and hourly observations. Candidates within 25 miles of the city center (60 miles for hourly data, which only airports record) are scored in "equivalent miles":
- Distance from the city center (the USGS point for the city).
- Elevation difference: no penalty up to 200 ft, a mild penalty to 500 ft and a strong one beyond. Stations more than 1,500 ft above or below the city are not used.
- Completeness: NOAA's quality flag and years of data, and the share of months in 1991-2020 with at least 80% of days recorded. A station needs at least 60% of months and 15 complete years for every calendar month.
- Station type: long-running airport and weather-service stations are preferred; remote mountain snow sites are avoided for towns.
- Setting: a coastal city prefers a station near the shore when a qualifying one exists.
Editors can pin a station when the score picks a less representative one. If no station qualifies, the value is shown as not available. Each page lists its stations with ID, distance, direction and elevation.
Some suburbs use exactly the same temperature and rain stations as a larger neighbor. Rather than repeat the same numbers on two pages, the larger city's page covers both and says so.
What the numbers mean
Normal high and low are NOAA's 1991-2020 normals for the station: the average daily maximum and minimum temperature over 30 years. Precipitation includes melted snow. A "dry year" and "wet year" are NOAA's 25th and 75th percentile monthly totals.
A typical day uses NOAA hourly normals at 6 am, 9 am, noon, 3 pm, 6 pm and 9 pm, in local standard time. Cloud cover is the share of hours between 9 am and 5 pm with clear or few clouds, from hourly normals (about 200 airports). Airport sensors only detect clouds below 12,000 ft, and we do not publish counts of "sunny days".
Daylight, sunrise and sunset come from NOAA's solar equations at the city center, in local clock time including daylight saving time.
Day counts
Day counts are counted from real daily records, never from averages: for each year from 1991 to 2020, we count the qualifying days in a month, skip months with fewer than 80% of days recorded, and average over at least 15 valid years. February averages 28.25 days.
- Wet day: at least 0.01 in of precipitation; notable rain: at least 0.10 in.
- Hot day: high of 90°F or more. Cold day: high of 40°F or less. Freezing night: low of 32°F or less.
- Snow on the ground: snow depth of 1 in or more.
- Muggy day: daily mean dew point of 65°F or more (70°F or more is oppressive).
- Comfortable day: high of 65-80°F and daily mean dew point below 60°F. Where no humidity station is close enough, only the temperature test is used and the page says so.
- Beach day: high of 80-95°F, less than 0.05 in of rain and afternoon wind under 15 mph. Shown only for places within 10 miles of an ocean, gulf or Great Lake.
A day's mean dew point needs at least 8 hourly observations covering all four quarters of the day. Daily records are converted back to the units they were observed in (whole °F, hundredths of an inch) before thresholds are applied, so a 90°F reading counts as 90°F.
Frost dates
Frost dates are NOAA's freeze probabilities for the station. The typical last spring frost is the date with a 50% chance of a later frost; the 1 year in 10 date has a 10% chance, so planting after it is 90% safe. In fall, the typical first frost has a 50% chance of coming earlier, and the 1-in-10 date a 10% chance. We show 32°F (frost) and 28°F (hard freeze) dates and the frost-free season.
Where a 32°F night happens in fewer than 50% of years, we show that chance instead of dates. The Old Farmer's Almanac uses 30% dates; other sources use the median. See frost dates by ZIP code.
Best months score
Each month scores 0 to 100: 40 × the share of comfortable days, + 25 × the share of days without notable rain, + 20 × the share of days that are neither hot nor cold, + 15 × daylight (9 hours counts as 0, 15 hours as 1). The best months are the top 3 months within 3 points of the highest score. The parts are shown on every city page.
How summaries are written
The sentences at the top of each page are written by rules, not by people or AI. Each month is classified (for example "mild", "mostly dry", "one of the coolest months in Miami") from fixed thresholds and from the city's own range over the year. Numbers can only enter a sentence from the data, and automated tests check every number in every sentence against the source values and reject contradictions such as "dry" in a month with 10 wet days.
Validation
- Values read from NOAA's station files match NOAA's separately packaged files exactly in a random sample of 50 stations, and published city values match NOAA exactly in a sample of 50 cities.
- Our day counts from daily records closely match NOAA's own day counts for the same stations (wet days: median difference 0.03 days a month).
- Automated checks flag impossible values (negative rain, January warmer than July, more days than the month has).
Rounding
Values are kept as NOAA publishes them and rounded only for display: temperatures and day counts to whole numbers, precipitation to 0.1 in (0.01 in below 0.1 in), daylight to 0.1 hour. °C values are converted from the rounded °F value.
Limits
Normals describe 1991-2020, not this year's weather or a forecast. A station can be several miles from a neighborhood, and hills, water and pavement change local temperatures. Records shown are the highest and lowest in 1991-2020 at the station, not all-time records. Found something wrong? Tell us.