How the Snow Day Percent Is Calculated (and How Accurate It Is)

We start from the National Weather Service forecast for your grid cell, score six things a district weighs, and add up the points. How accurate is it? Not measured yet. The log below fills in as real outcomes come in, and we won't quote a figure until there are at least 50.

Model v0.1, 2026-11-10. Every number on this page is our assumption until we've compared predictions with real closures. The code that runs in your browser is score.js, and the weights are in params.json. This page is built from that same file, so the two can't drift apart.

The data we use

The NWS forecast for your grid cell. The National Weather Service (NWS) publishes its forecast as a grid of squares about 2.5 km on a side. For each square it gives hour-by-hour forecasts of snowfall, ice accumulation, temperature, wind chill, chance of precipitation and weather type. We read those from the NWS API, along with any active alerts for your forecast zone. A zone is the area NWS issues watches and warnings for, usually a county or part of one. Every result shows when NWS last updated the forecast.

Your local normal snowfall. NOAA's National Centers for Environmental Information (NCEI) publishes 1991-2020 climate normals: 30-year averages for thousands of weather stations. We use the annual snowfall normal at the station nearest your ZIP code, up to 80 km away. Some stations have a full 30-year record. Others are marked provisional by NCEI because they have at least 10 years; the result card tells you which kind you got.

ZIP code locations. The U.S. Census Bureau's 2020 Gazetteer gives a central point for every ZIP Code Tabulation Area, which is the Census version of a ZIP code. We matched each one to its NWS grid cell ahead of time, so your ZIP code is looked up in your browser and never sent to us.

The six factors and their points

A district deciding whether to close is asking a practical question: can buses and student drivers get around safely in the morning, and will they be able to get home? So the model looks at the forecast through that lens.

  1. Snow overnight and before the buses. Forecast snowfall from 6 pm the evening before through 7 am, plus half of whatever falls from noon to 6 pm the day before. This is the biggest factor. It's scaled to your local normal: the same 4 in counts for more where the normal is 10 in a year than where it's 90.
  2. Snow during the school day. Snow from 7 am to 3 pm. It mostly raises the odds of an early dismissal, so it carries a small closure weight.
  3. Ice. Freezing rain leaves a glaze that's harder to treat than snow, so even small amounts score heavily. A hundredth of an inch is already worth 12 points.
  4. Cold. The lowest wind chill forecast from 6 to 9 am, when students wait for buses. Wind chill is how cold it feels on exposed skin once wind is factored in. On its own it adds only a little to the closure score, but it drives the cold-day flag.
  5. NWS alerts. A Blizzard Warning or Ice Storm Warning in effect overnight or in the morning adds the most, then a Winter Storm Warning, a Winter Storm Watch, and a Winter Weather Advisory. Only the strongest alert counts, so overlapping alerts aren't double-counted.
  6. Your adjusters. If you know your district closes easily or rarely, or has already used several snow days, you can say so. These shift the points a little. They're stored only in your browser.
Closure points (model v0.1, 2026-11-10)
FactorWhat we read from the forecastPoints (between the listed values, points rise in a straight line)Status
Snow overnight and before the busesForecast snowfall from 6 pm to 7 am, plus half of any snow from noon to 6 pm the day before, scaled to your local normal0 in → 0, 0.5 in → 4, 1 in → 10, 2 in → 20, 4 in → 34, 6 in → 44, 8 in → 52, 12 in → 60assumption v0.1
Snow during the school dayForecast snowfall from 7 am to 3 pm, scaled the same way0 in → 0, 1 in → 4, 2 in → 8, 4 in → 14, 6 in → 18assumption v0.1
Ice (freezing rain) overnight and before the busesForecast ice accumulation from noon the day before to 7 am0 in → 0, 0.01 in → 12, 0.05 in → 22, 0.1 in → 30, 0.25 in → 42, 0.5 in → 50assumption v0.1
Lowest wind chill, 6-9 amLowest forecast wind chill (or temperature, if NWS gives no wind chill) from 6 to 9 am-10 °F → 0, -20 °F → 6, -30 °F → 14, -40 °F → 20assumption v0.1
NWS alertStrongest NWS alert in effect overnight or in the morning (only one counts)Blizzard Warning +24, Ice Storm Warning +24, Winter Storm Warning +18, Lake Effect Snow Warning +18, Extreme Cold Warning +10, Wind Chill Warning +10, Winter Storm Watch +8, Snow Squall Warning +6, Freezing Rain Advisory +6, Winter Weather Advisory +5, Extreme Cold Watch +4, Cold Weather Advisory +2, Wind Chill Advisory +2assumption v0.1
My district closes…Your choice in "Adjust for your district"easily +8, normally +0, rarely -8assumption v0.1
Snow days used this yearYour choice in "Adjust for your district"0-1 +0, 2-3 -3, 4+ -6assumption v0.1

