PlotChallenge

Home › Methodology

How the calendars are made

Every date on this site is computed from climate data and a short list of crop rules. This page sets out the sources, the method, how well it holds up against weather-station records, and where it can be wrong.

Sources and licences

WhatSourceLicence
US frost and freeze dates (10 %, 50 %, 90 % probability, 0 °C / 32 °F)NOAA National Centers for Environmental Information, U.S. Climate Normals 1991–2020, annual/seasonal normals, nearest first-order station to each cityUS Government work, public domain
Canadian frost datesEnvironment and Climate Change Canada, Canadian Climate Normals 1981–2010, main airport stationOpen Government Licence – Canada
Monthly average high, low and rain, all citiesTerraClimate 1991–2020 climatology (Abatzoglou, Dobrowski, Parks & Hegewisch 2018, Scientific Data 5:170191), about 4 km gridCC0 (public domain)
Coldest night of the year, US cities (hardiness zones)NOAA GHCN-Daily, same stations, 1991–2020US Government work, public domain
Frost dates for checking the model in the UK, Ireland and AustraliaNOAA GHCN-Daily station minima, 1991–2020. Used only to test the method; no station data is republished.Used for validation only
PhotosWikimedia Commons, each credited on the page that shows itPublic domain, CC0, CC BY or CC BY-SA
Crop rulesWritten for this site from general horticultural guidance (seed-packet and extension-service figures), kept conservative—

Frost dates

US and Canada: we show the national weather services’ own figures for the nearest main station: the date by which half of years have had their last spring frost (and the first autumn one), plus the one-year-in-ten dates. A station can sit a few kilometres from the city centre, and cities, valleys and coasts all shift frost by days or weeks.

UK, Ireland, Australia and New Zealand: no open, machine-readable frost normals exist, so we estimate them. From TerraClimate’s twelve monthly average lows we draw a smooth daily curve (a four-harmonic fit that keeps every monthly average), then find where it crosses a threshold: the average low on the night of the 50 % frost date. A frost needs one night well below average, and nights vary more where the climate is continental, so the threshold rises with the annual range of monthly lows:

threshold = 4.70 °C + 0.0155 × (warmest-month low − coldest-month low)

The coefficients were fitted on 88 stations. If the average low never drops to the threshold, the place is treated as having no regular frost. One-in-ten dates for estimated cities add the typical spread seen in the NOAA and ECCC data (16 days in spring, 14 in autumn).

How accurate is it?

Each station was scored with the threshold refitted without that station, so these are out-of-sample errors.

