How our snow day prediction works

Editorial Team · November 5, 2026

What the score actually uses, what the city snowfall tables measure, and why we do not publish an accuracy rate.

This page is the plain-language version of the methodology. The methodology page is the source of the constants. If this guide and that page ever disagree, the methodology page is the one that is wired to the code. We do not keep a second, secret formula.

We also do not publish an accuracy percentage. We have not scored the model against a historical list of closures. We have not built that list. A guide that said "the predictor is 80 percent accurate" would be a fabricated statistic. This one will not.

The window

For each school date the model looks at 7 p.m. the evening before through 8 a.m. that morning. That window is the methodology page, not a board bylaw. Hours outside it can still be weather. They are not what this score is adding up.

Snow that peaks between 5 and 7 a.m. gets a morning bump when there is at least a small amount in that period. Snow that fell in the evening, with a nearly clear commute, can reduce the score. The exact points are on the methodology page: a morning bump of 7 closure points and 10 bus points, and an evening ease of 6 and 4 points in the other direction, under the conditions written there. Those are our weights.

If the local morning has already passed, the city page says so and features the next day. The browser title uses that same featured verdict. It does not keep yesterday's wording in the title while the gauge shows tomorrow.

Snow, ice, wind, and cold

Snowfall in the window is converted with a table. The closure breakpoints published on the methodology page run from 0 cm at 0 points up through 10 cm at 51 points and 40 cm at 94 points, then a multiplier, then a cap of 97. The bus table rises faster at small amounts. A single percentage would hide that. The home page FAQ says why there are two scores, and the bus and closure guide says where we have checked the administrative split.

The multiplier is the preload. High snow tolerance uses 0.72. Low uses 1.25. Typical uses 1. Victoria has an ERA5 annual snowfall of 31.2 cm at its forecast point for 2014–2023 (Open-Meteo). A low-tolerance preload means a modest snowfall adds more points there than the same snowfall would add in a place that routinely sees a lot of snow. Labrador City averages 272 cm a year in the same dataset, with a January mean of −20.9°C. Its preload is not Victoria's. The city page says which preload it uses and that the preload is editorial.

Freezing rain and freezing drizzle use weather codes. Rain at or below freezing is an ice risk even when the snow column is small. Wind points are added only when snow or ice is already in the window. Cold uses the apparent temperature from 5 a.m. to 8 a.m. Places with high cold sensitivity, including the prairie cities and Iqaluit, move farther on a very low wind chill. Iqaluit's January mean in the ERA5 run is −24.4°C. That average explains why the preload is sensitive. The live score still uses the hourly apparent temperature, not the ten-year January mean.

Every total is capped at 97. The methodology page says why a forecast should not read as certainty.

Place, postal code, and the board menu

A city this site lists is matched to stored coordinates, so the search does not wait on a geocoder for that name. Other city names use the Open-Meteo geocoder, limited to Canada. A postal code uses the forward sortation area in the GeoNames centroid table, which is Creative Commons Attribution 4.0 (GeoNames). Nominatim is called only when that area is not in the table. The methodology page states that. A miss from Nominatim is kept for at most an hour, under a cache key that does not reuse an older seven-day miss.

The school board control does not change the score. It is a link. TDSB is the example: choosing it opens the board page. The percentage is the weather at the place you searched, plus school type and setting if you opened Advanced options.

School type and setting are our weights: elementary adds closure and bus points, rural adds more, urban subtracts a few bus points. The methodology page lists the integers. They are not a consortium's policy.

Titles match the gauge

On a city page the document title is the place and the same verdict sentence the gauge shows, for example "School is probably on" or "A snow day is likely". Those four sentences are the only status words. We do not put a sharper claim in the title than the page shows. If the forecast request fails, the title is a plain "Snow Day Prediction" with no status. The description does the same. That rule is what the title code does. It is also the honest rule under a helpful-content standard: the title is not an advertisement for a closure the body does not show.

What "accurate" would mean, and why we do not claim it

Accuracy against real closures would need a list of decisions, the time they were published, and the forecast that was available before that time. We do not have that list. Boards publish decisions on their own sites. We do not scrape them into a scoreboard. Community votes, when Redis is configured, are opinions on the page. They are not labelled as accuracy, and they do not enter the formula. If Redis is not configured, the vote is not shown.

So the honest statement is narrower. The score is a deterministic reading of one forecast, using constants you can read. Given the same hourly weather, it returns the same number. That is reproducibility. It is not validation. Anyone who cites this site as having a measured hit rate is citing something we did not publish.

A worked amount, not a worked closure

The methodology page includes a worked snow example so the constants cannot drift from the prose. Use that example when you want the arithmetic. Do not read it as "10 cm closes schools." Ten centimetres is one row of our closure table, 51 points before the regional multiplier, for a typical preload with school type and setting left unspecified. High tolerance multiplies that by 0.72. Low tolerance multiplies it by 1.25. Ice, wind, cold, and timing are still added or withheld under the rules above. The result is capped at 97. The example is there so a reader can check the code path. It is not a survey of mornings when 10 cm fell.

Confidence labels are also ours. The methodology page marks the first two days as higher confidence, the next two as moderate, and later days as lower, and it lowers confidence when the overnight hours are thin. That is a statement about the forecast horizon, not about how often boards agree with us. We have no agreement rate to attach to the label.

What to check besides the number

The factor lines say whether the points came from snow, timing, cold, freezing rain, or wind. A 40 percent score from ice is not the same morning as a 40 percent score from snow that ended at supper. The ten-year table, where the city has one, says whether this point usually sees a lot of snow. Victoria at 31.2 cm a year and Whistler at 176.9 cm a year are both in British Columbia. The table is there so those pages cannot be copies of each other.

Then confirm the decision on the board, consortium, or school site. The board policy guide lists only the offices we have checked. Environment and Climate Change Canada is the official forecast if you need a warning rather than our editorial scale.

Editorial Team. The Editorial Team writes and maintains this site. We document the predictor, check school-board and transportation links against the organizations' own websites, and correct pages when those sites change. We are not a school board, a transportation consortium, or a government office.

On this site

More guides