Frost dates in Iowa
Across Iowa's 150 NOAA stations with a frost every year, the typical last spring frost ranges from April 10 at Keokuk Lock Dam 19 (530 feet above sea level) to May 8 at Elkader 6 SSW (790 feet above sea level). The middle station's date is April 28.
Look up your ZIP code
Last frost across Iowa
The frost-free season runs from 145 days at Sheldon to 198 days at Keokuk Lock Dam 19.
The station with the latest frost is about 160 miles farther north than the one with the earliest.
These are typical dates: in half of springs the last frost comes later. Each place's page, and each ZIP code lookup, also gives the late-year date, after which only 1 spring in 10 has a frost. That's the safer date for tender plants.
Frost dates for Iowa's larger places
| Place | Last spring frost | First fall frost | Season | Zone |
|---|---|---|---|---|
| Cedar Rapids | April 27 | October 11 | 165 days | 5b |
| Davenport | April 23 | October 15 | 174 days | 5b |
| Des Moines | April 18 | October 20 | 184 days | 5b |
Typical (1-in-2) dates. Each place's page has the early and late years, a planting calendar and a printable planner. Zones are for the ZIP code nearest each place's center.
Hardiness zones in Iowa
Iowa's 1,034 ZIP codes in the USDA list fall in zones 4b to 6a: 4b (2 percent), 5a (54 percent), 5b (41 percent) and 6a (3 percent). Compared with the 2012 map, 24 percent of them moved to a warmer half zone (1 by a full zone or more), 75 percent stayed the same and 3 moved to a colder one.
A hardiness zone is about the coldest night of winter, which decides which shrubs, trees and perennials survive. Frost dates are about spring and fall, which decide when to plant. You need both. Read more about what the zones mean and what changed in 2023.
Every NOAA station in Iowa
All 150 stations in Iowa with frost statistics in NOAA's 1991 to 2020 normals, from A to Z. Station names are usually a town, an airport, or a distance and direction from a town. Find one near you and at a similar elevation.
| Station | Elevation (feet) | Last spring frost | First fall frost | Season (days) |
|---|---|---|---|---|
| Albia 3 NNE | 880 | April 24 | October 16 | 173 |
| Algona | 1,210 | April 30 | October 6 | 160 |
| Allerton | 1,090 | April 21 | October 19 | 178 |
| Allison | 1,040 | April 27 | October 8 | 165 |
| Ames 5 SE | 870 | April 26 | October 12 | 168 |
| Ames 8 WSW | 1,100 | April 23 | October 14 | 173 |
| Ames Municipal Airport | 930 | April 26 | October 8 | 164 |
| Anamosa 1 WNW | 800 | May 1 | October 4 | 154 |
| Anamosa 3 SSW | 910 | April 27 | October 13 | 170 |
| Ankeny | 970 | April 23 | October 15 | 173 |
| Atlantic 1 NE | 1,150 | April 30 | October 2 | 153 |
| Audubon | 1,280 | May 2 | October 3 | 154 |
| Battle Creek 3 NE | 1,380 | May 1 | October 1 | 153 |
| Beaconsfield | 1,210 | April 23 | October 17 | 176 |
| Bedford | 1,190 | April 24 | October 15 | 173 |
| Belle Plaine | 810 | April 28 | October 10 | 165 |
| Bellevue L&D 12 | 600 | April 25 | October 16 | 172 |
| Bloomfield | 860 | April 16 | October 22 | 188 |
| Boone | 1,040 | April 28 | October 12 | 165 |
| Britt 3 E | 1,220 | April 29 | October 7 | 161 |
| Burlington 2 S | 690 | April 18 | October 20 | 185 |
| Burlington Municipal Airport | 690 | April 15 | October 20 | 187 |
| Carroll | 1,240 | April 27 | October 10 | 166 |
| Cascade | 810 | April 28 | October 10 | 164 |
| Castana Exp Farm | 1,400 | April 25 | October 12 | 170 |
| Cedar Rapids #1 | 810 | April 28 | October 12 | 166 |
| Cedar Rapids Municipal Airport | 870 | April 27 | October 11 | 165 |
| Centerville | 910 | April 28 | October 14 | 168 |
| Chariton 1 E | 960 | May 5 | October 5 | 151 |
| Charles City | 990 | April 30 | October 6 | 157 |
| Cherokee | 1,210 | May 4 | October 4 | 152 |
| Clarinda | 980 | April 25 | October 11 | 168 |
| Clarion | 1,150 | April 30 | October 10 | 162 |
| Clinton #1 | 580 | April 22 | October 16 | 175 |
| Coggon | 900 | May 3 | October 7 | 156 |
| Colo | 1,000 | April 24 | October 12 | 170 |
| Columbus Junction | 590 | April 26 | October 10 | 167 |
| Corning | 1,190 | April 27 | October 12 | 168 |
| Cresco 1 NE | 1,260 | May 8 | October 1 | 147 |
| Creston 2 SW | 1,300 | April 28 | October 11 | 164 |
| Dakota City | 1,110 | April 26 | October 12 | 169 |
| Davenport | 750 | April 23 | October 15 | 174 |
| Davenport WFO | 750 | April 21 | October 17 | 176 |
| Decorah | 860 | May 3 | October 7 | 157 |
| Denison | 1,400 | April 27 | October 11 | 166 |
| Des Moines 17 E | 920 | April 21 | October 15 | 174 |
| Des Moines International Airport | 960 | April 18 | October 20 | 184 |
| Des Moines WSFO-Johnston | 960 | April 19 | October 18 | 179 |
| Donnellson | 710 | April 17 | October 22 | 187 |
| Dubuque L&D 11 | 620 | April 19 | October 21 | 184 |
| Dubuque Regional Airport | 1,060 | April 28 | October 11 | 165 |
| Eldora | 1,070 | April 27 | October 10 | 165 |
| Elkader 6 SSW | 790 | May 8 | October 1 | 146 |
| Emmetsburg | 1,220 | April 27 | October 7 | 164 |
| Estherville 4 E | 1,320 | May 2 | October 3 | 153 |
| Estherville Municipal Airport | 1,320 | May 2 | September 30 | 150 |
| Fairfield | 740 | April 27 | October 12 | 168 |
| Fayette | 1,150 | May 4 | October 4 | 151 |
| Forest City 2 NNE | 1,280 | April 30 | October 7 | 159 |
| Fort Dodge 5 NNW | 1,120 | April 28 | October 8 | 162 |
| Fort Madison | 530 | April 12 | October 25 | 194 |
| Glenwood 3 SW | 980 | April 23 | October 11 | 170 |
| Greenfield | 1,320 | April 25 | October 12 | 170 |
| Grinnell 3 SW | 910 | May 3 | October 6 | 155 |
| Grundy Center | 980 | April 29 | October 9 | 160 |
| Guthrie Center | 1,070 | May 2 | October 3 | 153 |
| Guttenberg L&D 10 | 620 | April 21 | October 18 | 178 |
| Hampton | 1,110 | April 29 | October 9 | 162 |
| Harlan | 1,270 | April 27 | October 9 | 165 |
| Hawarden | 1,190 | May 1 | October 4 | 155 |
| Holstein | 1,370 | April 30 | October 9 | 162 |
| Humboldt WTP | 1,100 | April 27 | October 9 | 166 |
| Ida Grove 5 NW | 1,320 | April 27 | October 12 | 167 |
| Independence #1 | 1,010 | April 30 | October 7 | 159 |
| Indianola 2 W | 930 | April 24 | October 12 | 168 |
| Iowa City | 640 | April 29 | October 9 | 162 |
| Iowa City Municipal Airport | 650 | April 21 | October 18 | 180 |
| Iowa Falls | 1,060 | April 28 | October 10 | 164 |
| Jefferson | 1,060 | April 26 | October 9 | 164 |
| Keokuk Lock Dam 19 | 530 | April 10 | October 27 | 198 |
| Keosauqua | 630 | April 26 | October 13 | 169 |
| Knoxville | 900 | April 20 | October 19 | 180 |
| Lake Park | 1,470 | April 30 | October 10 | 164 |
| Lamoni | 1,130 | April 17 | October 21 | 184 |
| Lamoni | 1,170 | April 16 | October 20 | 187 |
| Lamoni Municipal Airport | 1,130 | April 16 | October 21 | 186 |
| Le Claire L&D 14 | 580 | April 16 | October 25 | 190 |
| Le Mars | 1,190 | April 30 | October 4 | 157 |
| Leon 6 ESE | 1,000 | April 30 | October 8 | 161 |
| Little Sioux 2 NW | 1,020 | May 1 | October 3 | 155 |
| Logan | 990 | April 29 | October 8 | 162 |
| Lowden | 740 | April 27 | October 10 | 165 |
| Manchester #2 | 990 | May 3 | October 4 | 154 |
| Mapleton No.2 | 1,200 | May 3 | October 1 | 151 |
| Maquoketa | 670 | April 25 | October 14 | 171 |
| Marshalltown | 870 | April 28 | October 7 | 162 |
| Marshalltown Municipal Airport | 970 | April 30 | October 6 | 159 |
| Mason City | 1,110 | April 29 | October 7 | 161 |
| Mason City Municipal Airport | 1,220 | May 3 | October 1 | 150 |
| Milford 4 NW | 1,400 | May 1 | October 6 | 158 |
| Mount Ayr | 1,140 | April 25 | October 12 | 169 |
| Mount Pleasant 1 SSW | 730 | April 30 | October 10 | 163 |
| Muscatine | 550 | April 24 | October 14 | 172 |
| Muscatine 2 N | 680 | April 18 | October 22 | 184 |
| New Hampton | 1,150 | May 2 | October 5 | 155 |
| Newton | 960 | April 22 | October 17 | 174 |
| Northwood | 1,190 | May 4 | October 4 | 152 |
| Oakland | 1,260 | April 23 | October 14 | 174 |
| Oelwein 1 E | 1,160 | April 27 | October 13 | 169 |
| Oelwein 2 S | 1,010 | April 30 | October 9 | 163 |
| Onawa 3 NW | 1,060 | May 1 | October 3 | 154 |
| Osage | 1,170 | April 30 | October 9 | 163 |
| Osceola | 1,030 | April 29 | October 9 | 162 |
| Oskaloosa | 830 | April 21 | October 16 | 176 |
| Ottumwa Industrial Airport | 840 | April 23 | October 14 | 172 |
| Perry | 950 | April 25 | October 10 | 166 |
| Pocahontas | 1,210 | April 26 | October 7 | 164 |
| Postville | 1,160 | May 1 | October 3 | 153 |
| Primghar | 1,520 | April 29 | October 10 | 163 |
| Rathbun Dam | 960 | April 18 | October 23 | 187 |
| Red Oak | 1,040 | April 24 | October 13 | 169 |
| Rock Rapids | 1,350 | May 1 | October 4 | 156 |
| Rockwell City | 1,210 | April 26 | October 10 | 167 |
| Sac City | 1,210 | April 30 | October 6 | 158 |
| Sanborn | 1,550 | May 1 | October 7 | 160 |
| Sheldon | 1,420 | May 5 | September 28 | 145 |
| Shenandoah | 1,000 | April 20 | October 17 | 179 |
| Sibley | 1,530 | May 5 | October 3 | 152 |
| Sidney 1 SSE | 1,140 | April 19 | October 19 | 182 |
| Sigourney | 730 | April 24 | October 15 | 172 |
| Sioux Center 2 SE | 1,360 | April 30 | October 3 | 154 |
| Sioux City Ang | 1,100 | April 29 | October 7 | 161 |
| Sioux City Gateway Airport | 1,100 | April 29 | October 5 | 159 |
| Sioux Rapids 4 E | 1,420 | April 30 | October 5 | 159 |
| Spencer 1 N | 1,330 | May 1 | October 3 | 154 |
| Spencer Municipal Airport | 1,340 | May 2 | October 2 | 154 |
| Spirit Lake | 1,420 | April 28 | October 11 | 164 |
| Stanley | 1,120 | May 4 | October 1 | 150 |
| Storm Lake | 1,440 | April 25 | October 13 | 170 |
| Swea City 5 N | 1,180 | May 4 | October 1 | 150 |
| Tipton | 820 | April 21 | October 15 | 175 |
| Toledo 3 N | 940 | April 30 | October 9 | 162 |
| Tripoli | 1,060 | April 29 | October 9 | 162 |
| Vinton | 850 | May 3 | October 3 | 151 |
| Washington | 690 | April 28 | October 11 | 165 |
| Waterloo Municipal Airport | 870 | April 27 | October 10 | 165 |
| Waukon | 1,280 | May 2 | October 11 | 161 |
| Webster City | 1,070 | May 3 | October 2 | 150 |
| Williamsburg 1 E | 780 | April 28 | October 9 | 164 |
| Winterset 1 S | 1,100 | April 30 | October 3 | 157 |
Typical (1-in-2) dates at 32°F. For the early and late years, and a planting calendar built from your own dates, look up your ZIP code.