Minnesota Water Hardness by County

Water in Minnesota has a median hardness of 140 mg/L as CaCO₃ — "hard" on the USGS scale — based on 62,159 measurements at 7,816 monitoring stations. Lyon County has the state's hardest measured water (565.5 mg/L); Cook County the softest (19). Rank: #22 of the 50 states and D.C.

Minnesota water hardness map — what the numbers mean. Data verified 2026-07-22.

Of Minnesota's 87 measured counties, 65 very hard, 9 hard, 8 moderately hard, and 5 soft. The hardest are Lyon County (565.5 mg/L), Redwood County (560), and Lac qui Parle County (541). Cook County is the softest at 19 mg/L (soft).

About 87% of Minnesota's roughly 5.7 million residents in counties with gate-passing hardness data live where tap water is hard or worse.

Statewide, Minnesota's median works out to 8.2 grains per gallon and ranks #22 of the 50 states and D.C. Across 62,159 measurements at 7,816 stations — 20,151 of them since 2000 — the middle 80% of readings fall between 35 and 382 mg/L. The public record runs from 1932 to 2025.

See where Minnesota sits nationally on the national map, or what its number means on the hardness scale.

Download the Minnesota water hardness map (PNG) — Water hardness by county in Minnesota: 87 counties mapped from USGS/EPA data, statewide median 140 mg/L (hard); darker counties have harder water.

By county

Water hardness by county

The table lists all 87 measured Minnesota counties, hardest first. Their medians span 565.5 mg/L in Lyon County to 19 in Cook County — a 29.8× range.

County water hardness, hardest first — median mg/L as CaCO₃.
CountyMedianBandResultsSitesNewest
Lyon County565.5Very hard148642025
Redwood County560Very hard4101102025
Lac qui Parle County541Very hard198242023
Grant County540Very hard57472023
Nobles County505.5Very hard80572023
Yellow Medicine County500Very hard436682025
Lincoln County493Very hard96392025
Renville County490Very hard274552025
Brown County480Very hard307252025
Nicollet County440Very hard264352025
Traverse County435Very hard56372023
Big Stone County430Very hard162462023
Swift County425Very hard194482025
Jackson County420Very hard321382023
Stevens County420Very hard33242023
Chippewa County410Very hard283232025
McLeod County405Very hard142482025
Carver County400Very hard450442025
Murray County390Very hard78322025
Sibley County390Very hard132312025
Le Sueur County380Very hard251462025
Pipestone County375Very hard360512023
Faribault County367.5Very hard638542019
Cottonwood County363Very hard110482025
Scott County362.5Very hard294822025
Blue Earth County360Very hard894792025
Martin County352Very hard241332025
Clay County350Very hard436702025
Rock County350Very hard132542023
Steele County340Very hard79242023
Waseca County335Very hard62202022
Rice County324.5Very hard106432025
Meeker County320Very hard427502023
Watonwan County320Very hard73432025
Pope County313Very hard135902022
Olmsted County303.5Very hard2821022024
Dodge County300Very hard17152024
Norman County300Very hard441392025
Fillmore County293Very hard158612015
Red Lake County288Very hard90322025
Freeborn County280Very hard319472023
Houston County280Very hard308312024
Marshall County280Very hard369982024
Wabasha County270Very hard186412024
Mower County268Very hard410542023
Kittson County260Very hard410692024
Dakota County252Very hard1,2752622025
Kandiyohi County250Very hard146652023
Stearns County250Very hard6821582025
Wadena County250Very hard1841012023
Goodhue County240Very hard5051002025
Polk County240Very hard6841612025
Wilkin County240Very hard310502023
Wright County240Very hard1,016752023
Otter Tail County233Very hard4392202023
Mahnomen County230Very hard92362025
Roseau County230Very hard156502024
Winona County230Very hard751492025
Pennington County228.5Very hard27202024
Hennepin County220Very hard2,6624052025
Todd County220Very hard121712025
Becker County212Very hard2231152022
Douglas County207Very hard129662025
Anoka County186Very hard2,2981652025
Beltrami County183Very hard3611162025
Sherburne County171Hard4431282024
Clearwater County170Hard256722025
Chisago County160Hard282472025
Isanti County150Hard90372020
Morrison County149Hard9341042024
Benton County147.5Hard166232024
Cass County135Hard4561322025
Ramsey County123Hard16,0501752025
Itasca County120Hard9002572025
Aitkin County110Moderately hard4141122024
Washington County105Moderately hard2,1051592025
Hubbard County100.5Moderately hard6761412025
Crow Wing County100Moderately hard3981182025
Mille Lacs County100Moderately hard115652025
Kanabec County78Moderately hard92432023
Pine County64Moderately hard6701222023
St. Louis County62Moderately hard6,5106972025
Carlton County59.3Soft3,4881462023
Lake of the Woods County49Soft287412024
Koochiching County44Soft910802025
Lake County21Soft2,3433242025
Cook County19Soft1,1642372025

