Best Smoke Days — Methodology
How the 0-100 smoke score is calculated. Five weather signals, a wet-bulb stall model, cooker-specific wind sensitivity, and full transparency on the data sources.
Data sources
Forecasts are pulled from Open-Meteo as the primary source, with the US National Weather Service as failover. The worker tries Open-Meteo first; if Open-Meteo returns 5xx, times out, or sends malformed JSON, the request fails over to NWS within the same fetch cycle. Successful Open-Meteo responses are cached in Cloudflare KV with a 30-minute freshness window and a 6-hour stale-while-error window — so a brief upstream outage doesn't blank the forecast.
Both sources are airport-grade. They don't see your yard's trees, structures, or elevation. Step outside before lighting the fire — the score is a planning signal, not a ground truth.
The five scoring signals
- Precipitation (up to 50 points). Probability times accumulation. 90% rain + 0.5″ accumulation costs the full 50 points so the day lands in the red band on its own.
- Wind and gusts (scaled by cooker sensitivity). Effective gust = reported gust if present, otherwise sustained wind × 1.4 (CONUS inland gust factor). Penalty grows linearly from 10 mph and caps at 35 mph. Coefficient: offset 1.5×, pellet 1.0×, kettle 1.2×, kamado 0.5×, electric 0.1×.
- Cold mornings (up to 20 points). Penalty starts below 40 °F low and reaches full at 10 °F. Catches the days where startup is hard and fuel rate explodes.
- Hot afternoons (up to 25 points). Penalty starts above 85 °F high and reaches full above 110 °F (the danger-zone end of the operating range).
- Stall risk (up to 20 points, stall-sensitive cuts only). Computes the wet-bulb temperature inside the cooker cavity using the Stull 2011 formula. Maps wet-bulb 110 °F → 160 °F to 0–100% stall risk; applies as a penalty for brisket flat, brisket packer, pork butt, spare ribs, baby back ribs, and lamb shoulder.
The four bands
- Ideal (85-100). Light the fire.
- Green (70-84). Solid cook conditions with one or two minor caveats.
- Yellow (50-69). Cook is workable but requires attention — wind, humidity, or temperature are pushing the edges.
- Red (0-49). Pick a different day if you can.
Confidence labels
Each day in the 7-day window carries a confidence label that reflects the forecast horizon, not the score: high for the next 24-48 hours, medium for days 3-4, low for days 5-7. The label is a forecast-uncertainty signal — a high-confidence red day is more reliable bad news than a low-confidence ideal day is reliable good news.
Open-source guarantees
The scoring engine lives in packages/shared/src/scoring.ts and is mirrored to
_partials/weather-score-shared.js so the browser computes the same score the server does. A
parity test runs both implementations on identical fixtures and asserts byte-for-byte agreement; if either
side drifts, CI fails. The repository is at
github.com/djmonty93/pitmaster.tools.
Have a question this page doesn't answer? See the FAQ or affiliate disclosures.