Where the dates come from
How it works
Every date on this site comes from public data and a rule you can check. Here are both.
Frost dates
Frost dates are from the NOAA U.S. Climate Normals for 1991–2020, which give the probability of a 32°F freeze at each weather station. We use:
- Typical last spring frost: the date after which there's a 50% chance of another freeze.
- 9-in-10 safe date: the date after which there's only a 10% chance.
- Typical first fall frost: the date by which there's a 50% chance of the first freeze.
A frost here means 32°F, which damages tender crops like tomatoes and basil. A hard freeze, about 28°F or colder, is what finally stops hardy crops like kale and cabbage.
47 of the 86 towns use a station at an airport. Airports in valley bottoms can run colder than nearby hillsides, and city centers can run warmer. Your own garden may differ by a week or more.
How we pick each town's station
Rainline Garden covers 86 towns: 35 in Oregon, 36 in Washington and 15 in Idaho. Each one gets its own NOAA weather station rather than a state or regional average, and its page names that station, how far it is from town and how high it sits.
- Closest first. 60 of the 86 towns use the closest weather station that has NOAA's 1991–2020 frost records. We checked every station within 20 miles of each town.
- Sometimes another one. The other 26 use a different station nearby, and their pages say how far away it is.
- Local quirks noted. Where a nearby station is known to run warmer or colder than town, such as the airports at Portland and Pocatello, the town's page says so.
- No guessing. Where no station has frost records close enough, such as the Wood River Valley around Hailey and Ketchum, we leave the area out rather than borrow dates from a town with different weather.
West and east of the rain line
The Cascades split the region in two. West of the mountains (the coast, the Willamette Valley, Puget Sound and the southern Oregon valleys), winters are wet and mild and summers are dry, usually from July until the fall rains return in October. East of the mountains, in the rain shadow that stretches across eastern Oregon and Washington and on into Idaho, rain is scarce all year, summers are hot and winters are colder. My garden plan uses your side of the line for its watering reminders: west-side plans get a reminder to start watering in early July and to ease off in mid October; east-side plans get one in early June and another at the end of September.
Planting dates
Each crop gets the later of two dates:
- A regional date for when the soil is usually ready, based on typical soil warming in each climate region (the table below lists them). Washington and Idaho towns use the closest matching region.
- A frost check against your local typical last frost: hardy early crops up to 6 weeks before it, frost-tolerant transplants up to 4 weeks before, warm-season transplants not before it, warm-season seeds and heat lovers like peppers, eggplant, melons and basil a week after it.
Seed-starting dates count back from the outdoor date (for example, tomatoes 6–8 weeks ahead). Fall planting dates count back from your typical first fall frost, capped at October 15 because fall crops need daylight to grow, not just mild weather. Warm-season crops are flagged when planting at the window's start leaves too few days before fall frost for a typical variety to produce.
Regional dates used
| Region | Hardy early crops | Cool transplants | Warm seeds | Warm transplants | Heat lovers | Garlic |
|---|---|---|---|---|---|---|
| Coast | Mar 25 | Apr 1 | May 15 | May 20 | Jun 1 | Oct 1 – Nov 15 |
| West-side valleys | Mar 1 | Mar 15 | May 10 | May 15 | May 25 | Oct 1 – Nov 15 |
| East-side valleys | Mar 20 | Apr 1 | Apr 25 | May 1 | May 10 | Oct 1 – Nov 1 |
| Inland Northwest | Apr 1 | Apr 15 | May 15 | May 20 | May 30 | Sep 25 – Oct 31 |
| High desert | Apr 20 | Apr 15 | May 25 | May 25 | Jun 5 | Sep 20 – Oct 20 |
Station data
All 86 towns and their NOAA stations
| Area | NOAA station | Last frost (50%) | Last frost (10%) | First frost (50%) | First frost (10%) |
|---|---|---|---|---|---|
| Portland, OR | Portland International Airport (USW00024229) | Mar 13 | Apr 1 | Nov 19 | Oct 29 |
| Gresham, OR | Portland-Troutdale Airport (USW00024242) | Mar 16 | Apr 12 | Nov 20 | Oct 30 |
| Wilsonville and Canby, OR | Aurora State Airport (USW00094281) | Mar 16 | Apr 7 | Nov 14 | Oct 27 |
| Salem, OR | Salem McNary Field (USW00024232) | Apr 3 | Apr 27 | Nov 1 | Oct 16 |
| Eugene, OR | Eugene Mahlon Sweet Airport (USW00024221) | Apr 11 | May 9 | Oct 23 | Oct 6 |
| Roseburg, OR | Roseburg Regional Airport (USW00024231) | Mar 19 | Apr 13 | Nov 20 | Oct 27 |
| Medford, OR | Medford Rogue Valley Airport (USW00024225) | Apr 8 | Apr 30 | Oct 29 | Oct 14 |
| Astoria, OR | Astoria Regional Airport (USW00094224) | Mar 26 | Apr 18 | Nov 11 | Oct 22 |
| Coos Bay and North Bend, OR | North Bend Regional Airport (USW00024284) | Feb 21 | Mar 25 | Dec 9 | Nov 12 |
| Bend and Redmond, OR | Redmond Roberts Field (USW00024230) | Jun 9 | Jun 26 | Sep 14 | Sep 1 |
| Klamath Falls, OR | Klamath Falls Airport (USW00094236) | Jun 9 | Jun 26 | Sep 18 | Sep 4 |
| Burns, OR | Burns Municipal Airport (USW00094185) | Jun 11 | Jun 28 | Sep 6 | Aug 21 |
| Baker City, OR | Baker City Municipal Airport (USW00024130) | May 25 | Jun 16 | Sep 15 | Sep 2 |
| Pendleton, OR | Pendleton Airport (USW00024155) | Apr 26 | May 10 | Oct 16 | Oct 1 |
| The Dalles, OR | The Dalles Municipal Airport (Dallesport, WA) (USW00024219) | Apr 11 | Apr 28 | Oct 26 | Oct 9 |
| Seattle and Tacoma, WA | Seattle-Tacoma International Airport (USW00024233) | Mar 2 | Mar 23 | Nov 23 | Nov 6 |
| Everett, WA | Everett Paine Field (USW00024222) | Mar 9 | Mar 29 | Nov 17 | Oct 31 |
| Bellingham, WA | Bellingham International Airport (USW00024217) | Mar 31 | Apr 18 | Oct 30 | Oct 12 |
| Olympia, WA | Olympia Airport (USW00024227) | Apr 29 | May 15 | Oct 14 | Sep 28 |
| Vancouver, WA | Vancouver Pearson Field (USW00094298) | Mar 29 | Apr 18 | Nov 9 | Oct 22 |
| Aberdeen and Hoquiam, WA | Hoquiam Bowerman Airport (USW00094225) | Mar 30 | Apr 25 | Nov 14 | Oct 22 |
| Forks, WA | Quillayute Airport (USW00094240) | Apr 20 | May 10 | Oct 26 | Oct 2 |
| Yakima, WA | Yakima Air Terminal (USW00024243) | May 8 | May 27 | Oct 4 | Sep 23 |
| Wenatchee, WA | Wenatchee Pangborn Airport (USW00094239) | Apr 8 | Apr 23 | Oct 24 | Oct 12 |
| Tri-Cities (Pasco, Kennewick, Richland), WA | Pasco Tri-Cities Airport (USW00024163) | Apr 27 | May 10 | Oct 11 | Sep 28 |
| Walla Walla, WA | Walla Walla Regional Airport (USW00024160) | Mar 27 | Apr 22 | Oct 31 | Oct 15 |
| Moses Lake, WA | Moses Lake Grant County Airport (USW00024110) | Apr 27 | May 11 | Oct 8 | Sep 29 |
| Ellensburg, WA | Ellensburg Bowers Field (USW00024220) | Apr 28 | May 12 | Oct 7 | Sep 26 |
| Spokane, WA | Spokane International Airport (USW00024157) | Apr 26 | May 10 | Oct 12 | Sep 29 |
| Omak and Okanogan, WA | Omak Airport (USW00094197) | Apr 30 | May 15 | Oct 7 | Sep 23 |
| Hillsboro and Beaverton, OR | Portland-Hillsboro Airport (USW00094261) | Apr 16 | May 3 | Oct 23 | Oct 3 |
| Oregon City and West Linn, OR | Oregon City (USC00356334) | Mar 18 | Apr 11 | Nov 18 | Oct 30 |
| St. Helens and Scappoose, OR | Scappoose Industrial Airpark (USW00004201) | Apr 10 | May 1 | Nov 2 | Oct 16 |
| McMinnville and Newberg, OR | McMinnville Municipal Airport (USW00094273) | Apr 15 | May 6 | Oct 26 | Oct 5 |
| Corvallis and Albany, OR | Corvallis (USW00004236) | Apr 11 | May 5 | Oct 30 | Oct 8 |
| Cottage Grove, OR | Cottage Grove (USC00351897) | Apr 24 | May 10 | Oct 25 | Sep 30 |
| Grants Pass, OR | Grants Pass (USC00353445) | Apr 8 | May 1 | Oct 28 | Oct 8 |
| Ashland and Talent, OR | Ashland (USC00350304) | May 6 | May 27 | Oct 8 | Sep 21 |
| Tillamook, OR | Tillamook (USC00358494) | Apr 22 | May 13 | Oct 21 | Sep 27 |
| Newport and Lincoln City, OR | Newport Municipal Airport (USW00024285) | Mar 21 | Apr 12 | Nov 27 | Nov 1 |
| Brookings and Gold Beach, OR | Brookings (USC00351058) | Jan 31 | Mar 21 | Dec 27 | Nov 26 |
| Prineville, OR | Prineville (USC00356883) | Jun 1 | Jun 22 | Sep 22 | Aug 31 |
| Madras, OR | Madras (USC00355142) | May 19 | Jun 7 | Oct 4 | Sep 20 |
| Lakeview, OR | Lakeview (USC00354670) | Jun 4 | Jun 22 | Sep 17 | Aug 27 |
| Hood River, OR | Hood River (USC00354003) | Apr 20 | May 9 | Oct 13 | Sep 30 |
| Hermiston, OR | Hermiston Municipal Airport (USW00004113) | Apr 26 | May 10 | Oct 10 | Sep 25 |
| Ontario, OR | Ontario Municipal Airport (USW00024162) | Apr 21 | May 8 | Oct 14 | Sep 29 |
| La Grande, OR | La Grande (USC00354622) | May 6 | May 26 | Oct 1 | Sep 17 |
| John Day, OR | John Day (USC00354291) | May 28 | Jun 15 | Sep 18 | Sep 2 |
| Enterprise and Joseph, OR | Joseph (USC00354329) | May 24 | Jul 6 | Oct 1 | Sep 10 |
| Kent, Renton and Auburn, WA | Kent (USC00454169) | Mar 20 | Apr 8 | Nov 10 | Oct 26 |
| Bremerton and Port Orchard, WA | Bremerton (USC00450872) | Mar 29 | Apr 24 | Nov 14 | Oct 26 |
| Shelton, WA | Shelton Sanderson Field (USW00094227) | Apr 27 | May 12 | Oct 16 | Oct 1 |
| Mount Vernon and Burlington, WA | Mount Vernon (USC00455678) | Mar 24 | Apr 14 | Nov 3 | Oct 12 |
| Anacortes, WA | Anacortes (USC00450176) | Mar 8 | Mar 28 | Nov 20 | Nov 1 |
| Oak Harbor and Whidbey Island, WA | Whidbey Island Naval Air Station (USW00024255) | Mar 13 | Apr 1 | Nov 14 | Oct 26 |
| Friday Harbor and the San Juans, WA | Friday Harbor Airport (USW00094276) | Mar 26 | Apr 21 | Nov 10 | Oct 21 |
| Port Angeles, WA | Port Angeles International Airport (USW00094266) | Apr 8 | May 1 | Oct 31 | Oct 13 |
| Sequim, WA | Sequim (USC00457544) | Apr 21 | May 7 | Oct 20 | Oct 3 |
| Port Townsend, WA | Port Townsend (USC00456678) | Mar 1 | Mar 23 | Nov 28 | Nov 9 |
| Long Beach and Ilwaco, WA | Long Beach (USC00454748) | Apr 6 | Apr 28 | Oct 26 | Oct 4 |
| Longview and Kelso, WA | Longview (USC00454769) | Apr 8 | May 2 | Nov 5 | Oct 17 |
| Centralia and Chehalis, WA | Centralia (USC00451276) | Apr 22 | May 10 | Oct 27 | Oct 7 |
| Chelan, WA | Chelan (USC00451350) | Apr 17 | Apr 30 | Oct 22 | Oct 9 |
| Leavenworth, WA | Leavenworth (USC00454572) | May 10 | May 28 | Sep 30 | Sep 18 |
| Winthrop and Twisp, WA | Winthrop (USC00459376) | May 15 | Jun 1 | Sep 22 | Sep 10 |
| Ephrata and Quincy, WA | Ephrata Municipal Airport (USW00024141) | Apr 22 | May 6 | Oct 17 | Oct 3 |
| Sunnyside, Grandview and Prosser, WA | Sunnyside (USC00458207) | May 1 | May 18 | Oct 6 | Sep 25 |
| Goldendale, WA | Goldendale (USC00453222) | May 19 | Jun 9 | Sep 25 | Sep 8 |
| Pullman, WA | Pullman-Moscow Regional Airport (USW00094129) | Apr 29 | May 14 | Oct 2 | Sep 17 |
| Colville, WA | Colville (USC00451630) | May 2 | May 17 | Oct 2 | Sep 19 |
| Coeur d'Alene and Post Falls, ID | Coeur d'Alene (USC00101956) | Apr 22 | May 6 | Oct 18 | Oct 4 |
| Sandpoint, ID | Sandpoint Experiment Station (USC00108137) | May 8 | May 25 | Sep 28 | Sep 11 |
| Bonners Ferry, ID | Bonners Ferry (USC00101079) | Apr 30 | May 16 | Oct 4 | Sep 18 |
| Lewiston, ID | Lewiston-Nez Perce County Airport (USW00024149) | Apr 6 | Apr 26 | Oct 26 | Oct 10 |
| Moscow, ID | Pullman-Moscow Regional Airport (USW00094129) | Apr 29 | May 14 | Oct 2 | Sep 17 |
| Boise and Meridian, ID | Boise Airport (USW00024131) | Apr 24 | May 9 | Oct 21 | Oct 5 |
| Nampa and Caldwell, ID | Nampa Sugar Factory (USC00106305) | Apr 29 | May 18 | Oct 13 | Sep 29 |
| Emmett, ID | Emmett (USC00102942) | Apr 30 | May 17 | Oct 17 | Oct 2 |
| McCall, ID | McCall (USC00105708) | Jun 22 | Jul 10 | Sep 2 | Aug 14 |
| Twin Falls, ID | Twin Falls Magic Valley Regional Airport (USW00094178) | May 9 | May 28 | Oct 4 | Sep 20 |
| Burley and Rupert, ID | Burley Municipal Airport (USW00024133) | May 7 | May 23 | Oct 4 | Sep 21 |
| Pocatello, ID | Pocatello (USC00107210) | May 2 | May 18 | Oct 11 | Sep 26 |
| Idaho Falls, ID | Idaho Falls (USC00104455) | May 9 | Jun 2 | Oct 1 | Sep 17 |
| Rexburg, ID | Rexburg (BYU-Idaho) (USC00107644) | May 12 | Jun 2 | Sep 24 | Sep 6 |
| Salmon, ID | Salmon (USC00108080) | May 17 | Jun 9 | Sep 24 | Sep 9 |
Spotted something that looks wrong? Email info@rainlinegarden.org.