ZIP codes

ZIP codes in Minnesota

The ZIP codes below are grouped by the Minnesota county they fall in. Each ZIP takes its county's measured median — shown in the group header — so this is a ZIP-to-county guide, not a separate reading for every ZIP. To check the water system serving a specific address, use the lookup.

Lyon County · 565.5 mg/L · Very hard

561155613256157561695617556229562395625856264

Redwood County · 560 mg/L · Very hard

5608356152561665618056214562245625556263562665628356287562925629356294

Lac qui Parle County · 541 mg/L · Very hard

5621256218562325625656257

Grant County · 540 mg/L · Very hard

56248562745630956311563395653156590

Nobles County · 505.5 mg/L · Very hard

56110561175611956129561535615556165561685618556187

Yellow Medicine County · 500 mg/L · Very hard

56220562235623756241562455629156297

Lincoln County · 493 mg/L · Very hard

561135613656142561495617856280

Renville County · 490 mg/L · Very hard

55310553145533255333553425623056270562775628456285

Brown County · 480 mg/L · Very hard

560195603056041560735608556087

Nicollet County · 440 mg/L · Very hard

5600356021560545607456082

Traverse County · 435 mg/L · Very hard

562365629656583

Big Stone County · 430 mg/L · Very hard

56210562115622556227562405627656278

Swift County · 425 mg/L · Very hard

562085621556231562495625256271

Jackson County · 420 mg/L · Very hard

561115613756143561505616156167

Stevens County · 420 mg/L · Very hard

5620756221562355624456267

Chippewa County · 410 mg/L · Very hard

5622256260562625626556295

McLeod County · 405 mg/L · Very hard

5531255336553505535455370553815538555395

Carver County · 400 mg/L · Very hard

553155531755318553225533955360553675536855386553875538855397

Murray County · 390 mg/L · Very hard

5611456122561235612556131561415615156172

Sibley County · 390 mg/L · Very hard

55307553345533555338553665539656044

Le Sueur County · 380 mg/L · Very hard

560175602856050560525605756058560695607156096

Pipestone County · 375 mg/L · Very hard

561285613956140561645617056186

Faribault County · 367.5 mg/L · Very hard

560135601456023560255602756033560515609756098

Cottonwood County · 363 mg/L · Very hard

561015611856145561595617456183

Scott County · 362.5 mg/L · Very hard

55020550545535255372553785537956011

Blue Earth County · 360 mg/L · Very hard

560015601056024560345603756055560635606556068560785608056090

Martin County · 352 mg/L · Very hard

5603156039560755608856121561275616056162561715617656181

Clay County · 350 mg/L · Very hard

56514565255652956536565465654756549565525656056562565635658056585

Rock County · 350 mg/L · Very hard

561165613456138561445614656147561565615856173

Steele County · 340 mg/L · Very hard

5504955060559175602656046

Waseca County · 335 mg/L · Very hard

56048560725609156093

Rice County · 324.5 mg/L · Very hard

5501955021550465505255053550575508755088

Meeker County · 320 mg/L · Very hard

55324553255532955355553895622856243

Watonwan County · 320 mg/L · Very hard

560225605656060560625608156120

Pope County · 313 mg/L · Very hard

5622656316563235632756334563495638156385

Olmsted County · 303.5 mg/L · Very hard

559015590255903559045590555906559205592955932559345596055976

Dodge County · 300 mg/L · Very hard

559245592755940559445595555985

Norman County · 300 mg/L · Very hard

565105651956541565455654856550565745658156584

Fillmore County · 293 mg/L · Very hard

5592255923559355593955949559545596255965559715597555990

Red Lake County · 288 mg/L · Very hard

56715567425674856750

Freeborn County · 280 mg/L · Very hard

560075600956016560205602956032560355603656042560435604556089

Houston County · 280 mg/L · Very hard

55919559215593155941559435594755974

Marshall County · 280 mg/L · Very hard

567105671356724567375673856744567575675856760

Wabasha County · 270 mg/L · Very hard

5504155945559565595755964559685598155991

Mower County · 268 mg/L · Very hard

559095591255918559265593355936559505595155953559615596755970559735597755982

