Methodology
WorkWindow combines two independent calculations: a live 10-day window check that scores every forecast day GOOD, MARGINAL, or NO against typical product-label weather rules, and a climatology of workable days per month computed from NOAA 1991–2020 daily normals. The first answers "can I do it this week?"; the second answers "which months are worth watching at all?" Neither is a guarantee — and the label on your actual product always wins.
The live 10-day check
Forecast data comes from Open-Meteo's forecast API: hourly temperature, relative humidity, dew point, precipitation, precipitation probability, wind speed, and cloud cover, plus daily highs, lows, and precipitation, for 10 days ahead and 2 days back. The 2 look-back days exist because coatings care what fell before you start — wood and pavement must dry out.
Each forecast day is scored by a pure function against the ruleset below. Failures come in two grades:
- Hard fail — rain inside the cure window, a wet lookback, temperature outside the working range, a low under the floor, a freeze for concrete, a collapsed dew-point spread, wind over the task's hard cap. Any hard fail makes the day NO.
- Soft fail — the marginal band: wind that rules out spraying but not brushing, rain arriving in an oil-stain's 24–48 h stretch, humidity within 3 points of the label limit, low-temperature-formula territory (35–50°F highs) for paint. Exactly one soft fail makes the day MARGINAL; two or more make it NO.
Every verdict carries its reasons in plain words (for example, Rain 0.31" within 24h cure or Low 38°F overnight), so you can overrule the engine when your product's label reads differently.
The workable-days formula
For each city, task, and calendar month:
workableDays(month, task) = Σ over days [ TMAX ∈ (tempLo..tempHi) AND TMIN ≥ nightLo ] × (1 − Pprecip(day))
where TMAX and TMIN are the NOAA 1991–2020 daily normal high and low for the city's assigned station, and Pprecip is DLY-PRCP-PCTALL-GE001HI — the share of years in 1991–2020 with measurable precipitation (≥0.01") on that calendar day. One exception: lawn seeding skips the precipitation discount entirely, because light rain helps a seedbed rather than ruining a film; only washout-level rain blocks seeding, and 30-year normals don't resolve washouts well. The washout narrative on seeding pages uses DLY-PRCP-PCTALL-GE050HI (odds of a 0.5"+ day) instead.
This is an estimate from 30-year normals, not a forecast. It deliberately ignores dew point, humidity, and wind (not available as daily normals), so real months yield somewhat fewer workable days than the table shows. Use it to rank months, not to promise dates. Season boundaries on state pages are the first and last months with at least 8 workable days.
Stations and cities
Each city maps to the nearest NOAA normals station within 60 km that carries valid temperature and precipitation-frequency normals; the station name and distance appear in every city page's footer. Cities with no qualifying station are not published. City coordinates and populations come from the sources listed on the sources page.
Every threshold, one table per task
These rules live in a single machine-readable file (rules.json) that feeds the live engine, the climatology, and every visible table on this site — there is exactly one source of truth. Thresholds are a consensus of typical product-label requirements and industry guidance, paraphrased in our own words. Always follow your product label — formulas vary. Concrete guidance is scoped to small DIY pours; structural work follows your engineer and ACI specifications.
Deck Staining
| Check | Threshold | Why it matters |
|---|---|---|
| Air temperature | 50–90°F | Air temperature while applying and for the first hours of dry time. |
| Overnight low | ≥40°F during the first 24 h | Overnight low during the cure window. |
| Dry before | ≤0.05" rain in the prior 24 h; watch back to 48 h | Wood must dry out after rain before it can absorb stain. |
| Dry after | <0.05" rain for 24 h after (48 h oil-based formulas want 48 h dry) | Water-based stains need roughly 24 dry hours; oil-based closer to 48. |
| Evening dew-point spread | ≥5°F from 6–11 pm | Temperature minus dew point from 6 pm to 11 pm. A small spread means dew will settle on fresh stain. |
| Daytime humidity | ≤85% | Daytime relative humidity slows dry time. |
| Wind | ≤15 mph (brush or pad only up to 20 mph) | Above 15 mph, spraying drifts; above 20 mph, dust and debris land in wet stain. |
Always follow your product label — formulas vary. The table above is the typical range across major manufacturers, not a promise about your can.
Exterior Painting
| Check | Threshold | Why it matters |
|---|---|---|
| Air temperature | 50–90°F (low-temp formulas from 35°F) | Standard latex wants 50°F+. Some low-temperature formulas are rated down to 35°F. |
| Overnight low | ≥35°F during the first 24 h (≥40°F preferred) | Paint keeps curing overnight; a low under 40°F stalls standard latex. |
| Dry before | ≤0.05" rain in the prior 12 h; watch back to 24 h | The surface must be dry to the touch and out of a recent soak. |
| Dry after | <0.05" rain for 24 h after | Rain inside the first 24 hours can streak or wash fresh paint. |
| Evening dew-point spread | ≥5°F from 6–11 pm | Surface should stay at least 5°F above the dew point; dew flat-spots fresh paint. |
| Daytime humidity | ≤80% | High humidity extends recoat and cure times. |
| Wind | ≤15 mph (brush only up to 20 mph) | Wind dries the leading edge too fast and carries overspray. |
Always follow your product label — formulas vary. The table above is the typical range across major manufacturers, not a promise about your can.
Driveway Sealing
| Check | Threshold | Why it matters |
|---|---|---|
| Air temperature | 55–90°F, and rising | Sealer wants 55°F and rising — pavement must be warm enough to cure the emulsion. |
| Overnight low | ≥50°F during the first 24 h | The first 24 hours of cure need overnight lows of 50°F or better. |
| Dry before | ≤0.05" rain in the prior 24 h | Asphalt must be fully dry; sealer will not bond to damp pavement. |
| Dry after | <0.05" rain for 36 h after (48 h cool or shaded driveways want 48 h) | Most sealers list 24–48 dry hours; this site checks 36. |
| Evening dew-point spread | ≥5°F from 6–11 pm | Heavy evening dew can blush an uncured sealcoat. |
| Daytime humidity | ≤85% | Water-based sealer dries by evaporation; humid air stalls it. |
| Wind | ≤20 mph (dust and debris in wet sealer up to 28 mph) | Strong wind drops leaves and grit into the wet coat. |
Always follow your product label — formulas vary. The table above is the typical range across major manufacturers, not a promise about your can.
Concrete Pouring
| Check | Threshold | Why it matters |
|---|---|---|
| Air temperature | 40–90°F — ideal 50–85°F | DIY pours work from 40–90°F; 50–85°F is the sweet spot. |
| Overnight low | ≥40°F during the first 48 h | A low under 40°F inside the first 48 hours puts you in cold-weather concreting — not a DIY window. |
| Dry before | no soaking (≥1.0") in the prior 24 h | Rain before the pour only matters if the ground is soaked or standing in water. |
| Dry after | <0.1" rain for 6 h after (12 h light rain after finishing still risks surface marks) | A downpour in the first 6 hours can wash the surface; after final set, rain actually helps curing. |
| Wind | ≤20 mph (rapid surface drying up to 28 mph) | Hot wind pulls bleed water out faster than the slab can handle. |
Always follow your product label — formulas vary. The table above is the typical range across major manufacturers, not a promise about your can.
Roof Coating
| Check | Threshold | Why it matters |
|---|---|---|
| Air temperature | 50–90°F | Acrylic and elastomeric coatings want 50°F+ during application and initial cure. |
| Overnight low | ≥40°F during the first 24 h | Water-based coatings can be ruined by a cold, damp night before they skin over. |
| Dry before | ≤0.05" rain in the prior 24 h; watch back to 48 h | The membrane must be dry — coatings trap moisture that later blisters. |
| Dry after | <0.05" rain for 24 h after (48 h thick coats want 48 h) | Rain inside 24 hours washes uncured coating into gutters. |
| Evening dew-point spread | ≥5°F from 6–11 pm | Roofs radiate heat at night and hit the dew point before anything else in the yard. |
| Daytime humidity | ≤85% | Humid air slows water-based coatings dramatically. |
| Wind | ≤15 mph (roller only, no spray up to 20 mph) | Wind on a roof is a safety limit first and an overspray limit second. |
Always follow your product label — formulas vary. The table above is the typical range across major manufacturers, not a promise about your can.
Lawn Seeding
| Check | Threshold | Why it matters |
|---|---|---|
| Air temperature | 50–85°F (low-temp formulas from 55°F) | Cool-season grasses germinate best with daytime highs of roughly 60–80°F. |
| Overnight low | ≥32°F during the first 48 h (≥40°F preferred) | Seed survives a light frost, but sustained cold stalls germination. |
| Dry before | no soaking (≥1.0") in the prior 24 h | Seeding into mud makes ruts and washes seed into low spots. |
| Dry after | <0.5" rain for 24 h after | Light rain after seeding helps. A 0.5"+ downpour washes seed out. |
| Wind | ≤15 mph (broadcast seed drifts up to 25 mph) | Broadcast spreading above 15 mph lands seed everywhere but the lawn. |
Always follow your product label — formulas vary. The table above is the typical range across major manufacturers, not a promise about your can.
Rebuild cadence
Live verdicts recompute in your browser on every visit (forecast responses cache locally for 60 minutes). The static side — climatology tables, best months, season boundaries — regenerates when the site is rebuilt. NOAA normals are a fixed 1991–2020 product and do not drift between rebuilds, so those numbers are stable by construction.
What this site is not
Not a warranty, not engineering advice, and not a substitute for the label in your hand. If this site says GOOD and your can says no, the can wins. See the full disclaimer.