StationModel: last / first frostPublished or observedDifference (days)Source
Boston, Massachusetts Apr 25 / Oct 24Apr 4 / Nov 9+21 / -16 NOAA 1991-2020
Minneapolis, Minnesota Apr 26 / Oct 14Apr 23 / Oct 18+3 / -4 NOAA 1991-2020
Atlanta, Georgia Mar 2 / Nov 21Mar 24 / Nov 8-22 / +13 NOAA 1991-2020
Denver, Colorado May 6 / Oct 7May 4 / Oct 8+2 / -1 NOAA 1991-2020
Phoenix, Arizona No regular frostNo regular frostagreeNOAA 1991-2020
Seattle, Washington Apr 8 / Nov 10Mar 13 / Nov 17+26 / -7 NOAA 1991-2020
Toronto Apr 27 / Oct 26May 4 / Oct 9-7 / +17 ECCC 1981-2010
Vancouver Mar 29 / Nov 13Mar 27 / Nov 5+2 / +8 ECCC 1981-2010
Calgary May 27 / Sep 13May 26 / Sep 10+1 / +3 ECCC 1981-2010
London (Heathrow) Apr 4 / Nov 18Mar 27 / Nov 16+8 / +2 GHCN-Daily 1991-2020 (computed)
Edinburgh (Royal Botanic Garden) Apr 24 / Nov 2Apr 17 / Oct 30+7 / +3 GHCN-Daily 1991-2020 (computed)
Belfast (Stormont) Apr 26 / Oct 30Mar 29 / Dec 2+28 / -33 GHCN-Daily 1991-2020 (computed)
Dublin (Phoenix Park) Apr 20 / Nov 7Apr 19 / Nov 5+1 / +2 GHCN-Daily 1991-2020 (computed)
Melbourne Airport No regular frostNo regular frostagreeGHCN-Daily 1991-2020 (computed)
Canberra Airport Sep 27 / May 1Oct 9 / Apr 29-12 / +2 GHCN-Daily 1991-2020 (computed)
Hobart Airport Aug 7 / Jun 23Jul 19 / Jul 3+19 / -10 GHCN-Daily 1991-2020 (computed)
Sydney (Observatory Hill) No regular frostNo regular frostagreeGHCN-Daily 1991-2020 (computed)
All 88 stations
StationModelPublished / observedDifference
New York, New York Apr 10 / Nov 10Mar 30 / Nov 20+11 / -10
Boston, Massachusetts Apr 25 / Oct 24Apr 4 / Nov 9+21 / -16
Philadelphia, Pennsylvania Apr 9 / Nov 5Apr 2 / Nov 10+7 / -5
Pittsburgh, Pennsylvania Apr 19 / Oct 24Apr 18 / Oct 28+1 / -4
Buffalo, New York Apr 30 / Oct 28Apr 24 / Oct 26+6 / +2
Burlington, Vermont May 6 / Oct 20Apr 29 / Oct 15+7 / +5
Portland, Maine May 5 / Oct 14Apr 26 / Oct 15+9 / -1
Baltimore, Maryland Apr 1 / Nov 9Mar 24 / Nov 21+8 / -12
Washington, District of Columbia Apr 3 / Nov 6Mar 24 / Nov 18+10 / -12
Chicago, Illinois Apr 22 / Oct 24Apr 11 / Oct 31+11 / -7
Detroit, Michigan Apr 22 / Oct 26Apr 21 / Oct 31+1 / -5
Cleveland, Ohio Apr 20 / Oct 28Apr 8 / Nov 12+12 / -15
Columbus, Ohio Apr 14 / Oct 24Apr 18 / Oct 27-4 / -3
Cincinnati, Ohio Apr 9 / Oct 28Apr 16 / Oct 25-7 / +3
Indianapolis, Indiana Apr 11 / Oct 26Apr 15 / Oct 26-4 / +0
Milwaukee, Wisconsin Apr 28 / Oct 19Apr 19 / Oct 29+9 / -10
Madison, Wisconsin May 3 / Oct 14May 1 / Oct 10+2 / +4
Minneapolis, Minnesota Apr 26 / Oct 14Apr 23 / Oct 18+3 / -4
Des Moines, Iowa Apr 17 / Oct 19Apr 18 / Oct 20-1 / -1
St. Louis, Missouri Mar 31 / Nov 2Apr 8 / Oct 26-8 / +7
Kansas City, Missouri Apr 4 / Oct 30Apr 4 / Nov 2+0 / -3
Omaha, Nebraska Apr 16 / Oct 19Apr 18 / Oct 21-2 / -2
Fargo, North Dakota May 7 / Oct 5May 10 / Sep 30-3 / +5
Atlanta, Georgia Mar 2 / Nov 21Mar 24 / Nov 8-22 / +13
Charlotte, North Carolina Mar 13 / Nov 12Mar 30 / Nov 3-17 / +9
Raleigh, North Carolina Mar 19 / Nov 11Mar 31 / Nov 4-12 / +7
Richmond, Virginia Mar 29 / Nov 6Apr 3 / Nov 4-5 / +2
Nashville, Tennessee Mar 21 / Nov 6Mar 31 / Nov 3-10 / +3
Memphis, Tennessee Mar 8 / Nov 20Mar 16 / Nov 16-8 / +4
Louisville, Kentucky Mar 30 / Nov 4Apr 3 / Nov 3-4 / +1
Birmingham, Alabama Mar 7 / Nov 15Mar 21 / Nov 11-14 / +4
Charleston, South Carolina Feb 7 / Dec 26Feb 4 / Dec 30+3 / -4
Little Rock, Arkansas Mar 6 / Nov 17Mar 21 / Nov 10-15 / +7
New Orleans, Louisiana No regular frostNo regular frostagree: no regular frost
Jacksonville, Florida No regular frostNo regular frostagree: no regular frost
Orlando, Florida No regular frostNo regular frostagree: no regular frost
Tampa, Florida No regular frostNo regular frostagree: no regular frost
Miami, Florida No regular frostNo regular frostagree: no regular frost
Houston, Texas No regular frostJan 30 / Dec 28model says no regular frost
Dallas, Texas Feb 11 / Dec 6Mar 2 / Nov 29-19 / +7
Austin, Texas Jan 20 / Dec 24Feb 20 / Dec 3-31 / +21
San Antonio, Texas No regular frostFeb 20 / Dec 3model says no regular frost
Oklahoma City, Oklahoma Mar 16 / Nov 10Apr 4 / Nov 2-19 / +8
Tulsa, Oklahoma Mar 20 / Nov 8Mar 31 / Nov 4-11 / +4
Denver, Colorado May 6 / Oct 7May 4 / Oct 8+2 / -1
Salt Lake City, Utah Apr 22 / Oct 16Apr 8 / Oct 31+14 / -15
Boise, Idaho Apr 27 / Oct 12Apr 24 / Oct 21+3 / -9
Billings, Montana May 13 / Sep 27May 4 / Oct 7+9 / -10
Albuquerque, New Mexico Apr 15 / Oct 24Apr 6 / Nov 3+9 / -10
El Paso, Texas Mar 8 / Nov 14Mar 2 / Nov 20+6 / -6
Phoenix, Arizona No regular frostNo regular frostagree: no regular frost
Tucson, Arizona Jan 27 / Dec 9Feb 5 / Dec 9-9 / +0
Las Vegas, Nevada Feb 9 / Nov 24Jan 24 / Dec 10+16 / -16
Los Angeles, California No regular frostNo regular frostagree: no regular frost
San Diego, California No regular frostNo regular frostagree: no regular frost
San Francisco, California No regular frostNo regular frostagree: no regular frost
San Jose, California No regular frostNo regular frostagree: no regular frost
Sacramento, California Jan 13 / Dec 8No regular frostmodel predicts a frost season of 37 days
Fresno, California Jan 28 / Nov 25Jan 14 / Dec 14+14 / -19
Portland, Oregon Apr 5 / Nov 1Mar 13 / Nov 19+23 / -18
Seattle, Washington Apr 8 / Nov 10Mar 13 / Nov 17+26 / -7
Spokane, Washington May 4 / Sep 30Apr 26 / Oct 15+8 / -15
Anchorage, Alaska May 13 / Sep 22May 1 / Sep 29+12 / -7
Honolulu, Hawaii No regular frostNo regular frostagree: no regular frost
Toronto Apr 27 / Oct 26May 4 / Oct 9-7 / +17
Ottawa May 5 / Oct 14May 7 / Oct 2-2 / +12
Montreal May 2 / Oct 16Apr 29 / Oct 9+3 / +7
Vancouver Mar 29 / Nov 13Mar 27 / Nov 5+2 / +8
Calgary May 27 / Sep 13May 26 / Sep 10+1 / +3
Edmonton May 19 / Sep 17May 10 / Sep 19+9 / -2
Winnipeg May 15 / Sep 29May 24 / Sep 22-9 / +7
Halifax May 14 / Oct 22May 9 / Oct 17+5 / +5
London (Heathrow) Apr 4 / Nov 18Mar 27 / Nov 16+8 / +2
Midlands (Wellesbourne) Apr 21 / Nov 8May 3 / Nov 2-12 / +6
Bradford Apr 19 / Nov 7Apr 16 / Nov 4+3 / +3
Edinburgh (Royal Botanic Garden) Apr 24 / Nov 2Apr 17 / Oct 30+7 / +3
Belfast (Stormont) Apr 26 / Oct 30Mar 29 / Dec 2+28 / -33
Dublin (Phoenix Park) Apr 20 / Nov 7Apr 19 / Nov 5+1 / +2
Melbourne Airport No regular frostNo regular frostagree: no regular frost
Melbourne (Essendon) No regular frostJul 10 / Jul 7model says no regular frost
Canberra Airport Sep 27 / May 1Oct 9 / Apr 29-12 / +2
Hobart (Ellerslie Rd) Aug 25 / Jun 7No regular frostmodel predicts a frost season of 80 days
Hobart Airport Aug 7 / Jun 23Jul 19 / Jul 3+19 / -10
Adelaide Airport No regular frostNo regular frostagree: no regular frost
Melbourne (Laverton) No regular frostAug 7 / Jul 7model says no regular frost
Perth Airport No regular frostNo regular frostagree: no regular frost
Brisbane Aero No regular frostNo regular frostagree: no regular frost
Sydney (Observatory Hill) No regular frostNo regular frostagree: no regular frost