Local scale: effective inches = forecast inches × (30 ÷ your normal annual snowfall)0.6, kept between 0.45× and 2.5×. With no station within 80 km, the scale is 1×.

Points to percent: closure chance = 1 ÷ (1 + e−(points − 40) ÷ 9), rounded to the nearest 5% and kept between 5% and 95%. So 40 points is a 50% chance, and about 58 points is 90%.

Delay points
FactorPoints
Light snow overnight and before the buses0 in → 0, 0.3 in → 8, 0.75 in → 18, 1.5 in → 28, 3 in → 32
Ice before the buses0 in → 0, 0.01 in → 20, 0.05 in → 26, 0.1 in → 28
Lowest wind chill, 6-9 am-5 °F → 0, -15 °F → 14, -25 °F → 22
NWS alertWinter Weather Advisory +6, Freezing Rain Advisory +8, Cold Weather Advisory +4, Wind Chill Advisory +4, Snow Squall Warning +6

Delay percent: raw delay chance = 1 ÷ (1 + e−(points − 24) ÷ 7), then multiplied by (1 − closure chance), because a closed school can't also open late. Same rounding and limits.

Why a curve and not a straight line? Because closures don't scale evenly. Going from 0 to 1 inch barely changes anything, going from 3 to 6 inches changes a lot, and going from 10 to 14 inches changes little, because school was already going to close. The S-shaped logistic curve behaves the same way. It's also why we never show 0% or 100%: districts sometimes close on a dry forecast for a water main break or a bad overnight freeze, and sometimes stay open through a storm.

A worked example

Here is a real forecast, saved from the NWS API on November 9, 2026 at 1:10 PM AKST for grid cell AFG/379/357. NWS had last updated it November 9, 2026 at 12:18 PM AKST. The place is Utqiagvik (Barrow), Alaska, ZIP 99723, and the school morning is Wednesday, November 11, 2026.

Receipt: Utqiagvik (Barrow), Alaska, ZIP 99723, Wednesday, November 11, 2026
FactorForecastPoints
Snow overnight and before the buses1.8 in (x0.78 for 45.8 in/yr normal)+13.9
Snow during the school day0.7 in+2.3
Ice (freezing rain) overnight and before the buses0 in+0
Lowest wind chill, 6-9 am0°F+0
NWS alertWinter Weather Advisory+5
Total → closure chance21.2 → 10%

21.2 points sits well below the 40-point midpoint, so the closure chance comes out at 10%. The delay side is different: an inch and a half of snow before the buses is worth 26.6 delay points, plus 6 for the advisory, giving 32.6 delay points and a 70% chance of a 2-hour delay. In plain terms: probably not a snow day, probably a late start. Whether the North Slope Borough School District agreed is exactly the kind of thing the accuracy log will record. We'll add a lower-48 example from the first big storm of the season.

What we can't know

A forecast is only part of the decision. Superintendents also weigh things no weather model sees: how far behind the road crews are, how many bus drivers can get in, whether the bus contractor is short-staffed, how many snow days are already used, whether heat or power is out in a building, and what the neighboring districts are doing. A rural district with long, hilly bus routes may close for less snow than a city district with short, well-plowed ones.

Forecasts also bust. A storm can track 50 km north of where it was expected, or warm air can turn snow into rain. When that happens, a calculator built on that forecast will be wrong too.

This is also why two snow day calculators can disagree. They use different weather data, different thresholds and different weights, and most don't publish theirs. If you want to compare, look at whether a calculator says what it's using.

How accurate is it?

Not measured yet. Our site launched in November 2026, and the model hasn't been compared with real closures. We won't quote an accuracy figure until we have at least 50 outcomes to count. Any figure from fewer would be mostly luck.

When we have them, this section will show a table like "we said 60-80% on 14 school mornings, and schools closed on 9." That's called calibration: when we say 70%, it should happen about 7 times in 10. A calculator that says 90% every time it snows can claim to be "right" a lot while telling you very little.

Outcomes will come from opt-in reports on the result card the morning after a prediction (only the first three digits of the ZIP code and the date are kept), spot-checked against district announcements. Misses go in the log too.

Accuracy log
We saidSchool morningsSchools closed
No outcomes logged yet (season starts November 2026).

Changelog

Every change to the model gets a new version, a date and a reason. Weights won't be changed quietly.

VersionDateWhat changed and why
v0.12026-11-10First version. Factors and starting weights chosen by hand as a starting point; not yet fitted to outcomes.

Sources

More on licences and access dates on the sources page. Try the calculator for your ZIP code.