Kittson County · 260 mg/L · Very hard

567205672856729567315673256733567345673556755

Dakota County · 252 mg/L · Very hard

55024550315503355044550655506855075550765507755085551185512055121551225512355124551505530655337

Kandiyohi County · 250 mg/L · Very hard

5620156209562165625156253562735627956281562825628856289

Stearns County · 250 mg/L · Very hard

5532055353553825630156303563075631056312563205632156325563315633556340563525635656362563685636956371563745637556376563775637856387

Wadena County · 250 mg/L · Very hard

56464564775648156482

Goodhue County · 240 mg/L · Very hard

55009550185502655027550665508955946559635598355992

Polk County · 240 mg/L · Very hard

56517565235653556540565425655656568565925664656684567165672156722567235673656762

Wilkin County · 240 mg/L · Very hard

56520565225654356553565655657956594

Wright County · 240 mg/L · Very hard

553015530255313553215532855341553495535855362553635537655390

Otter Tail County · 233 mg/L · Very hard

5632456361564535651556518565245652756528565335653456537565515656756571565725657356576565865658756588

Mahnomen County · 230 mg/L · Very hard

5651656557565665658956651

Roseau County · 230 mg/L · Very hard

56714567265675156756567595676156763

Winona County · 230 mg/L · Very hard

5591055925559525595955969559725597955987

Pennington County · 228.5 mg/L · Very hard

567015672556754

Hennepin County · 220 mg/L · Very hard

55111553055531155316553275533155340553435534455345553465534755356553575535955364553695537355374553755538455391554015540255403554045540555406554075540855409554105541155412554135541455415554165541755418554195542055422554235542455425554265542755428554295543055431554355543655437554385543955441554425544355444554455544655447554505545455455

Todd County · 220 mg/L · Very hard

5631856336563475636056389564345643756438564405644656479

Becker County · 212 mg/L · Very hard

56501565115652156544565545656956570565755657856591

Douglas County · 207 mg/L · Very hard

5630856315563195632656332563435635456355

Anoka County · 186 mg/L · Very hard

5500555011550145502555070550925530355304554215543255433554345544855449

Beltrami County · 183 mg/L · Very hard

566015663056647566505666356666566675667056678566835668556727

Sherburne County · 171 mg/L · Hard

553085530955319553305539856304

Clearwater County · 170 mg/L · Hard

566215663456644566525667156676

Chisago County · 160 mg/L · Hard

550125501355032550455505655069550745507955084

Isanti County · 150 mg/L · Hard

5500855017550295504055080

Morrison County · 149 mg/L · Hard

56314563285633856345563645637356382563845644356475

Benton County · 147.5 mg/L · Hard

56329563575636756379

Cass County · 135 mg/L · Hard

56435564525646656472564735647456484566265663356641566555666256672

Ramsey County · 123 mg/L · Hard

5510155102551035510455105551065510755108551095511055112551135511455116551175511955126551275513055155

Itasca County · 120 mg/L · Hard

5570955716557215572255742557445575355764557695577555781557845578655793566285663656637566395665756659566805668156688

Aitkin County · 110 mg/L · Moderately hard

557485575255760557855578756342563505643156469

Washington County · 105 mg/L · Moderately hard

55001550035501655038550425504355047550555507155073550825509055115551255512855129

Hubbard County · 100.5 mg/L · Moderately hard

5643356458564615646756470

Crow Wing County · 100 mg/L · Moderately hard

564015642556441564425644456447564485644956450564555646556468

Mille Lacs County · 100 mg/L · Moderately hard

55371563135633056353563595636356386

Kanabec County · 78 mg/L · Moderately hard

55006550075505156358

Pine County · 64 mg/L · Moderately hard

5503055036550375506355072557045571255735557565578355795

St. Louis County · 62 mg/L · Moderately hard

556025570255703557055570655708557105571155713557175571955723557245572555732557345573655738557415574655750557515575855763557655576855771557795578255790557925580255803558045580555806558075580855810558115581255814

Carlton County · 59.3 mg/L · Soft

5570755718557205572655733557495575755767557805579755798

Lake of the Woods County · 49 mg/L · Soft

56623566735668656711

Koochiching County · 44 mg/L · Soft

5577256627566295664956653566545665856660566615666856669

Lake County · 21 mg/L · Soft

5560155603556075560955614556165573155796

Cook County · 19 mg/L · Soft

556045560555606556125561355615

681 ZIP codes are not served by a mapped community water system — most are private-well areas. See well water hardness.

Check any ZIP's utility and hardness →

Source

Groundwater vs surface water

