Source. Appendix C, Table C-2 of the National Building Code of Canada 2020 (the BC Building Code 2024 Appendix C for British Columbia) — the same table a plan checker opens. Design conditions are the CSA F280-12 inputs, as printed: 2.5% January heating dry-bulb, July 2.5% cooling dry-bulb and coincident wet-bulb, and HDD18. Climatic data researched by Environment and Climate Change Canada for the Canadian Commission on Building and Fire Codes. Where your authority having jurisdiction publishes its own design temperature, use theirs. Updated 2026-09-11: earlier versions of this page quoted NRCan HOT2000 weather-station values, which run 1–7 °C warmer than the code table in much of the country.
Why this is the number that matters
A heat loss calculation is, at its core, a temperature difference multiplied by how badly the building leaks. Every envelope assembly, every window, every air change — all of it scales with the gap between the indoor setpoint and the outdoor design condition. Get that gap wrong and the whole calculation is wrong by roughly the same proportion, no matter how carefully you measured the walls.
Canada makes this unusually unforgiving. Victoria’s heating design temperature is −4 °C. Yellowknife’s is −41 °C. Against F280’s 22 °C indoor heating setpoint that is a design ΔT of 26 K versus 63 K — a factor of roughly 2.4 on the same house. A calculator that offers you “cold” and “very cold” as climate options is discarding the one input that does the most work.
What “2.5%” means, and why it is not the record low
The 2.5% January design dry-bulb is the temperature the location stays above for 97.5% of January hours. It is colder than the site is for all but roughly eighteen hours of that month, and it is deliberately not the coldest night on record.
That choice is not laziness, it is the whole point. Sizing to a record cold snap gives you equipment that is oversized for every other hour of the winter. An oversized furnace short-cycles, swings room temperature, and runs its blower in bursts instead of the long steady cycles that actually mix a house. An oversized heat pump is worse, because it also gives up the part-load efficiency you paid for. The design condition is a deliberate bet that the handful of hours below it are covered by the building’s thermal mass, the setback recovery margin, and — on a heat pump — the supplementary heat that is already sized in.
HDD18 is an input, not trivia
Heating degree-days base 18 °C measure how far and how long a location sits below 18 °C over a year. In CSA F280-12 this is not just a climate statistic to quote in a report — it feeds the infiltration method, so it changes the calculated load directly.
It is also the fastest way to compare two places honestly. Toronto and Winnipeg differ by roughly 2,000 degree-days. Two identical houses, one in each city, do not use “a bit more” heat in Winnipeg; they are in different energy regimes, and the equipment, the ventilation strategy and the payback maths for a heat pump all move with it.
Design conditions by city
Sorted coldest first. The location column is the Appendix C Table C-2 row that the listed postal code actually resolves to — see the note below the table on why those sometimes differ from the city name.
| City | Prov | FSA | Table C-2 location | Heating 2.5% | Cooling 2.5% | HDD18 |
|---|---|---|---|---|---|---|
| Whitehorse | YT | Y1A | Whitehorse | -41 | 25 | 6,580 |
| Yellowknife | NT | X1A | Yellowknife | -41 | 25 | 8,170 |
| Iqaluit | NU | X0A | Iqaluit | -40 | 17 | 9,980 |
| Thompson | MB | R8N | Thompson | -40 | 27 | 7,600 |
| Fort McMurray | AB | T9H | Fort McMurray | -38 | 28 | 6,250 |
| Prince Albert | SK | S6V | Nipawin | -37 | 28 | 6,300 |
| Grande Prairie | AB | T8V | Grande Prairie | -36 | 27 | 5,790 |
| Saskatoon | SK | S7K | Saskatoon | -35 | 30 | 5,700 |
| Regina | SK | S4P | Regina | -34 | 31 | 5,600 |
| Thunder Bay | ON | P7B | Raith | -34 | 28 | 5,900 |
| Timmins | ON | P4N | Timmins | -34 | 29 | 5,940 |
| Brandon | MB | R7A | Brandon | -33 | 30 | 5,760 |
| Val-d’Or | QC | J9P | Val-d’Or | -33 | 29 | 6,180 |
| Winnipeg | MB | R3C | Winnipeg | -33 | 30 | 5,670 |
| Prince George | BC | V2L | Prince George | -32 | 28 | 4,720 |
| Red Deer | AB | T4N | Red Deer | -32 | 28 | 5,550 |
| Calgary | AB | T2P | Calgary | -30 | 28 | 5,000 |
| Edmonton | AB | T5J | Edmonton | -30 | 28 | 5,120 |
| Lethbridge | AB | T1J | Lethbridge | -30 | 31 | 4,500 |
| Saguenay | QC | G7H | Saguenay | -30 | 28 | 5,700 |
| Sherbrooke | QC | J1H | Lennoxville | -28 | 29 | 4,700 |
| Sudbury | ON | P3E | Sudbury | -28 | 29 | 5,180 |
| Québec City | QC | G1R | Beauport | -26 | 28 | 5,100 |
| Gatineau | QC | J8X | Aylmer | -25 | 30 | 4,520 |
| Ottawa | ON | K1P | Ottawa (City Hall) | -25 | 30 | 4,440 |
| Trois-Rivières | QC | G8T | Trois-Rivières | -25 | 29 | 4,900 |
| Fredericton | NB | E3B | Fredericton | -24 | 29 | 4,670 |
| Kamloops | BC | V2C | Kamloops | -23 | 34 | 3,450 |
| Moncton | NB | E1C | Moncton | -23 | 28 | 4,680 |
| Montréal | QC | H2X | Montréal (City Hall) | -23 | 30 | 4,200 |
| Kingston | ON | K7L | Kingston | -22 | 28 | 4,000 |
| Saint John | NB | E2L | Saint John | -22 | 25 | 4,570 |
| Charlottetown | PE | C1A | Charlottetown | -20 | 26 | 4,460 |
| London | ON | N6A | London | -18 | 30 | 3,900 |
| Mississauga | ON | L5B | Mississauga | -18 | 30 | 3,880 |
| Toronto | ON | M5V | Toronto (City Hall) | -18 | 31 | 3,520 |
| Hamilton | ON | L8P | Hamilton | -17 | 31 | 3,460 |
| Kelowna | BC | V1Y | Kelowna | -17 | 33 | 3,400 |
| Corner Brook | NL | A2H | Corner Brook | -16 | 26 | 4,760 |
| Halifax | NS | B3H | Halifax | -16 | 26 | 4,000 |
| Sydney | NS | B1P | Sydney | -16 | 27 | 4,530 |
| Windsor | ON | N9A | Windsor | -16 | 32 | 3,400 |
| St. John’s | NL | A1C | St. John’s | -15 | 24 | 4,800 |
| Surrey | BC | V3T | Surrey (88 Ave & 156 St.) | -8 | 29 | 2,750 |
| Vancouver | BC | V6B | Vancouver (City Hall) | -7 | 28 | 2,825 |
| Victoria | BC | V8W | Victoria | -4 | 24 | 2,650 |
Cite, embed or download this table
Free to reuse under CC BY 4.0: keep the source line and the link. The underlying values are public building-code data; the compilation and postal-code mapping are ours.
Citation
HTML embed (the table plus a source line)
Download as CSV · 46 cities, 7 columns, UTF-8.
Why your postal code may resolve to another town
Table C-2 lists about 680 locations and there are vastly more communities, so every forward sortation area is mapped to the nearest listed location in the same province. Most of the time that is invisible and harmless — design conditions change slowly across a region.
Sometimes it is visible in the table above. Thunder Bay’s downtown FSA resolves to Raith, the nearest listed row. Prince Albert resolves to Nipawin. Big cities get several rows — Vancouver (City Hall), Burnaby (General), Toronto (City Hall), Ottawa (Kanata) — and the postal code picks the nearest one. In each case the location is close enough that the substitution is defensible.
Where it deserves a second look is anywhere terrain changes fast — a valley bottom versus the plateau above it, a lakeshore versus twenty kilometres inland — or anywhere in the territories, where a single FSA can span an area larger than most provinces. Nunavut is the clearest case: one FSA covers communities more than 1,500 km apart, so a nearest-location match there can be a long way off. If the resolved location is not obviously your climate, use the design temperature your AHJ publishes for that municipality instead.
Using these in a calculation
These are inputs to a load calculation, not a substitute for one. The heating design dry-bulb sets the ΔT for conduction and infiltration; the cooling dry-bulb and its mean coincident wet-bulb split the cooling load into sensible and latent; HDD18 drives the F280 infiltration method.
If you want to see them applied rather than tabulated, the free heat pump sizing calculator runs a whole-house block load from a postal code in the browser and shows you which location and which temperatures it used. For the full calculation offline — blower-door airtightness, HRV and ERV recovery, window U-factor and SHGC overrides, and a report you can hand over — that is the CSA F280 app.
FAQ
What is the 2.5% heating design temperature?
The January dry-bulb the location stays above for 97.5% of that month’s hours. Deliberately not the record low — sizing to a record cold snap oversizes equipment for the entire rest of the winter.
Why does my postal code resolve to a location in another town?
About 680 listed locations, far more communities. Each FSA maps to the nearest Table C-2 row in its province. Normal and usually fine; worth checking where terrain changes quickly or in the territories.
What is HDD18 and why does F280 use it?
Heating degree-days base 18 °C. F280-12 uses it in the infiltration method, so it is a calculation input rather than a statistic. It is also the cleanest single-number comparison between two climates.
Can I use these for a permit submission?
Ask the AHJ first. Many reference the design temperatures in their provincial code appendix, tabulated by municipality rather than by weather station. Where they name a value, use theirs.
Are these the same as ASHRAE 99% design temperatures?
Close in intent, not identical in convention. US Manual J work generally uses the ASHRAE 99% and 1% values; F280 work in Canada uses the 2.5% convention shown here. Do not mix the two within one calculation.