Positive differences mean the model’s date is later than the record. A later spring date and an earlier autumn date are the cautious direction for a gardener.

Hardiness zones

Zones follow the USDA definition: the average of each year’s coldest night, in 10 °F bands split into a and b. For US cities we compute it from the NOAA station’s daily records, 1991–2020. Elsewhere we estimate it as the coldest month’s average low minus a drop that grows with continentality (fitted on the US stations). Tested out of sample on 64 US stations: average error 1.6 °C; 36 of 64 land in the same half-zone and 58 within one half-zone. Estimated zones are marked as estimates.

Crop windows

For each city we build a daily curve of average high, low and mean temperature, then test every day of the year as a possible sowing or planting-out date. A day passes when:

  1. The ground is ready: the week’s mean temperature (a stand-in for soil temperature) is at least the crop’s minimum, and highs are not scorching.
  2. Frost allows it: tender crops wait until a week or two after the average last frost; hardy crops may go in several weeks before it.
  3. It has time to finish: days to harvest are stretched in cool weather in proportion to growing degree-days (above 10 °C for warm-season crops, 4 °C for cool-season ones). Tender crops must give one to two weeks of picking before the first autumn frost or before autumn means fall below 12 °C (9 °C for pumpkins, which finish ripening off the vine); hardy crops must mature before frost has gone on longer than they stand. Where the frost season is shorter than the frost a hardy crop shrugs off, frost does not limit it.
  4. It is warm enough to grow, and for tender crops no night in the period averages below 6 °C.
  5. Heat doesn’t spoil it: average highs while it matures stay under the crop’s limit (lettuce and spinach bolt, peas and beans drop flowers), and for tomatoes, peppers and beans, nights are not so warm that fruit fails to set.

