Guest, Sign inJoin
South Howe Street, Southport (July 2023) 06Southport, #1 on this list · Photo: DiscoA340 · CC BY-SA 4.0
North Carolina rankings · Climate

Towns with the mildest winters in North Carolina

Southport has the mildest winters of North Carolina’s 287 towns of 2,500+: January nights average a low of 37° (NOAA 1991–2020 normals). The typical town here averages 30°; 78 of the 287 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

Southport

Brunswick County · 4,434 people
37°

January low·July high 89°·51 freezing nights a year

#T2

Oak Island

Brunswick County · 9,337 people
37°

January low·July high 89°·51 freezing nights a year

#T2

Sunset Beach

Brunswick County · 4,642 people
37°

January low·July high 88°·55 freezing nights a year

All 287 towns

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

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

#TownJanuary lowNights ≤32°July high
1SouthportBrunswick County · 4,434 people37°5189°average high
T2Oak IslandBrunswick County · 9,337 people37°5189°average high
T2Sunset BeachBrunswick County · 4,642 people37°5588°average high
4Carolina ShoresBrunswick County · 5,540 people37°5588°average high
5Carolina BeachNew Hanover County · 6,870 people36°5189°average high
6BeaufortCarteret County · 4,912 people36°2888°average high
7Morehead CityCarteret County · 10,434 people36°3688°average high
T8Myrtle Groveunincorporated, New Hanover County · 12,637 people36°4189°average high
T8Wrightsville BeachNew Hanover County · 2,397 people36°3789°average high
10Porters Neckunincorporated, New Hanover County · 7,654 people36°3789°average high
T11Emerald IsleCarteret County · 3,970 people36°5388°average high
T11Ogdenunincorporated, New Hanover County · 8,249 people36°3789°average high
T11ShallotteBrunswick County · 5,335 people36°3789°average high
T14Surf CityPender County · 5,142 people35°6089°average high
T14SwansboroOnslow County · 4,174 people35°4389°average high
T16Nags HeadDare County · 3,117 people35°2886°average high
T16Sneads Ferryunincorporated, Onslow County · 2,728 people35°4389°average high
18NewportCarteret County · 4,500 people35°5388°average high
19Neuse Forestunincorporated, Craven County · 2,671 people35°3889°average high
T20Boiling Spring LakesBrunswick County · 6,875 people35°5190°average high
T20James Cityunincorporated, Craven County · 4,789 people35°4789°average high
22Kill Devil HillsDare County · 7,731 people35°2886°average high
23New BernCraven County · 34,724 people35°4789°average high
T24Hampsteadunincorporated, Pender County · 9,292 people35°5690°average high
T24HavelockCraven County · 17,430 people35°3889°average high
T24Kitty HawkDare County · 3,670 people35°2886°average high
T24River Roadunincorporated, Beaufort County · 3,366 people35°4789°average high
T24Southern ShoresDare County · 3,110 people35°2886°average high
T24WashingtonBeaufort County · 9,910 people35°4789°average high
T30Holly RidgeOnslow County · 5,908 people34°6089°average high
T30Murraysvilleunincorporated, New Hanover County · 16,339 people34°3790°average high
T30WilmingtonNew Hanover County · 126,809 people34°3790°average high
33Tabor CityColumbus County · 3,886 people34°6490°average high
34JacksonvilleOnslow County · 72,732 people34°4389°average high
T35BelvilleBrunswick County · 3,199 people34°3790°average high
T35LelandBrunswick County · 35,731 people34°3790°average high
T37Brices Creekunincorporated, Craven County · 3,415 people34°4789°average high
T37Northchaseunincorporated, New Hanover County · 5,896 people34°5690°average high
T37Piney Greenunincorporated, Onslow County · 14,078 people34°4389°average high
T37Trent WoodsCraven County · 4,070 people34°4789°average high
T41LumbertonRobeson County · 18,955 people34°5491°average high
T41Wrightsborounincorporated, New Hanover County · 6,287 people34°5690°average high
43WhitevilleColumbus County · 4,765 people34°5991°average high
T44Half Moonunincorporated, Onslow County · 7,378 people33°6389°average high
T44River BendCraven County · 2,890 people33°4789°average high
T46BurgawPender County · 3,903 people33°4990°average high
T46ElizabethtownBladen County · 3,306 people33°6291°average high
T46St. PaulsRobeson County · 2,109 people33°5491°average high
T49EdentonChowan County · 4,546 people33°4788°average high
T49PembrokeRobeson County · 2,888 people33°5491°average high
51WallaceDuplin County · 3,570 people33°7190°average high
T52AydenPitt County · 5,263 people33°5490°average high
T52Elizabeth CityPasquotank County · 19,622 people33°5888°average high
T52GriftonPitt County · 2,539 people33°4590°average high
T52Hope MillsCumberland County · 18,324 people33°4791°average high
T52Red SpringsRobeson County · 3,216 people33°5891°average high
T57EastoverCumberland County · 3,743 people33°6391°average high
T57KinstonLenoir County · 19,705 people33°4590°average high
T57La GrangeLenoir County · 2,947 people33°4590°average high
T60Brogdenunincorporated, Wayne County · 2,733 people32°4290°average high
T60Elroyunincorporated, Wayne County · 3,251 people32°4290°average high
T60FayettevilleCumberland County · 209,120 people32°4791°average high
T60GoldsboroWayne County · 35,012 people32°4290°average high
T60LaurinburgScotland County · 14,582 people32°5691°average high
T60Mar-Macunincorporated, Wayne County · 2,877 people32°4290°average high
T60Mount OliveWayne County · 4,521 people32°6390°average high
T60PlymouthWashington County · 3,170 people32°5289°average high
T60Rockfishunincorporated, Hoke County · 3,574 people32°8291°average high
T60WarsawDuplin County · 2,853 people32°6490°average high
T60WintervillePitt County · 10,973 people32°5490°average high
71GreenvillePitt County · 96,443 people32°5490°average high
72DunnHarnett County · 8,814 people32°6790°average high
T73ClintonSampson County · 8,466 people32°5890°average high
T73FarmvillePitt County · 4,577 people32°5490°average high
T73Spring LakeCumberland County · 11,252 people32°6391°average high
T73WadesboroAnson County · 5,035 people32°5891°average high
T77East Rockinghamunincorporated, Richmond County · 2,779 people32°7191°average high
T77ErwinHarnett County · 4,956 people32°6791°average high
T79HamletRichmond County · 5,870 people32°7191°average high
T79RockinghamRichmond County · 8,815 people32°7191°average high
T81BensonJohnston County · 4,660 people32°6790°average high
T81PolktonAnson County · 1,722 people32°5891°average high
T81RaefordHoke County · 4,703 people32°8291°average high
T81WilliamstonMartin County · 5,086 people32°5389°average high
T85Anderson Creekunincorporated, Harnett County · 13,927 people32°7790°average high
T85Buies Creek College campusunincorporated, Harnett County · 3,746 people32°6791°average high
T87AberdeenMoore County · 10,066 people32°5890°average high
T87PinehurstMoore County · 18,670 people32°5890°average high
T87Southern PinesMoore County · 17,357 people32°6290°average high
T87Spout Springsunincorporated, Harnett County · 11,242 people32°7990°average high
91LillingtonHarnett County · 5,040 people32°7791°average high
T92Barbecue5,910 people32°7990°average high
T92CarthageMoore County · 3,070 people32°6290°average high
T92MarshvilleUnion County · 2,739 people32°6991°average high
T92Moyockunincorporated, Currituck County · 5,684 people32°5888°average high
T92SmithfieldJohnston County · 13,114 people32°7691°average high
T92Whispering PinesMoore County · 5,505 people32°6290°average high
T92WindsorBertie County · 3,469 people32°5389°average high
T92WingateUnion County · 4,628 people32°6991°average high
T100AngierHarnett County · 9,410 people31°7790°average high
T100SelmaJohnston County · 7,406 people31°7690°average high
T100Seven Lakesunincorporated, Moore County · 4,535 people31°5890°average high
T103Fuquay-VarinaWake County · 48,536 people31°7090°average high
T103MonroeUnion County · 42,644 people31°6991°average high
T103OakboroStanly County · 2,316 people31°6691°average high
T103UnionvilleUnion County · 7,322 people31°6991°average high
T103Wilson's MillsJohnston County · 2,987 people31°7690°average high
T108ClaytonJohnston County · 32,633 people31°7790°average high
T108GarnerWake County · 41,562 people31°8890°average high
T108TroyMontgomery County · 3,020 people31°5890°average high
T108WilsonWilson County · 49,572 people31°6090°average high
T112AlbemarleStanly County · 17,769 people31°6690°average high
T112Indian TrailUnion County · 44,303 people31°5790°average high
T112LocustStanly County · 6,120 people31°7490°average high
T112MarvinUnion County · 7,040 people31°5190°average high
T112StallingsUnion County · 17,760 people31°5790°average high
T112WaxhawUnion County · 23,140 people31°5790°average high
T112WeddingtonUnion County · 14,517 people31°5790°average high
T112Wesley ChapelUnion County · 9,566 people31°5790°average high
T120Archer LodgeJohnston County · 5,649 people31°7790°average high
T120FairviewUnion County · 3,805 people31°6991°average high
T120MatthewsMecklenburg County · 32,769 people31°5790°average high
T120MidlandCabarrus County · 5,151 people31°7491°average high
T120Mineral SpringsUnion County · 3,514 people31°5791°average high
T120Mint HillMecklenburg County · 29,476 people31°5790°average high
T120TarboroEdgecombe County · 10,979 people31°7090°average high
T127BelmontGaston County · 16,415 people31°5890°average high
T127PinevilleMecklenburg County · 11,851 people31°5890°average high
T129CharlotteMecklenburg County · 964,784 people31°5890°average high
T129LowellGaston County · 3,939 people31°6190°average high
T129RaleighWake County · 506,306 people31°6590°average high
T129RanloGaston County · 4,848 people31°6190°average high
T133AsheboroRandolph County · 27,990 people31°6589°average high
T133CaryWake County · 183,582 people31°6790°average high
T133CramertonGaston County · 5,713 people31°5890°average high
T133Holly SpringsWake County · 50,288 people31°8990°average high
T137HarrisburgCabarrus County · 20,742 people31°7490°average high
T137KnightdaleWake County · 23,144 people31°7790°average high
T137SanfordLee County · 34,138 people31°7990°average high
T140GastoniaGaston County · 87,067 people30°6189°average high
T140Mount HollyGaston County · 19,033 people30°5890°average high
T140WendellWake County · 19,687 people30°7790°average high
T140ZebulonWake County · 11,933 people30°6190°average high
T144ConcordCabarrus County · 114,598 people30°7490°average high
T144HuntersvilleMecklenburg County · 68,535 people30°5889°average high
T146ApexWake County · 80,419 people30°6790°average high
T146DallasGaston County · 6,392 people30°6190°average high
T146MorrisvilleWake County · 32,466 people30°6590°average high
T146Siler CityChatham County · 8,155 people30°7389°average high
T146StanleyGaston County · 4,237 people30°6189°average high
T151AhoskieHertford County · 4,608 people30°6489°average high
T151LibertyRandolph County · 2,739 people30°7389°average high
T151RandlemanRandolph County · 4,767 people30°7489°average high
T151RolesvilleWake County · 12,839 people30°8290°average high
T155PittsboroChatham County · 5,054 people30°7490°average high
T155Rocky MountNash County · 55,120 people30°7090°average high
T157Bessemer CityGaston County · 5,834 people30°6189°average high
T157Briar Chapelunincorporated, Chatham County · 6,049 people30°7790°average high
T157KannapolisCabarrus County · 61,708 people30°7490°average high
T160CorneliusMecklenburg County · 35,094 people30°7489°average high
T160Kings MountainCleveland County · 12,117 people30°8889°average high
T160Lowesvilleunincorporated, Lincoln County · 3,874 people30°5890°average high
T163BurlingtonAlamance County · 61,496 people30°7289°average high
T163DavidsonMecklenburg County · 16,662 people30°7489°average high
T163Enochvilleunincorporated, Rowan County · 3,321 people30°7489°average high
T163Glen Ravenunincorporated, Alamance County · 3,506 people30°7289°average high
T163Pleasant GardenGuilford County · 5,165 people30°6889°average high
T163RockwellRowan County · 2,417 people30°7189°average high
T169Forest Oaksunincorporated, Guilford County · 4,293 people30°6389°average high
T169GrahamAlamance County · 20,131 people30°8089°average high
T169Lake Royaleunincorporated, Franklin County · 3,168 people30°9890°average high
T169Red OakNash County · 3,523 people30°6990°average high
T169Roanoke RapidsHalifax County · 14,386 people30°7090°average high
T169SpindaleRutherford County · 4,180 people30°9989°average high
T169Wake ForestWake County · 58,147 people30°8290°average high
T169Westportunincorporated, Lincoln County · 5,915 people30°5389°average high
T177ArchdaleRandolph County · 12,254 people30°6888°average high
T177China GroveRowan County · 4,650 people30°9389°average high
T177ElonAlamance County · 11,366 people30°7889°average high
T177GibsonvilleGuilford County · 9,876 people30°7889°average high
T177LandisRowan County · 3,885 people30°7489°average high
T177LincolntonLincoln County · 12,465 people30°7688°average high
T177MurfreesboroHertford County · 2,242 people30°8389°average high
T177NashvilleNash County · 5,911 people30°6990°average high
T177RutherfordtonRutherford County · 3,723 people30°9990°average high
T177SwepsonvilleAlamance County · 2,632 people30°8089°average high
T177TrinityRandolph County · 7,274 people30°6888°average high
T188CarrboroOrange County · 20,962 people30°7789°average high
T188Granite QuarryRowan County · 3,129 people30°7189°average high
T188High PointGuilford County · 120,571 people30°6888°average high
T188JamestownGuilford County · 3,803 people30°6888°average high
T188YoungsvilleFranklin County · 2,461 people30°9890°average high
T193Chapel HillOrange County · 63,565 people29°7790°average high
T193ThomasvilleDavidson County · 27,733 people29°6888°average high
T195CherryvilleGaston County · 6,523 people29°7689°average high
T195Danaunincorporated, Henderson County · 4,147 people29°8883°average high
T195DurhamDurham County · 305,561 people29°6590°average high
T195Green LevelAlamance County · 3,409 people29°8089°average high
T195GreensboroGuilford County · 308,667 people29°6388°average high
T195Lake Norman of Iredellunincorporated, Iredell County · 12,494 people29°5389°average high
T195MebaneAlamance County · 21,952 people29°8089°average high
T195MooresvilleIredell County · 55,842 people29°9388°average high
T195SalisburyRowan County · 36,879 people29°7189°average high
T204FranklintonFranklin County · 2,890 people29°9890°average high
T204MaidenCatawba County · 3,922 people29°5388°average high
T204ShelbyCleveland County · 23,309 people29°8890°average high
T207East Flat Rockunincorporated, Henderson County · 6,323 people29°8883°average high
T207Forest CityRutherford County · 7,410 people29°9990°average high
T207HickoryCatawba County · 45,975 people29°6988°average high
T207HillsboroughOrange County · 9,778 people29°7189°average high
T207Lake Norman of Catawbaunincorporated, Catawba County · 9,906 people29°5389°average high
T207SpencerRowan County · 3,450 people29°7189°average high
T207St. Stephensunincorporated, Catawba County · 9,457 people29°6988°average high
T214Boiling SpringsCleveland County · 4,799 people29°8890°average high
T214ConoverCatawba County · 8,938 people29°6988°average high
T214LouisburgFranklin County · 3,480 people29°9890°average high
T214NewtonCatawba County · 13,822 people29°5388°average high
T214Oak RidgeGuilford County · 7,896 people29°6888°average high
T214ReidsvilleRockingham County · 14,692 people29°7688°average high
T214StokesdaleGuilford County · 6,133 people29°6888°average high
T214TroutmanIredell County · 4,336 people29°9988°average high
T214WalkertownForsyth County · 6,120 people29°6488°average high
T223KernersvilleForsyth County · 29,128 people29°6888°average high
T223LexingtonDavidson County · 20,238 people29°8289°average high
T223Long ViewCatawba County · 5,387 people29°6988°average high
T223Mountain Viewunincorporated, Catawba County · 3,982 people29°6988°average high
T223SummerfieldGuilford County · 11,327 people29°6888°average high
228Winston-SalemForsyth County · 257,271 people29°6488°average high
T229Bethlehemunincorporated, Alexander County · 4,101 people29°6988°average high
T229HendersonvilleHenderson County · 15,867 people29°8884°average high
T229MidwayDavidson County · 5,104 people29°8288°average high
T229WallburgDavidson County · 3,255 people29°6888°average high
T229Welcomeunincorporated, Davidson County · 3,521 people29°8288°average high
T229WentworthRockingham County · 2,774 people29°7689°average high
T235Granite FallsCaldwell County · 4,964 people29°6988°average high
T235HudsonCaldwell County · 3,786 people29°9188°average high
T235SawmillsCaldwell County · 5,105 people29°6988°average high
T235Tyrounincorporated, Davidson County · 3,833 people29°8288°average high
T239Cajah's MountainCaldwell County · 2,702 people28°9188°average high
T239CreedmoorGranville County · 5,046 people28°8290°average high
T239MorgantonBurke County · 17,849 people28°9188°average high
T239Rural HallForsyth County · 3,607 people28°8588°average high
T239ValdeseBurke County · 4,712 people28°9188°average high
T244KingStokes County · 7,977 people28°8587°average high
T244StatesvilleIredell County · 32,181 people28°9988°average high
T244Valley Hillunincorporated, Henderson County · 2,675 people28°8883°average high
T247GamewellCaldwell County · 3,713 people28°9189°average high
T247LenoirCaldwell County · 18,372 people28°9188°average high
T247TobaccovilleForsyth County · 2,770 people28°8588°average high
T250Bermuda RunDavie County · 3,323 people28°10488°average high
T250ClemmonsForsyth County · 22,808 people28°10488°average high
T250HendersonVance County · 15,013 people28°10689°average high
T250LewisvilleForsyth County · 14,421 people28°10488°average high
T254ButnerGranville County · 8,112 people28°8290°average high
T254EdenRockingham County · 15,500 people28°9989°average high
T254MocksvilleDavie County · 6,282 people28°11688°average high
T254OxfordGranville County · 8,985 people28°6989°average high
258WilkesboroWilkes County · 3,618 people28°10488°average high
T259Edneyvilleunincorporated, Henderson County · 2,716 people28°8882°average high
T259North WilkesboroWilkes County · 4,369 people28°10488°average high
T259RoxboroPerson County · 8,380 people28°10688°average high
T259YadkinvilleYadkin County · 3,055 people28°10488°average high
T263MarionMcDowell County · 7,440 people28°10188°average high
T263Mountain Homeunincorporated, Henderson County · 3,437 people28°8883°average high
265JonesvilleYadkin County · 2,356 people27°11288°average high
266ElkinSurry County · 4,130 people27°11287°average high
267FletcherHenderson County · 8,373 people27°8884°average high
268Etowahunincorporated, Henderson County · 7,968 people27°11884°average high
T269Emmaunincorporated, Buncombe County · 2,657 people27°7785°average high
T269Mount AirySurry County · 10,682 people27°11187°average high
T269Royal Pinesunincorporated, Buncombe County · 4,325 people27°8884°average high
T272Avery Creekunincorporated, Buncombe County · 2,887 people27°10984°average high
T272BrevardTransylvania County · 8,098 people27°11083°average high
274WoodfinBuncombe County · 8,229 people27°7785°average high
T275AshevilleBuncombe County · 93,523 people27°7785°average high
T275Black MountainBuncombe County · 8,491 people27°10282°average high
T277Mills RiverHenderson County · 7,504 people27°10984°average high
T277WeavervilleBuncombe County · 4,790 people27°7785°average high
279Swannanoaunincorporated, Buncombe County · 6,901 people26°10283°average high
280SylvaJackson County · 2,691 people26°10184°average high
281FranklinMacon County · 4,403 people26°10886°average high
282Mars HillMadison County · 2,280 people26°12285°average high
283Cullowhee College campusunincorporated, Jackson County · 7,973 people26°10185°average high
284CantonHaywood County · 4,418 people25°11082°average high
285Lake Junaluskaunincorporated, Haywood County · 3,175 people25°12083°average high
286WaynesvilleHaywood County · 11,006 people24°12082°average high
287Boone College campusWatauga County · 19,929 people24°12779°average high
Quick answers

Questions people ask

Which North Carolina town has the mildest winters?

Southport (Brunswick County): January nights average a low of 37°. Oak Island (37°) and Sunset Beach (37°) 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 (287 in North Carolina): 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 North Carolina page.

Go deeper

More North Carolina lists

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

All North Carolina rankings →
Other states

Mildest winters in other states