Minnesota's groundwater measures harder than its surface water — 286 mg/L across 4,311 samples versus 132 across 56,739, about 2.2× harder. Wells draw from groundwater, so well owners in Minnesota tend to see the harder number — 286 mg/L, very hard. Groundwater readings there run 130 to 540.3 mg/L across the middle 80% of samples. The comparison draws on 3,251 groundwater and 4,515 surface-water monitoring sites; 14 readings above 2,000 mg/L were logged but held out of the medians as outliers.

Groundwater (wells)

286 mg/L as CaCO₃ · 4,311 results at 3,251 stations.

Surface water (rivers, lakes)

132 mg/L as CaCO₃ · 56,739 results at 4,515 stations.

Groundwater measures about 2.2× harder than surface water here.

Chemistry

Water chemistry in Minnesota

Beyond the hardness number, Minnesota's water carries a fuller chemical signature — here is how its measured parameters compare to national benchmarks.

TDS

207 mg/L · n=42,529

207 mg/L — below the national county median of 226.

pH

7.8 pH · n=182,999

pH 7.8 — within the EPA secondary range of 6.5–8.5, on the alkaline side.

Alkalinity

120 mg/L as CaCO3 · n=26,352

120 mg/L — substantial buffering capacity, which resists pH swings.

Calcium : Magnesium

57.6 : 23.2 mg/L2.48 : 1 · n=11,101

Calcium is about 60% of Minnesota's hardness (57.6 mg/L Ca to 23.2 mg/L Mg), a little more magnesium-rich than the national ~68% calcium share.

Parameter medians may include a small share of quality-control samples; the hardness lane is fully QC-filtered.

Aquifers

Major aquifers under Minnesota

3 aquifer systems supply much of Minnesota's measured groundwater.

  • Cambrian-Ordovician aquifer systemmedian 317 mg/L across 139 samples at 77 sites: very hard.
  • Upper carbonate aquifermedian 292 mg/L across 11 samples at 9 sites: very hard.
  • Sand and gravel aquifers (glaciated regions)median 288 mg/L across 781 samples at 363 sites: very hard.

Together these systems account for 931 measured samples at 449 sites. Aquifer medians pool samples across a whole system and can mask local variation — see the national aquifer map for how these compare across states.

Trend

Hardness over time

1950s2020s210

Minnesota's decade median moved from 71 mg/L in the 1950s to 210 in the 2020s. Over the series, the decade median peaked at 210 mg/L in the 1960s and bottomed at 71 in the 1950s. Decade medians reflect where and what agencies sampled in each era, not just changes in the water itself.

Scale

Where Minnesota sits on the scale

On the USGS scale, Minnesota's 140 mg/L is hard — 8.2 grains per gallon, above the 120 mg/L hard cutoff, below very hard.

SoftModerately hardHardVery hard60 · 3.5 gpg120 · 7.0 gpg180 · 10.5 gpg140 mg/L — Hard
Harder than 50% of the 2,977 measured county medians.

At 140 mg/L (8.2 gpg), water-softener owners in Minnesota typically set their unit to this hardness — settings calculator.

Questions

Frequently asked questions

Is Minnesota's water hard?
Minnesota's median hardness is 140 mg/L as CaCO₃, "hard" on the USGS scale and 1× the national county median of 140 mg/L. About 87% of residents in measured counties have hard-or-worse water.
Which county in Minnesota has the hardest water?
Lyon County, with a median of 565.5 mg/L as CaCO₃ across 148 measurements.
Is well water harder than city water in Minnesota?
Groundwater measures harder here — about 2.2× the surface water — so wells tend to run harder (groundwater 286 vs surface water 132 mg/L).
How do I find my exact hardness in Minnesota?
Search your ZIP on the lookup tool, read your utility's Consumer Confidence Report, or test at home with a kit.
Is Minnesota's water harder than the national average?
Yes. Minnesota's median of 140 mg/L is 1× the national county median of 140 mg/L, and Minnesota ranks #22 of the 50 states and D.C.

Compare

States with similar hardness

Two states measure closest to Minnesota's 140 mg/L: California at 150 mg/L and Idaho at 130 mg/L. Minnesota measures harder than 58% of states. Browse the full ranking on the statistics page.

More: hardness scale · check your address · national statistics · the national map.

By . Source: USGS/EPA Water Quality Portal — 62,159 Minnesota measurements. Data last verified . Methodology.

Cite this page:Minnesota Water Hardness by County.” Hard Water Map. Retrieved 2026-07-22, https://hardwatermap.com/water-hardness/minnesota/