Indoor sowing is the crop’s raising time before the start of each outdoor window. Harvest is each passing date plus its (stretched) days to maturity, over the picking period. Garlic is handled separately: it is planted as autumn cools (mean below 14 °C), needs about six weeks under 10 °C, and is lifted as early summer warms.

CropFrostStart indoorsPlantSoil (mean)Heat limit (highs)Days
Tomatotender6–8 wk 10 d after last frost15°C59°F35°C95°F70
Peppertender8–10 wk 14 d after last frost17°C63°F36°C97°F75
Eggplant (aubergine)tender8–10 wk 14 d after last frost18°C64°F35°C95°F80
Cucumbertender3–4 wk 10 d after last frost16°C61°F35°C95°F55
Zucchini (courgette)tender3–4 wk 7 d after last frost15°C59°F36°C97°F50
Pumpkin and winter squashtender3–4 wk 10 d after last frost15°C59°F36°C97°F100
Watermelontender3–4 wk 14 d after last frost18°C64°F–85
Sweet corntender– 7 d after last frost13°C55°F36°C97°F80
Green beanstender– 7 d after last frost15°C59°F34°C93°F55
Peashardy– from 42 d before6°C43°F25°C77°F65
Lettucehalf4–5 wk from 28 d before5°C41°F27°C81°F50
Spinachhardy– from 42 d before4°C39°F26°C79°F45
Kalehardy4–6 wk from 35 d before5°C41°F31°C88°F60
Cabbagehardy5–7 wk from 28 d before7°C45°F29°C84°F75
Broccolihalf5–7 wk from 21 d before7°C45°F29°C84°F65
Carrotshardy– from 21 d before7°C45°F33°C91°F70
Beets (beetroot)hardy– from 21 d before7°C45°F33°C91°F60
Radisheshardy– from 35 d before5°C41°F27°C81°F28
Onionshardy8–10 wk from 28 d before6°C43°F35°C95°F100
Garlichardy– autumn0°C32°F–240
Potatoeshalf– from 14 d before8°C46°F34°C93°F95
Swiss chardhalf– from 14 d before8°C46°F33°C91°F55
Basiltender5–6 wk 14 d after last frost17°C63°F–30
Cilantro (coriander)half– from 21 d before7°C45°F27°C81°F40
Parsleyhardy6–8 wk from 21 d before8°C46°F33°C91°F75

Limits

Climate data fetched 2026-10-26; NOAA normals fetched 2026-10-26. Something wrong for your city? See About.