Frost Dates for 110 Canadian Towns
Average last spring frost, average first fall frost and frost-free season length for 110 smaller towns across 10 provinces — from Environment and Climate Change Canada's 1981–2010 Canadian Climate Normals, with every station named and its Climate ID given.
Updated August 2026 · Environment and Climate Change Canada, Canadian Climate Normals 1981–2010
Frost dates for smaller Canadian towns: this page holds ECCC climate normals for 110 towns that are not among the major cities covered elsewhere on the site. The frost-free season runs from Dease Lake at 58 days to Sandspit at 223 days. Each town names the ECCC station that recorded it and that station's Climate ID, so any figure can be checked at source. No hardiness zone is given, because none is published for these towns — and 49 of the stations are airports, which sit in open ground and frost earlier than a sheltered town centre.
How to read the station column. A station name ending in A is an airport; AUT, CS or RCS mark an automatic station. Those sit on open, flat, often low ground where cold air settles on a clear, still night, so they record frost earlier in fall and later in spring than a garden in town. The letter after the Climate ID is ECCC's own completeness rating for that value — A means a nearly complete record over the period, D means noticeably fewer years behind the average.
British Columbia — 21 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Atlin | Jun 3 | Sep 9 | 97 | ATLIN (1200560, C) |
| Bella Coola | May 1 | Oct 6 | 158 | BELLA COOLA A (1060841, D) |
| Blue River | Jun 1 | Sep 10 | 101 | BLUE RIVER A (1160899, C) |
| Campbell River | Apr 28 | Oct 9 | 163 | CAMPBELL RIVER A (1021261, C) |
| Comox | Apr 5 | Nov 3 | 211 | COMOX A (1021830, A) |
| Cranbrook | May 18 | Sep 22 | 126 | CRANBROOK A (1152102, A) |
| Creston | May 3 | Oct 7 | 155 | CRESTON (1142160, A) |
| Dawson Creek | Jun 5 | Aug 31 | 87 | DAWSON CREEK A (1182285, C) |
| Dease Lake | Jun 21 | Aug 18 | 58 | DEASE LAKE (1192340, D) |
| Fort Nelson | May 16 | Sep 11 | 117 | FORT NELSON A (1192940, C) |
| Fort St. John | May 13 | Sep 16 | 125 | FORT ST JOHN A (1183000, A) |
| Golden | May 15 | Sep 22 | 129 | GOLDEN A (1173210, C) |
| Pleasant Camp | May 24 | Sep 22 | 120 | PLEASANT CAMP (1206197, D) |
| Port Hardy | Apr 17 | Oct 31 | 196 | PORT HARDY A (1026270, A) |
| Princeton | May 23 | Sep 17 | 116 | PRINCETON A (1126510, C) |
| Sandspit | Apr 11 | Nov 21 | 223 | SANDSPIT A (1057050, D) |
| Sparwood | Jun 4 | Sep 2 | 89 | SPARWOOD (1157630, C) |
| Stewart | Apr 29 | Oct 12 | 165 | STEWART A (1067742, C) |
| Terrace | Apr 25 | Oct 17 | 174 | TERRACE A (1068130, A) |
| Warfield | Apr 26 | Oct 12 | 169 | WARFIELD (1148700, D) |
| Williams Lake | May 23 | Sep 13 | 112 | WILLIAMS LAKE A (1098940, A) |
Alberta — 8 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Campsie | Jun 2 | Aug 29 | 87 | CAMPSIE (3061200, C) |
| Camrose | May 18 | Sep 17 | 121 | CAMROSE (3011240, C) |
| Cold Lake | May 20 | Sep 14 | 116 | COLD LAKE A (3081680, A) |
| Fort McMurray | May 30 | Sep 6 | 97 | FORT MCMURRAY A (3062693, A) |
| Fort Saskatchewan | May 21 | Sep 16 | 117 | FORT SASKATCHEWAN (3012710, D) |
| Grande Prairie | May 17 | Sep 12 | 117 | GRANDE PRAIRIE A (3072920, A) |
| Peace River | May 19 | Sep 9 | 112 | PEACE RIVER A (3075040, C) |
| Queenstown | May 20 | Sep 20 | 122 | QUEENSTOWN (3035340, D) |
Saskatchewan — 5 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Estevan | May 17 | Sep 16 | 121 | ESTEVAN A (4012400, A) |
| Kelliher | May 21 | Sep 13 | 114 | KELLIHER (4013660, C) |
| Nipawin | May 22 | Sep 12 | 112 | NIPAWIN A (4075518, D) |
| North Battleford | May 23 | Sep 12 | 111 | NORTH BATTLEFORD A (4045600, C) |
| Watrous | May 20 | Sep 10 | 112 | WATROUS (4018640, A) |
Manitoba — 6 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Churchill | Jun 19 | Sep 15 | 87 | CHURCHILL A (5060600, A) |
| Cypress River | May 20 | Sep 18 | 120 | CYPRESS RIVER (5010640, A) |
| Dauphin | May 23 | Sep 17 | 116 | DAUPHIN A (5040680, C) |
| Hodgson | Jun 8 | Sep 6 | 89 | HODGSON 2 (5031301, D) |
| Pinawa | May 27 | Sep 19 | 113 | PINAWA WNRE (5032162, D) |
| The Pas | May 23 | Sep 20 | 119 | THE PAS A (5052880, A) |
Ontario — 13 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Cornwall | Apr 28 | Oct 10 | 164 | CORNWALL (6101874, C) |
| Delhi | May 9 | Oct 1 | 145 | DELHI CDA (6131982, D) |
| Fort Erie | May 4 | Oct 12 | 160 | FORT ERIE (6132470, D) |
| Geraldton | Jun 4 | Sep 14 | 101 | GERALDTON A (6042716, A) |
| Haliburton | Jun 3 | Sep 16 | 104 | HALIBURTON 3 (6163171, D) |
| Kapuskasing | Jun 5 | Sep 15 | 101 | KAPUSKASING A (6073975, B) |
| Kemptville | May 14 | Sep 26 | 134 | KEMPTVILLE (6104025, D) |
| Kenora | May 11 | Oct 2 | 144 | KENORA A (6034075, A) |
| Kirkland Lake | Jun 8 | Sep 8 | 91 | KIRKLAND LAKE (6074209, D) |
| New Glasgow ON | May 3 | Oct 14 | 163 | NEW GLASGOW (6135583, A) |
| Trenton | May 1 | Oct 8 | 158 | TRENTON A (6158875, A) |
| Vineland | Apr 26 | Oct 18 | 174 | VINELAND RITTENHOUSE (6139143, D) |
| Welland | May 9 | Oct 9 | 151 | WELLAND (6139445, D) |
Quebec — 32 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Angers | May 25 | Sep 19 | 116 | ANGERS (7030170, A) |
| Baie-Comeau | May 30 | Sep 15 | 108 | BAIE-COMEAU A (7040440, C) |
| Beausejour | May 23 | Sep 25 | 124 | BEAUSEJOUR (7020567, A) |
| Charteris | May 22 | Sep 18 | 117 | CHARTERIS (7031315, D) |
| Coaticook | May 19 | Sep 29 | 132 | COATICOOK (7021840, C) |
| Drummondville | May 6 | Oct 6 | 152 | DRUMMONDVILLE (7022160, D) |
| Fleury | May 12 | Sep 26 | 135 | FLEURY (7022375, A) |
| Fortierville | May 24 | Sep 15 | 113 | FORTIERVILLE (7022494, C) |
| Granby | May 9 | Oct 7 | 150 | GRANBY (7022800, A) |
| Grandes-Bergeronnes | May 16 | Oct 4 | 140 | GRANDES BERGERONNES (7042840, C) |
| Kuujjuaq | Jun 18 | Sep 9 | 82 | KUUJJUAQ A (7113534, C) |
| Kuujjuarapik | Jun 22 | Sep 25 | 94 | KUUJJUARAPIK A (7103536, D) |
| La Grande Rivière | Jun 19 | Sep 20 | 92 | LA GRANDE RIVIERE A (7093715, D) |
| Lachute | May 12 | Sep 30 | 140 | LACHUTE (7033650, A) |
| Lauzon | May 12 | Oct 3 | 143 | LAUZON (7024254, C) |
| Luskville | May 20 | Sep 20 | 122 | LUSKVILLE (7034365, A) |
| Mont-Joli | May 18 | Oct 5 | 138 | MONT-JOLI A (7055120, C) |
| Quebec Jean Lesage | May 11 | Oct 4 | 145 | QUEBEC/JEAN LESAGE INTL A (7016294, D) |
| Rimouski | May 13 | Oct 11 | 150 | RIMOUSKI (7056480, D) |
| Roberval | May 20 | Sep 27 | 130 | ROBERVAL A (7066685, C) |
| Saguenay | May 22 | Sep 23 | 123 | BAGOTVILLE A (7060400, A) |
| Saint-Anicet | Apr 28 | Oct 8 | 161 | ST ANICET (7026836, A) |
| Saint-Camille | Jun 1 | Sep 8 | 98 | ST CAMILLE (7056930, D) |
| Saint-Georges | May 31 | Sep 17 | 108 | ST GEORGES (7027283, C) |
| Saint-Ludger | Jun 1 | Sep 13 | 103 | ST LUDGER (7027516, D) |
| Saint-Michel | May 18 | Sep 26 | 130 | SAINT MICHEL (7057567, D) |
| Sainte-Lucie | Jun 11 | Aug 27 | 76 | STE LUCIE (7057515, D) |
| Scott | May 21 | Sep 25 | 126 | SCOTT (7027840, C) |
| Sept-Îles | May 25 | Sep 27 | 124 | SEPT-ILES A (7047910, D) |
| Sutton | May 16 | Oct 1 | 137 | SUTTON (7028292, A) |
| Thetford Mines | May 16 | Oct 2 | 138 | THETFORD MINES (7028441, B) |
| Val-d'Or | Jun 5 | Sep 10 | 96 | VAL-D'OR A (7098600, D) |
New Brunswick — 6 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Aroostook | May 23 | Sep 24 | 123 | AROOSTOOK (8100300, D) |
| Bathurst | May 21 | Sep 24 | 125 | BATHURST A (8100503, D) |
| Charlo | May 22 | Sep 28 | 128 | CHARLO A (8100880, C) |
| Doaktown | May 28 | Sep 15 | 109 | DOAKTOWN (8101200, C) |
| Saint-Léonard | May 24 | Sep 16 | 114 | ST LEONARD A (8104928, C) |
| Sussex/Four Corners | May 22 | Sep 24 | 123 | SUSSEX (8105200, A) |
Nova Scotia — 10 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Bridgewater | May 27 | Sep 24 | 119 | BRIDGEWATER (8200600, C) |
| Cheticamp | May 26 | Oct 21 | 147 | CHETICAMP (8200825, D) |
| Collegeville | Jun 7 | Sep 19 | 102 | COLLEGEVILLE (8201000, C) |
| Debert | Jun 3 | Sep 20 | 109 | DEBERT (8201380, D) |
| Greenwood | May 14 | Oct 4 | 142 | GREENWOOD A (8202000, A) |
| Ingonish Beach | May 24 | Oct 17 | 145 | INGONISH BEACH (8202500, D) |
| Nappan | May 29 | Sep 27 | 120 | NAPPAN CDA (8203700, C) |
| Parrsboro | May 21 | Oct 2 | 133 | PARRSBORO (8204400, C) |
| Shearwater | May 3 | Oct 23 | 172 | SHEARWATER A (8205090, C) |
| Waterville Cambridge | May 23 | Sep 29 | 128 | WATERVILLE CAMBRIDGE (8206222, A) |
Prince Edward Island — 2 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| New Glasgow PE | May 26 | Oct 8 | 134 | NEW GLASGOW (8300497, C) |
| St. Peters/Monticello | May 29 | Oct 15 | 138 | MONTICELLO (8300447, C) |
Newfoundland & Labrador — 7 towns
| Town | Last spring frost | First fall frost | Frost-free days | ECCC station (Climate ID, code) |
|---|---|---|---|---|
| Cartwright | Jun 14 | Sep 23 | 99 | CARTWRIGHT (8501100, A) |
| Deer Lake | Jun 12 | Sep 17 | 95 | DEER LAKE A (8401501, C) |
| Gander | Jun 1 | Oct 16 | 136 | GANDER INT'L A (8401700, A) |
| Goose | Jun 4 | Sep 24 | 110 | GOOSE BAY A (8501900, A) |
| Harbour Breton | May 18 | Oct 20 | 153 | HARBOUR BRETON (8402071, D) |
| Stephenville | May 13 | Oct 18 | 157 | STEPHENVILLE A (8403800, A) |
| Wabush | Jun 9 | Sep 14 | 95 | WABUSH LAKE A (8504175, C) |
Where these figures come from
Every value on this page is ECCC's own published figure from the 1981–2010 Canadian Climate Normals, pulled station by station and keyed on Climate ID — the stable identifier for a station, as opposed to its name, which can be ambiguous. The three rows read are Average Date of Last Spring Frost, Average Date of First Fall Frost and Average Length of Frost-Free Period.
The 1981–2010 period is used because it is the only one that publishes those averages. ECCC's newer 1991–2020 normals give a frost probability table instead — the date by which frost has passed at 10%, 25%, 50%, 75% and 90% likelihood — with no plain mean. That distribution is genuinely more useful for planning a tender crop, and it is covered separately in our frost-risk dataset; a page about average frost dates has to use the period that publishes averages.
Towns with no station, or with a station that publishes no frost average, are simply absent. That is a deliberate omission rather than a gap to fill: substituting a neighbouring station's reading without saying so would make a figure look local when it is not. Where the site does use a proxy station — St. Catharines reads from Vineland, about 15 km away — the page says so in as many words.
Using this data
Free to use with attribution. Suggested citation:
GrowersGuide.ca, “Frost Dates for 110 Canadian Towns,” derived from Environment and Climate Change Canada, Canadian Climate Normals 1981–2010. https://growersguide.ca/canadian-town-frost-dates
Cite the underlying station data to Environment and Climate Change Canada directly — the Climate ID in each row is all you need to find the original record.
Frequently Asked Questions
Do you have frost dates for small Canadian towns?
Yes — this page lists average last spring frost, average first fall frost and frost-free season length for 110 smaller towns across 10 provinces, in addition to the major cities covered elsewhere on the site. Every figure comes from Environment and Climate Change Canada's 1981-2010 Canadian Climate Normals, and each town names the specific weather station that recorded it along with that station's Climate ID, so you can verify any number directly at climate.weather.gc.ca.
Why is there no hardiness zone for these towns?
Because none is published for them. Plant hardiness zones in Canada come from Natural Resources Canada, and NRCan publishes zones for the country as a mapped surface rather than as a value for every town. Working one out ourselves would be original research that a reader could easily mistake for the official figure, so we do not do it. The frost dates here are measured values; a zone would be a guess, and the two do not belong in the same table. For a zone, check the NRCan plant hardiness map directly.
Why does it matter which station a frost date came from?
It matters a great deal, and it is the reason every row here names one. Many Canadian climate stations sit at airports, which are typically open, flat, low-lying ground where cold air pools on a clear still night — so an airport frosts earlier in fall and later in spring than the town centre a few kilometres away. 49 of these 110 stations are airport or automatic stations. Treat the date as the honest reading it is, from that specific site, and expect a sheltered urban garden to run a few days milder.
What do the A, B, C and D codes mean?
They are ECCC's own rating of how complete the station's record was over the reference period, and they are shown rather than filtered out. An A means the station had a nearly complete record, and a D means it did not — the value is still ECCC's published figure, but it rests on fewer years of observation, so treat it as a good estimate rather than a precise one. 35 of the 110 towns here carry an A rating.
Why do these use the 1981-2010 normals rather than 1991-2020?
Because the average frost dates only exist in the older period. ECCC published the 1991-2020 normals with a frost-probability table — the date by which frost has passed at 10%, 25%, 50%, 75% and 90% likelihood — but without the plain averages. The mean date of last spring frost is only published for 1981-2010, so that is what a page about average frost dates has to use. Our frost-risk dataset covers the probability distribution from the newer period separately.
My town is not listed — what should I do?
Pick the nearest listed town or city with similar terrain. Within about 50 km on comparable ground, frost dates typically shift only three to five days, so a nearby reading is a good guide. Elevation and distance from a large body of water matter more than raw distance: a town 20 km inland from a lake can frost noticeably earlier than one on the shore, and a valley bottom frosts before the slope above it. Many Canadian towns simply have no weather station, and several that do have one publish no frost average, so there is nothing honest we can list for them.