Guest, Sign inJoin
Keokuk iowaKeokuk, #1 on this list · Photo: Billwhittaker at English Wikipedia · CC BY-SA 3.0
Iowa rankings · Climate

Towns with the mildest winters in Iowa

Keokuk has the mildest winters of Iowa’s 142 towns of 2,500+: January nights average a low of 18° (NOAA 1991–2020 normals). The typical town here averages 12°; none of the 142 stay above freezing.

The average January low. NOAA U.S. Climate Normals, 1991–2020, from NOAA’s 5 km grid at each town’s center; one town for each grid cell. A described list: no letters. How grades work

#1

Keokuk

Lee County · 9,510 people
18°

January low·July high 86°·117 freezing nights a year

#2

Fort Madison

Lee County · 9,935 people
16°

January low·July high 86°·110 freezing nights a year

#T3

Burlington

Des Moines County · 23,336 people
16°

January low·July high 86°·118 freezing nights a year

All 142 towns

January low, highest first. Towns with the same figure share a rank (T = tied; 111 towns here).

142 towns ranked. Not here? See why a town may be missing.

#TownJanuary lowNights ≤32°July high
1KeokukLee County · 9,510 people18°11786°average high
2Fort MadisonLee County · 9,935 people16°11086°average high
T3BurlingtonDes Moines County · 23,336 people16°11886°average high
T3West BurlingtonDes Moines County · 3,358 people16°11885°average high
5BloomfieldDavis County · 2,785 people15°12886°average high
6Mount PleasantHenry County · 8,500 people15°13085°average high
T7CentervilleAppanoose County · 5,327 people14°13285°average high
T7ShenandoahPage County · 4,808 people14°13786°average high
9BettendorfScott County · 40,710 people14°12684°average high
10GlenwoodMills County · 5,287 people14°14686°average high
T11AlbiaMonroe County · 3,599 people14°13585°average high
T11DavenportScott County · 100,358 people14°13684°average high
T13Le ClaireScott County · 4,741 people14°12684°average high
T13OttumwaWapello County · 25,319 people14°13086°average high
T15ClarindaPage County · 5,273 people14°14986°average high
T15FairfieldJefferson County · 9,220 people14°12785°average high
T17Carter LakePottawattamie County · 3,670 people14°13586°average high
T17EldridgeScott County · 6,954 people14°13884°average high
T19CamancheClinton County · 4,557 people14°12984°average high
T19CharitonLucas County · 4,347 people14°15485°average high
T19Council BluffsPottawattamie County · 62,680 people14°13587°average high
T19KnoxvilleMarion County · 7,469 people14°13385°average high
T19WashingtonWashington County · 7,261 people14°14085°average high
T24ClintonClinton County · 24,049 people13°12984°average high
T24IndianolaWarren County · 16,829 people13°14385°average high
T24MuscatineMuscatine County · 23,164 people13°12784°average high
T24OskaloosaMahaska County · 11,493 people13°14485°average high
T24Red OakMontgomery County · 5,388 people13°14286°average high
T29DeWittClinton County · 5,704 people13°12984°average high
T29OsceolaClarke County · 5,679 people13°14985°average high
T31Des MoinesPolk County · 212,086 people13°12885°average high
T31PellaMarion County · 10,992 people13°13385°average high
T33AltoonaPolk County · 22,796 people13°15085°average high
T33NorwalkWarren County · 15,004 people13°12885°average high
T33Pleasant HillPolk County · 11,239 people13°12885°average high
36CarlisleWarren County · 4,532 people13°12886°average high
T37BondurantPolk County · 9,647 people13°15084°average high
T37ClivePolk County · 19,861 people13°12885°average high
T37West LibertyMuscatine County · 3,717 people13°13084°average high
T37WiltonMuscatine County · 2,892 people13°12484°average high
T37Windsor HeightsPolk County · 5,059 people13°12885°average high
T42AnkenyPolk County · 77,833 people13°15085°average high
T42KalonaWashington County · 2,811 people13°13085°average high
T42MitchellvillePolk County · 2,671 people13°13785°average high
T42Saylorvilleunincorporated, Polk County · 3,366 people13°15085°average high
T42UrbandalePolk County · 48,570 people13°15085°average high
T42West Des MoinesPolk County · 74,224 people13°12885°average high
T48CrestonUnion County · 7,335 people13°14584°average high
T48WaukeeDallas County · 34,890 people13°12885°average high
T48West BranchCedar County · 2,956 people13°13084°average high
T51GrimesPolk County · 17,405 people13°15085°average high
T51Iowa CityJohnson County · 76,229 people13°13085°average high
T51MaquoketaJackson County · 6,027 people13°15384°average high
T51WintersetMadison County · 5,520 people13°14585°average high
55TiptonCedar County · 3,060 people12°15083°average high
T56CoralvilleJohnson County · 23,960 people12°13084°average high
T56JohnstonPolk County · 25,065 people12°15085°average high
T56Missouri ValleyHarrison County · 2,616 people12°15486°average high
T59NewtonJasper County · 15,741 people12°14284°average high
T59Polk CityPolk County · 6,630 people12°15085°average high
T61North LibertyJohnson County · 21,976 people12°13084°average high
T61TiffinJohnson County · 7,156 people12°13084°average high
T63AdelDallas County · 7,098 people12°15185°average high
T63SolonJohnson County · 3,345 people12°14484°average high
65HuxleyStory County · 4,715 people12°15184°average high
66AtlanticCass County · 6,676 people12°15285°average high
T67Mount VernonLinn County · 4,514 people12°13484°average high
T67WilliamsburgIowa County · 3,408 people12°15184°average high
T69DubuqueDubuque County · 59,148 people12°13383°average high
T69GrinnellPoweshiek County · 9,430 people12°15784°average high
T69MadridBoone County · 2,820 people12°14184°average high
72AnamosaJones County · 5,901 people12°15283°average high
T73AsburyDubuque County · 6,035 people11°13382°average high
T73Cedar RapidsLinn County · 137,935 people11°14484°average high
T73PerryDallas County · 8,208 people11°15185°average high
T76FairfaxLinn County · 2,925 people11°14484°average high
T76MarengoIowa County · 2,425 people11°15184°average high
T76MarionLinn County · 42,732 people11°13484°average high
T76MonticelloJones County · 4,104 people11°15283°average high
T76OnawaMonona County · 2,821 people11°15186°average high
81HarlanShelby County · 4,859 people11°14884°average high
T82HiawathaLinn County · 7,432 people11°13484°average high
T82NevadaStory County · 6,974 people11°15184°average high
84BooneBoone County · 12,471 people11°15384°average high
T85AmesStory County · 68,220 people11°14784°average high
T85MarshalltownMarshall County · 27,536 people11°15284°average high
T85TamaTama County · 3,011 people11°15284°average high
88Sergeant BluffWoodbury County · 5,324 people11°15486°average high
89JeffersonGreene County · 4,150 people10°14984°average high
T90CarrollCarroll County · 10,085 people10°15384°average high
T90Center PointLinn County · 2,572 people10°14584°average high
T90DyersvilleDubuque County · 4,574 people10°15282°average high
93Sioux CityWoodbury County · 86,356 people10°15486°average high
T94DenisonCrawford County · 8,214 people10°14984°average high
T94Story CityStory County · 3,382 people10°14184°average high
96VintonBenton County · 5,004 people10°14584°average high
97Grundy CenterGrundy County · 2,814 people10°15483°average high
98EldoraHardin County · 2,593 people10°15383°average high
T99HudsonBlack Hawk County · 3,028 people9°15083°average high
T99WaterlooBlack Hawk County · 66,919 people9°15083°average high
T101Cedar FallsBlack Hawk County · 41,240 people9°15083°average high
T101EvansdaleBlack Hawk County · 4,463 people9°15084°average high
T101ManchesterDelaware County · 5,357 people9°15882°average high
104JesupBuchanan County · 2,557 people9°15083°average high
105Iowa FallsHardin County · 5,013 people9°15783°average high
106IndependenceBuchanan County · 6,312 people9°15083°average high
107Webster CityHamilton County · 7,815 people9°16083°average high
T108Fort DodgeWebster County · 24,837 people9°15783°average high
T108HamptonFranklin County · 4,264 people9°15783°average high
T108Le MarsPlymouth County · 10,760 people9°16085°average high
T108Storm LakeBuena Vista County · 11,590 people9°15183°average high
T108WaukonAllamakee County · 3,849 people9°16081°average high
T108WaverlyBremer County · 10,561 people9°15083°average high
T114HawardenSioux County · 2,665 people8°16685°average high
T114PostvilleAllamakee County · 2,402 people8°16281°average high
T116CherokeeCherokee County · 5,122 people8°16584°average high
T116OelweinFayette County · 5,757 people8°15382°average high
T118Eagle GroveWright County · 3,653 people8°16183°average high
T118HumboldtHumboldt County · 4,675 people8°15283°average high
T118Sioux CenterSioux County · 8,864 people8°15484°average high
121ClarionWright County · 2,758 people8°16183°average high
T122Charles CityFloyd County · 7,013 people8°15482°average high
T122Mason CityCerro Gordo County · 26,853 people8°16182°average high
T122Orange CitySioux County · 6,468 people8°15484°average high
T122Rock ValleySioux County · 4,188 people8°15484°average high
126DecorahWinneshiek County · 7,417 people8°15382°average high
127BelmondWright County · 2,420 people8°16183°average high
T128AlgonaKossuth County · 5,309 people8°16083°average high
T128EmmetsburgPalo Alto County · 3,684 people8°15383°average high
T128New HamptonChickasaw County · 3,420 people8°15881°average high
T128OsageMitchell County · 3,552 people8°15682°average high
132Clear LakeCerro Gordo County · 7,601 people7°16082°average high
133GarnerHancock County · 3,029 people7°16082°average high
T134Forest CityWinnebago County · 4,143 people7°15982°average high
T134SpencerClay County · 11,218 people7°16184°average high
136EsthervilleEmmet County · 5,807 people7°16682°average high
137Rock RapidsLyon County · 2,733 people7°16884°average high
T138SheldonO'Brien County · 5,575 people7°17184°average high
T138Spirit LakeDickinson County · 5,525 people7°15883°average high
T140CrescoHoward County · 3,925 people7°17081°average high
T140MilfordDickinson County · 3,209 people7°15883°average high
142SibleyOsceola County · 2,762 people6°17383°average high
Quick answers

Questions people ask

Which Iowa town has the mildest winters?

Keokuk (Lee County): January nights average a low of 18°. Fort Madison (16°) and Burlington (16°) follow.

How are these towns ranked?

By the average January low (the coldest month’s nights), highest first, on NOAA’s 1991–2020 normals, read from its 5 km grid at each town’s center. Towns with the same figure share a rank (T); the figure and the state rank are the ones on each town’s Climate page. How grades work.

Why isn’t my town on this list?

The list covers towns of 2,500+ residents, one for each of NOAA’s 5 km grid cells (142 in Iowa): where towns share a cell, one of them stands for it, since the grid gives them the same figures. Every town’s own figures are on its Climate page. Every town is on the Iowa page.

Go deeper

More Iowa lists

Every list ranks the same 2,500+ towns, so a town’s rank means the same thing on each.

All Iowa rankings →
Other states

Mildest winters in other states