Water Hardness in North Carolina
Across 35 measured cities — with 435 more covered by labeled county-level estimates — North Carolina's median tap water hardness is 29.7 mg/L (1.7 gpg): soft on the USGS scale. Below: every covered city, the state's hardest and softest water, and the geology that explains it.
Data updated September 13, 2026. Sources: utility-reported water quality data and USGS/EPA Water Quality Portal samples.
What it costs to soften North Carolina water
Water softener cost in North Carolina at 1.7 gpg prices the equipment and the installation labour against the plumber wages published for North Carolina, and labels every range as modelled or measured rather than leaving you to guess which it is.
North Carolina · 1.74 grains per gallon
$936–$1,183
installed, midpoint $1,046 — a 24,000-grain unit, the size 4 people at this hardness need.
Salt and drain water over 10 years: $411–$1,000 — the 1,905,300 grains of hardness this household removes, at the national salt price and water rate whose sources are named below. Filter changes and Service contract are omitted rather than assumed.
Sized for 4 people regenerating every 7 days: 3,654 grains of capacity needed, rounded up to the next common residential size. The median of 35 measured North Carolina cities in our hardness dataset. Modelled: the standard build band published for that state at the size this hardness calls for, equipment priced 2026-10-04 against the May 2025 reference period (OEWS M2025). Salt: the median retailer price of 3 retailers, read 2026-10-04, at a declared salt dose per regeneration. Drain water: about 50 gallons per regeneration from a government extension estimate read 2026-10-04, at the 2024 national average water and sewer rate from a government source read 2026-10-04.
Deciding whether it is worth it at all? Start from how much a water softener costs nationally — the same equipment, installation and ten-year ownership breakdown before any state wage adjustment is applied.
North Carolina Cities by Hardness Category
Measured cities only — labeled county estimates never enter the category counts or the median.
| Category | Range | Measured cities | Share |
|---|---|---|---|
| Soft | 0-60 mg/L | 32 | 91.4% |
| Moderately hard | 60-120 mg/L | 2 | 5.7% |
| Hard | 120-180 mg/L | 1 | 2.9% |
| Very hard | >180 mg/L | 0 | 0.0% |
Hardest and Softest Water in North Carolina
Measured values only; labeled county estimates and values under active dispute never rank.
Hardest water in North Carolina
- Carolina Beach — 180.0 mg/L (10.5 gpg), hard
- Oak Island — 117.0 mg/L (6.8 gpg), moderately hard
- Wrightsville Beach — 75.7 mg/L (4.4 gpg), moderately hard
- Mooresville — 50.7 mg/L (3.0 gpg), soft
- Leland — 49.0 mg/L (2.9 gpg), soft
Softest water in North Carolina
- Brevard — 3.9 mg/L (0.2 gpg), soft
- Hendersonville — 4.9 mg/L (0.3 gpg), soft
- Asheville — 9.2 mg/L (0.5 gpg), soft
- Denver — 14.4 mg/L (0.8 gpg), soft
- Morganton — 19.0 mg/L (1.1 gpg), soft
Every Covered City in North Carolina
All 470 covered North Carolina cities, sorted by population served. "County estimate" rows are labeled context values from USGS/EPA Water Quality Portal county sampling — they never enter the median above. City names link to each city's full water quality page.
| City | Hardness (mg/L) | gpg | Category | Data |
|---|---|---|---|---|
| Charlotte | 31.3 | 1.8 | Soft | Utility-reported |
| Raleigh | 25.1 | 1.5 | Soft | Utility-reported |
| Clemmons | 23.9 | 1.4 | Soft | Utility-reported |
| Winston-Salem | 23.9 | 1.4 | Soft | Utility-reported |
| Durham | 29.7 | 1.7 | Soft | Utility-reported |
| Greensboro | 36.2 | 2.1 | Soft | Utility-reported |
| Fayetteville | 29.1 | 1.7 | Soft | Utility-reported |
| Stedman | 12.4 | 0.7 | Soft | County estimate |
| Cary | 35.5 | 2.1 | Soft | Utility-reported |
| Wilmington | 21.1 | 1.2 | Soft | Utility-reported |
| Asheville | 9.2 | 0.5 | Soft | Utility-reported |
| Winterville | 36.5 | 2.1 | Soft | County estimate |
| Greenville | 36.5 | 2.1 | Soft | County estimate |
| High Point | 35.1 | 2.0 | Soft | Utility-reported |
| Four Oaks | 28.0 | 1.6 | Soft | County estimate |
| Leland | 49.0 | 2.9 | Soft | Utility-reported |
| Concord | 34.5 | 2.0 | Soft | Utility-reported |
| Smithfield | 28.0 | 1.6 | Soft | County estimate |
| Lowell | 28.0 | 1.6 | Soft | County estimate |
| Gastonia | 28.0 | 1.6 | Soft | County estimate |
| Cramerton | 28.0 | 1.6 | Soft | County estimate |
| Lumberton | 17.0 | 1.0 | Soft | County estimate |
| Carrboro | 29.6 | 1.7 | Soft | Utility-reported |
| Shelby | 20.0 | 1.2 | Soft | County estimate |
| Hendersonville | 4.9 | 0.3 | Soft | Utility-reported |
| Spring Lake | 27.0 | 1.6 | Soft | County estimate |
| Apex | 30.4 | 1.8 | Soft | Utility-reported |
| Kings Mountain | 20.0 | 1.2 | Soft | County estimate |
| Red Springs | 9.0 | 0.5 | Soft | County estimate |
| Maxton | 17.0 | 1.0 | Soft | County estimate |
| Pembroke | 17.0 | 1.0 | Soft | County estimate |
| Fairmont | 17.0 | 1.0 | Soft | County estimate |
| Elon | 39.5 | 2.3 | Soft | County estimate |
| St. Pauls | 17.0 | 1.0 | Soft | County estimate |
| Rocky Mount | 27.6 | 1.6 | Soft | County estimate |
| Rowland | 17.0 | 1.0 | Soft | County estimate |
| Gibsonville | 39.6 | 2.3 | Soft | County estimate |
| Hickory | 22.7 | 1.3 | Soft | Utility-reported |
| Lumber Bridge | 17.0 | 1.0 | Soft | County estimate |
| Marietta | 17.0 | 1.0 | Soft | County estimate |
| Orrum | 17.0 | 1.0 | Soft | County estimate |
| Parkton | 17.0 | 1.0 | Soft | County estimate |
| Proctorville | 17.0 | 1.0 | Soft | County estimate |
| Fort Bragg | 12.4 | 0.7 | Soft | County estimate |
| Boiling Springs | 20.0 | 1.2 | Soft | County estimate |
| Grifton | 36.5 | 2.1 | Soft | County estimate |
| Whitsett | 39.6 | 2.3 | Soft | County estimate |
| Grover | 20.0 | 1.2 | Soft | County estimate |
| Lawndale | 20.0 | 1.2 | Soft | County estimate |
| Fallston | 20.0 | 1.2 | Soft | County estimate |
| Mooresboro | 20.0 | 1.2 | Soft | County estimate |
| Burlington | 39.5 | 2.3 | Soft | County estimate |
| Casar | 20.0 | 1.2 | Soft | County estimate |
| Lattimore | 20.0 | 1.2 | Soft | County estimate |
| Polkville | 20.0 | 1.2 | Soft | County estimate |
| Waco | 20.0 | 1.2 | Soft | County estimate |
| Wilson | 20.0 | 1.2 | Soft | County estimate |
| East Spencer | 40.0 | 2.3 | Soft | County estimate |
| Kannapolis | 58.5 | 3.4 | Soft | County estimate |
| Spencer | 40.0 | 2.3 | Soft | County estimate |
| Granite Quarry | 40.0 | 2.3 | Soft | County estimate |
| Rockwell | 40.0 | 2.3 | Soft | County estimate |
| Salisbury | 40.0 | 2.3 | Soft | County estimate |
| Mooresville | 50.7 | 3.0 | Soft | Utility-reported |
| Broadway | 27.0 | 1.6 | Soft | County estimate |
| Selma | 28.0 | 1.6 | Soft | County estimate |
| Denver | 14.4 | 0.8 | Soft | Utility-reported |
| Holly Springs | 41.3 | 2.4 | Soft | Utility-reported |
| Roanoke Rapids | 31.8 | 1.9 | Soft | County estimate |
| Jacksonville | 127.0 | 7.4 | Hard | County estimate |
| Kinston | 28.1 | 1.6 | Soft | County estimate |
| Raeford | 9.0 | 0.5 | Soft | County estimate |
| Ayden | 36.5 | 2.1 | Soft | County estimate |
| Weldon | 31.8 | 1.9 | Soft | County estimate |
| Monroe | 39.5 | 2.3 | Soft | Utility-reported |
| Vanceboro | 36.0 | 2.1 | Soft | County estimate |
| Statesville | 19.0 | 1.1 | Soft | County estimate |
| Goldsboro | 24.4 | 1.4 | Soft | County estimate |
| Rockingham | 13.0 | 0.8 | Soft | County estimate |
| Mocksville | 45.6 | 2.7 | Soft | County estimate |
| Hamlet | 13.0 | 0.8 | Soft | County estimate |
| Ahoskie | 28.0 | 1.6 | Soft | County estimate |
| Rutherford College | 16.0 | 0.9 | Soft | County estimate |
| Burgaw | 38.0 | 2.2 | Soft | County estimate |
| Rocky Point | 38.0 | 2.2 | Soft | County estimate |
| New Bern | 36.6 | 2.1 | Soft | Utility-reported |
| Advance | 45.6 | 2.7 | Soft | County estimate |
| Cooleemee | 45.6 | 2.7 | Soft | County estimate |
| Elizabeth City | 76.0 | 4.4 | Moderately hard | County estimate |
| Pinehurst | 18.5 | 1.1 | Soft | County estimate |
| Mebane | 39.5 | 2.3 | Soft | County estimate |
| Waynesville | 9.9 | 0.6 | Soft | County estimate |
| Thomasville | 44.0 | 2.6 | Soft | County estimate |
| Asheboro | 42.0 | 2.5 | Soft | County estimate |
| Graham | 39.5 | 2.3 | Soft | County estimate |
| Eden | 27.0 | 1.6 | Soft | County estimate |
| Lake Junaluska | 9.9 | 0.6 | Soft | County estimate |
| Morganton | 19.0 | 1.1 | Soft | Utility-reported |
| Grimesland | 36.5 | 2.1 | Soft | County estimate |
| Tarboro | 27.6 | 1.6 | Soft | County estimate |
| North Wilkesboro | 11.0 | 0.6 | Soft | County estimate |
| Oak Island | 117.0 | 6.8 | Moderately hard | Utility-reported |
| Southern Pines | 33.8 | 2.0 | Soft | Utility-reported |
| Ellerbe | 13.0 | 0.8 | Soft | County estimate |
| Pinnacle | 17.0 | 1.0 | Soft | County estimate |
| King | 17.0 | 1.0 | Soft | County estimate |
| Maiden | 15.0 | 0.9 | Soft | County estimate |
| Enfield | 31.8 | 1.9 | Soft | County estimate |
| Simpson | 36.5 | 2.1 | Soft | County estimate |
| Albemarle | 32.0 | 1.9 | Soft | County estimate |
| Cordova | 13.0 | 0.8 | Soft | County estimate |
| Hoffman | 13.0 | 0.8 | Soft | County estimate |
| Norman | 13.0 | 0.8 | Soft | County estimate |
| Warsaw | 44.0 | 2.6 | Soft | County estimate |
| Laurinburg | 24.5 | 1.4 | Soft | County estimate |
| Forest City | 20.0 | 1.2 | Soft | County estimate |
| Butner | 28.6 | 1.7 | Soft | County estimate |
| Oriental | 262.0 | 15.3 | Very hard | County estimate |
| Halifax | 31.8 | 1.9 | Soft | County estimate |
| Rose Hill | 44.0 | 2.6 | Soft | County estimate |
| Hobgood | 27.6 | 1.6 | Soft | County estimate |
| Hollister | 31.8 | 1.9 | Soft | County estimate |
| Scotland Neck | 31.8 | 1.9 | Soft | County estimate |
| Troy | 24.0 | 1.4 | Soft | County estimate |
| Faison | 28.1 | 1.6 | Soft | County estimate |
| Boone | 28.0 | 1.6 | Soft | Utility-reported |
| Alliance | 262.0 | 15.3 | Very hard | County estimate |
| Arapahoe | 262.0 | 15.3 | Very hard | County estimate |
| Bayboro | 262.0 | 15.3 | Very hard | County estimate |
| Grantsboro | 262.0 | 15.3 | Very hard | County estimate |
| Vandemere | 262.0 | 15.3 | Very hard | County estimate |
| Magnolia | 44.0 | 2.6 | Soft | County estimate |
| Laurel Hill | 24.5 | 1.4 | Soft | County estimate |
| Harrisburg | 40.9 | 2.4 | Soft | Utility-reported |
| Kenansville | 44.0 | 2.6 | Soft | County estimate |
| Wadesboro | 26.0 | 1.5 | Soft | County estimate |
| Moyock | 439.0 | 25.7 | Very hard | County estimate |
| Teachey | 44.0 | 2.6 | Soft | County estimate |
| Calypso | 44.0 | 2.6 | Soft | County estimate |
| Lexington | 44.0 | 2.6 | Soft | County estimate |
| Weaverville | 13.0 | 0.8 | Soft | County estimate |
| Wilkesboro | 11.0 | 0.6 | Soft | County estimate |
| Wallace | 44.0 | 2.6 | Soft | County estimate |
| Cherokee | 4.5 | 0.3 | Soft | County estimate |
| La Grange | 28.1 | 1.6 | Soft | County estimate |
| Claremont | 15.0 | 0.9 | Soft | County estimate |
| Gaston | 33.3 | 1.9 | Soft | County estimate |
| Newton | 15.0 | 0.9 | Soft | County estimate |
| Mount Holly | 22.7 | 1.3 | Soft | Utility-reported |
| Mt Holly | 22.7 | 1.3 | Soft | Utility-reported |
| Henderson | 55.0 | 3.2 | Soft | County estimate |
| Grandy | 439.0 | 25.7 | Very hard | County estimate |
| Maple | 439.0 | 25.7 | Very hard | County estimate |
| Elizabethtown | 22.0 | 1.3 | Soft | County estimate |
| Cherry Point | 36.0 | 2.1 | Soft | County estimate |
| Rutherfordton | 20.0 | 1.2 | Soft | County estimate |
| Caroleen | 20.0 | 1.2 | Soft | County estimate |
| Cliffside | 20.0 | 1.2 | Soft | County estimate |
| Spindale | 20.0 | 1.2 | Soft | County estimate |
| Snow Hill | 33.0 | 1.9 | Soft | County estimate |
| Whiteville | 20.0 | 1.2 | Soft | County estimate |
| Edenton | 31.0 | 1.8 | Soft | County estimate |
| Taylorsville | 15.0 | 0.9 | Soft | County estimate |
| Mount Gilead | 24.0 | 1.4 | Soft | County estimate |
| Mt. Gilead | 24.0 | 1.4 | Soft | County estimate |
| Valdese | 16.0 | 0.9 | Soft | County estimate |
| Conover | 15.0 | 0.9 | Soft | County estimate |
| Star | 24.0 | 1.4 | Soft | County estimate |
| Clinton | 28.1 | 1.6 | Soft | County estimate |
| Hillsborough | 28.5 | 1.7 | Soft | County estimate |
| Belmont | 20.9 | 1.2 | Soft | Utility-reported |
| Sharpsburg | 25.0 | 1.5 | Soft | County estimate |
| Lilesville | 26.0 | 1.5 | Soft | County estimate |
| Polkton | 26.0 | 1.5 | Soft | County estimate |
| Havelock | 36.0 | 2.1 | Soft | County estimate |
| Morven | 26.0 | 1.5 | Soft | County estimate |
| Peachland | 26.0 | 1.5 | Soft | County estimate |
| Pinetops | 27.6 | 1.6 | Soft | County estimate |
| Reidsville | 27.0 | 1.6 | Soft | County estimate |
| Brunswick | 20.0 | 1.2 | Soft | County estimate |
| Conetoe | 27.6 | 1.6 | Soft | County estimate |
| Bladenboro | 22.0 | 1.3 | Soft | County estimate |
| Clarkton | 22.0 | 1.3 | Soft | County estimate |
| Hiddenite | 15.0 | 0.9 | Soft | County estimate |
| Powellsville | 33.0 | 1.9 | Soft | County estimate |
| Deep Run | 28.1 | 1.6 | Soft | County estimate |
| Icard | 16.0 | 0.9 | Soft | County estimate |
| Washington | 325.0 | 19.0 | Very hard | County estimate |
| Windsor | 33.0 | 1.9 | Soft | County estimate |
| Aulander | 33.0 | 1.9 | Soft | County estimate |
| Colerain | 33.0 | 1.9 | Soft | County estimate |
| Kelford | 33.0 | 1.9 | Soft | County estimate |
| Lewiston Woodville | 33.0 | 1.9 | Soft | County estimate |
| Roxobel | 33.0 | 1.9 | Soft | County estimate |
| Macclesfield | 27.6 | 1.6 | Soft | County estimate |
| Speed | 27.6 | 1.6 | Soft | County estimate |
| Williamston | 38.5 | 2.3 | Soft | County estimate |
| Aberdeen | 18.5 | 1.1 | Soft | County estimate |
| Dublin | 22.0 | 1.3 | Soft | County estimate |
| Lincolnton | 24.0 | 1.4 | Soft | County estimate |
| Carolina Beach | 180.0 | 10.5 | Hard | Utility-reported |
| Nashville | 25.0 | 1.5 | Soft | County estimate |
| Millers Creek | 11.0 | 0.6 | Soft | County estimate |
| Dunn | 28.1 | 1.6 | Soft | County estimate |
| Erwin | 27.0 | 1.6 | Soft | County estimate |
| Tar Heel | 22.0 | 1.3 | Soft | County estimate |
| Chocowinity | 325.0 | 19.0 | Very hard | County estimate |
| Oakboro | 32.0 | 1.9 | Soft | County estimate |
| Gatesville | 27.0 | 1.6 | Soft | County estimate |
| Murfreesboro | 28.0 | 1.6 | Soft | County estimate |
| Marion | 18.0 | 1.1 | Soft | County estimate |
| Fountain | 36.5 | 2.1 | Soft | County estimate |
| Roxboro | 33.0 | 1.9 | Soft | County estimate |
| Norlina | 33.0 | 1.9 | Soft | County estimate |
| Brevard | 3.9 | 0.2 | Soft | Utility-reported |
| Maury | 33.0 | 1.9 | Soft | County estimate |
| Falkland | 36.5 | 2.1 | Soft | County estimate |
| Hookerton | 33.0 | 1.9 | Soft | County estimate |
| Walstonburg | 33.0 | 1.9 | Soft | County estimate |
| Mount Airy | 24.0 | 1.4 | Soft | County estimate |
| Franklin | 7.6 | 0.4 | Soft | County estimate |
| Black Mountain | 13.0 | 0.8 | Soft | County estimate |
| Aurora | 325.0 | 19.0 | Very hard | County estimate |
| Plymouth | 87.0 | 5.1 | Moderately hard | County estimate |
| Nebo | 18.0 | 1.1 | Soft | County estimate |
| Maggie Valley | 9.9 | 0.6 | Soft | County estimate |
| Badin | 32.0 | 1.9 | Soft | County estimate |
| Macon | 33.0 | 1.9 | Soft | County estimate |
| Warrenton | 33.0 | 1.9 | Soft | County estimate |
| Lenoir | 14.0 | 0.8 | Soft | County estimate |
| Stanfield | 32.0 | 1.9 | Soft | County estimate |
| Morehead City | 336.0 | 19.6 | Very hard | County estimate |
| Efland | 28.5 | 1.7 | Soft | County estimate |
| Maysville | 127.0 | 7.4 | Hard | County estimate |
| Pollocksville | 89.5 | 5.2 | Moderately hard | County estimate |
| Trenton | 89.5 | 5.2 | Moderately hard | County estimate |
| Winton | 28.0 | 1.6 | Soft | County estimate |
| Oxford | 28.6 | 1.7 | Soft | County estimate |
| Hudson | 14.0 | 0.8 | Soft | County estimate |
| Locust | 32.0 | 1.9 | Soft | County estimate |
| Hays | 11.0 | 0.6 | Soft | County estimate |
| Siler City | 33.0 | 1.9 | Soft | County estimate |
| Angier | 27.0 | 1.6 | Soft | County estimate |
| Farmville | 36.5 | 2.1 | Soft | County estimate |
| Cofield | 28.0 | 1.6 | Soft | County estimate |
| Corolla | 439.0 | 25.7 | Very hard | County estimate |
| Cameron | 27.0 | 1.6 | Soft | County estimate |
| Vass | 18.5 | 1.1 | Soft | County estimate |
| Como | 28.0 | 1.6 | Soft | County estimate |
| Ocean Isle Beach | 32.5 | 1.9 | Soft | County estimate |
| Hildebran | 16.0 | 0.9 | Soft | County estimate |
| Rhodhiss | 14.0 | 0.8 | Soft | County estimate |
| Canton | 9.9 | 0.6 | Soft | County estimate |
| Pittsboro | 33.0 | 1.9 | Soft | County estimate |
| Webster | 5.0 | 0.3 | Soft | County estimate |
| Dillsboro | 5.0 | 0.3 | Soft | County estimate |
| Cullowhee | 5.0 | 0.3 | Soft | County estimate |
| Sylva | 5.0 | 0.3 | Soft | County estimate |
| Troutman | 19.0 | 1.1 | Soft | County estimate |
| Dallas | 28.0 | 1.6 | Soft | County estimate |
| Granite Falls | 14.0 | 0.8 | Soft | County estimate |
| Roper | 87.0 | 5.1 | Moderately hard | County estimate |
| Creswell | 87.0 | 5.1 | Moderately hard | County estimate |
| Black Creek | 20.0 | 1.2 | Soft | County estimate |
| New London | 32.0 | 1.9 | Soft | County estimate |
| Randleman | 42.0 | 2.5 | Soft | County estimate |
| Conway | 33.3 | 1.9 | Soft | County estimate |
| Jamestown | 46.0 | 2.7 | Soft | Utility-reported |
| Woodland | 33.3 | 1.9 | Soft | County estimate |
| Southport | 32.5 | 1.9 | Soft | County estimate |
| Atlantic Beach | 336.0 | 19.6 | Very hard | County estimate |
| Cherryville | 28.0 | 1.6 | Soft | County estimate |
| Bridgeton | 36.0 | 2.1 | Soft | County estimate |
| Lucama | 20.0 | 1.2 | Soft | County estimate |
| Severn | 33.3 | 1.9 | Soft | County estimate |
| Beulaville | 44.0 | 2.6 | Soft | County estimate |
| Camden | 12.9 | 0.8 | Soft | County estimate |
| Jackson | 33.3 | 1.9 | Soft | County estimate |
| Rich Square | 33.3 | 1.9 | Soft | County estimate |
| Seaboard | 33.3 | 1.9 | Soft | County estimate |
| Bessemer City | 28.0 | 1.6 | Soft | County estimate |
| Columbus | 11.3 | 0.7 | Soft | County estimate |
| Stanley | 28.0 | 1.6 | Soft | County estimate |
| Wrightsville Beach | 75.7 | 4.4 | Moderately hard | Utility-reported |
| Glen Alpine | 16.0 | 0.9 | Soft | County estimate |
| Kure Beach | 226.0 | 13.2 | Very hard | County estimate |
| Mars Hill | 14.0 | 0.8 | Soft | County estimate |
| Newport | 336.0 | 19.6 | Very hard | County estimate |
| Beaufort | 336.0 | 19.6 | Very hard | County estimate |
| Chinquapin | 44.0 | 2.6 | Soft | County estimate |
| Louisburg | 29.0 | 1.7 | Soft | County estimate |
| Bryson City | 4.5 | 0.3 | Soft | County estimate |
| Carthage | 18.5 | 1.1 | Soft | County estimate |
| Benson | 28.0 | 1.6 | Soft | County estimate |
| Norwood | 32.0 | 1.9 | Soft | County estimate |
| Misenheimer | 32.0 | 1.9 | Soft | County estimate |
| Richfield | 32.0 | 1.9 | Soft | County estimate |
| Mount Olive | 44.0 | 2.6 | Soft | County estimate |
| Elkin | 24.0 | 1.4 | Soft | County estimate |
| Jonesville | 55.1 | 3.2 | Soft | County estimate |
| Pleasant Hill | 33.3 | 1.9 | Soft | County estimate |
| Wingate | 47.0 | 2.8 | Soft | County estimate |
| Lillington | 27.0 | 1.6 | Soft | County estimate |
| Robersonville | 38.5 | 2.3 | Soft | County estimate |
| Camp Lejeune | 127.0 | 7.4 | Hard | County estimate |
| Hampstead | 38.0 | 2.2 | Soft | County estimate |
| South Mills | 12.9 | 0.8 | Soft | County estimate |
| Andrews | 10.0 | 0.6 | Soft | County estimate |
| Stokes | 36.5 | 2.1 | Soft | County estimate |
| Tabor City | 20.0 | 1.2 | Soft | County estimate |
| Clyde | 9.9 | 0.6 | Soft | County estimate |
| Columbia | 80.5 | 4.7 | Moderately hard | County estimate |
| Marshville | 47.0 | 2.8 | Soft | County estimate |
| Drexel | 16.0 | 0.9 | Soft | County estimate |
| Robbinsville | 9.1 | 0.5 | Soft | County estimate |
| Moravian Falls | 11.0 | 0.6 | Soft | County estimate |
| Ramseur | 42.0 | 2.5 | Soft | County estimate |
| Wagram | 24.5 | 1.4 | Soft | County estimate |
| Coats | 27.0 | 1.6 | Soft | County estimate |
| Biscoe | 24.0 | 1.4 | Soft | County estimate |
| Franklinton | 29.0 | 1.7 | Soft | County estimate |
| Jamesville | 38.5 | 2.3 | Soft | County estimate |
| Everetts | 38.5 | 2.3 | Soft | County estimate |
| Liberty | 42.0 | 2.5 | Soft | County estimate |
| Pine Level | 28.0 | 1.6 | Soft | County estimate |
| Dobson | 24.0 | 1.4 | Soft | County estimate |
| Richlands | 127.0 | 7.4 | Hard | County estimate |
| Parmele | 38.5 | 2.3 | Soft | County estimate |
| Lake Waccamaw | 20.0 | 1.2 | Soft | County estimate |
| Haw River | 39.5 | 2.3 | Soft | County estimate |
| Hayesville | 3.0 | 0.2 | Soft | County estimate |
| Mayodan | 27.0 | 1.6 | Soft | County estimate |
| Seagrove | 42.0 | 2.5 | Soft | County estimate |
| Chadbourn | 20.0 | 1.2 | Soft | County estimate |
| Kenly | 28.0 | 1.6 | Soft | County estimate |
| Linville | 8.5 | 0.5 | Soft | County estimate |
| Ellenboro | 20.0 | 1.2 | Soft | County estimate |
| Hassell | 38.5 | 2.3 | Soft | County estimate |
| Oak City | 38.5 | 2.3 | Soft | County estimate |
| Pinebluff | 18.5 | 1.1 | Soft | County estimate |
| Hertford | 115.0 | 6.7 | Moderately hard | County estimate |
| Madison | 27.0 | 1.6 | Soft | County estimate |
| Littleton | 31.8 | 1.9 | Soft | County estimate |
| Linden | 12.4 | 0.7 | Soft | County estimate |
| Pilot Mountain | 24.0 | 1.4 | Soft | County estimate |
| Belhaven | 204.0 | 11.9 | Very hard | County estimate |
| Garysburg | 33.3 | 1.9 | Soft | County estimate |
| Yanceyville | 29.0 | 1.7 | Soft | County estimate |
| Sparta | 19.0 | 1.1 | Soft | County estimate |
| Saluda | 11.3 | 0.7 | Soft | County estimate |
| Boonville | 55.1 | 3.2 | Soft | County estimate |
| Mount Pleasant | 58.5 | 3.4 | Soft | County estimate |
| Denton | 44.0 | 2.6 | Soft | County estimate |
| Old Fort | 18.0 | 1.1 | Soft | County estimate |
| Bethel | 36.5 | 2.1 | Soft | County estimate |
| Blowing Rock | 21.0 | 1.2 | Soft | County estimate |
| Harrells | 28.1 | 1.6 | Soft | County estimate |
| Jefferson | 19.0 | 1.1 | Soft | County estimate |
| West Jefferson | 19.0 | 1.1 | Soft | County estimate |
| Robbins | 18.5 | 1.1 | Soft | County estimate |
| East Bend | 55.1 | 3.2 | Soft | County estimate |
| Stoneville | 27.0 | 1.6 | Soft | County estimate |
| Elm City | 20.0 | 1.2 | Soft | County estimate |
| Marshall | 14.0 | 0.8 | Soft | County estimate |
| Franklinville | 42.0 | 2.5 | Soft | County estimate |
| Kittrell | 55.0 | 3.2 | Soft | County estimate |
| Princeton | 28.0 | 1.6 | Soft | County estimate |
| Spring Hope | 25.0 | 1.5 | Soft | County estimate |
| Faith | 40.0 | 2.3 | Soft | County estimate |
| Goldston | 33.0 | 1.9 | Soft | County estimate |
| Lake Lure | 20.0 | 1.2 | Soft | County estimate |
| Stantonsburg | 20.0 | 1.2 | Soft | County estimate |
| Fremont | 24.4 | 1.4 | Soft | County estimate |
| Ansonville | 26.0 | 1.5 | Soft | County estimate |
| Banner Elk | 21.0 | 1.2 | Soft | County estimate |
| Stokesdale | 27.0 | 1.6 | Soft | County estimate |
| Alamance | 28.0 | 1.6 | Soft | Utility-reported |
| Marble | 10.0 | 0.6 | Soft | County estimate |
| Bostic | 20.0 | 1.2 | Soft | County estimate |
| Bunn | 29.0 | 1.7 | Soft | County estimate |
| Pink Hill | 44.0 | 2.6 | Soft | County estimate |
| Fair Bluff | 20.0 | 1.2 | Soft | County estimate |
| Pikeville | 24.4 | 1.4 | Soft | County estimate |
| Candor | 24.0 | 1.4 | Soft | County estimate |
| Harrellsville | 28.0 | 1.6 | Soft | County estimate |
| Montreat | 13.0 | 0.8 | Soft | County estimate |
| Rosman | 4.9 | 0.3 | Soft | County estimate |
| Murphy | 10.0 | 0.6 | Soft | County estimate |
| High Shoals | 28.0 | 1.6 | Soft | County estimate |
| Gibson | 24.5 | 1.4 | Soft | County estimate |
| Whittier | 5.0 | 0.3 | Soft | County estimate |
| Micro | 28.0 | 1.6 | Soft | County estimate |
| Sims | 20.0 | 1.2 | Soft | County estimate |
| Dover | 36.0 | 2.1 | Soft | County estimate |
| Danbury | 17.0 | 1.0 | Soft | County estimate |
| Walnut Cove | 17.0 | 1.0 | Soft | County estimate |
| Landis | 40.0 | 2.3 | Soft | County estimate |
| Barco | 439.0 | 25.7 | Very hard | County estimate |
| Turkey | 28.1 | 1.6 | Soft | County estimate |
| Summerfield | 39.6 | 2.3 | Soft | County estimate |
| Rougemont | 33.0 | 1.9 | Soft | County estimate |
| Cerro Gordo | 20.0 | 1.2 | Soft | County estimate |
| Milton | 29.0 | 1.7 | Soft | County estimate |
| Climax | 42.0 | 2.5 | Soft | County estimate |
| Alexis | 28.0 | 1.6 | Soft | County estimate |
| Pisgah Forest | 4.9 | 0.3 | Soft | County estimate |
| Zebulon | 27.6 | 1.6 | Soft | County estimate |
| Evergreen | 20.0 | 1.2 | Soft | County estimate |
| Oak Ridge | 39.6 | 2.3 | Soft | County estimate |
| Barnardsville | 13.0 | 0.8 | Soft | County estimate |
| Sophia | 42.0 | 2.5 | Soft | County estimate |
| Wendell | 27.6 | 1.6 | Soft | County estimate |
| Yadkinville | 55.1 | 3.2 | Soft | County estimate |
| Sanford | 50.2 | 2.9 | Soft | County estimate |
| Browns Summit | 39.6 | 2.3 | Soft | County estimate |
| Bolivia | 32.5 | 1.9 | Soft | County estimate |
| Buies Creek | 27.0 | 1.6 | Soft | County estimate |
| Bunnlevel | 27.0 | 1.6 | Soft | County estimate |
| Calabash | 32.5 | 1.9 | Soft | County estimate |
| Chapel Hill | 28.5 | 1.7 | Soft | County estimate |
| Cornelius | 57.7 | 3.4 | Soft | County estimate |
| Davidson | 57.7 | 3.4 | Soft | County estimate |
| Dudley | 24.4 | 1.4 | Soft | County estimate |
| East Flat Rock | 5.6 | 0.3 | Soft | County estimate |
| Etowah | 5.6 | 0.3 | Soft | County estimate |
| Fairview | 13.0 | 0.8 | Soft | County estimate |
| Flat Rock | 5.6 | 0.3 | Soft | County estimate |
| Fletcher | 5.6 | 0.3 | Soft | County estimate |
| Garner | 27.6 | 1.6 | Soft | County estimate |
| Germanton | 17.0 | 1.0 | Soft | County estimate |
| Holly Ridge | 127.0 | 7.4 | Hard | County estimate |
| Hope Mills | 12.4 | 0.7 | Soft | County estimate |
| Horse Shoe | 5.6 | 0.3 | Soft | County estimate |
| Huntersville | 57.7 | 3.4 | Soft | County estimate |
| Indian Trail | 47.0 | 2.8 | Soft | County estimate |
| Iron Station | 24.0 | 1.4 | Soft | County estimate |
| Kernersville | 36.0 | 2.1 | Soft | County estimate |
| Knightdale | 27.6 | 1.6 | Soft | County estimate |
| Lewisville | 36.0 | 2.1 | Soft | County estimate |
| Matthews | 57.7 | 3.4 | Soft | County estimate |
| Midland | 58.5 | 3.4 | Soft | County estimate |
| Mills River | 5.6 | 0.3 | Soft | County estimate |
| Mineral Springs | 47.0 | 2.8 | Soft | County estimate |
| Morrisville | 27.6 | 1.6 | Soft | County estimate |
| Mountain Home | 5.6 | 0.3 | Soft | County estimate |
| Newland | 8.5 | 0.5 | Soft | County estimate |
| Pantego | 325.0 | 19.0 | Very hard | County estimate |
| Pfafftown | 36.0 | 2.1 | Soft | County estimate |
| Pineville | 57.7 | 3.4 | Soft | County estimate |
| Pleasant Garden | 39.6 | 2.3 | Soft | County estimate |
| Rolesville | 27.6 | 1.6 | Soft | County estimate |
| Rural Hall | 36.0 | 2.1 | Soft | County estimate |
| Salemburg | 28.1 | 1.6 | Soft | County estimate |
| Saxapahaw | 39.5 | 2.3 | Soft | County estimate |
| Sedalia | 39.6 | 2.3 | Soft | County estimate |
| Seven Springs | 24.4 | 1.4 | Soft | County estimate |
| Shallotte | 32.5 | 1.9 | Soft | County estimate |
| Sneads Ferry | 127.0 | 7.4 | Hard | County estimate |
| Southmont | 44.0 | 2.6 | Soft | County estimate |
| Sunset Beach | 32.5 | 1.9 | Soft | County estimate |
| Swannanoa | 13.0 | 0.8 | Soft | County estimate |
| Swansboro | 336.0 | 19.6 | Very hard | County estimate |
| Tobaccoville | 36.0 | 2.1 | Soft | County estimate |
| Trinity | 42.0 | 2.5 | Soft | County estimate |
| Wake Forest | 27.6 | 1.6 | Soft | County estimate |
| Walkertown | 36.0 | 2.1 | Soft | County estimate |
| Waxhaw | 47.0 | 2.8 | Soft | County estimate |
| Welcome | 44.0 | 2.6 | Soft | County estimate |
| Winfall | 115.0 | 6.7 | Moderately hard | County estimate |
| Youngsville | 29.0 | 1.7 | Soft | County estimate |
Above 120 mg/L (7 gpg), scale is usually worth treating — see our water softener guide, or size a system with the hardness calculator & converter.
The Geology Behind North Carolina's Water Hardness
North Carolina sits in the Southeastern Coastal Plain and Piedmont region.
Much of the Southeast draws its water from sandy Coastal Plain aquifers and from rivers draining crystalline Piedmont rock - neither contributes much dissolved calcium or magnesium. As a result the USGS maps most of the region as soft to moderately hard. Hardness climbs where supplies tap deeper limestone units near the Gulf and Atlantic coasts.
North Carolina Water Hardness FAQ
Does North Carolina have hard water?
On the whole, no — North Carolina's statewide median sits below the hard threshold, though some cities run harder. The median is 29.7 mg/L (1.7 gpg) — soft on the USGS scale, where anything above 120 mg/L (7 gpg) counts as hard. 1 of North Carolina's 35 measured cities fall in the hard or very hard bands (3%), so check your own city rather than the state average.
How hard is tap water in North Carolina?
Across the 35 North Carolina cities with measured values in our index, the median hardness is 29.7 mg/L (1.7 gpg) — soft on the USGS scale. Individual cities range from 3.9 to 180.0 mg/L, so check your own city rather than assuming the state number.
Which city in North Carolina has the hardest water?
Carolina Beach has the hardest measured tap water in our North Carolina index at 180.0 mg/L (10.5 gpg) — hard on the USGS scale. Rankings use measured utility values only; labeled county estimates and values under active dispute are excluded.
Do I need a water softener in North Carolina?
1 of North Carolina's 35 measured cities (3%) fall in the hard or very hard bands — above 120 mg/L (7 gpg), the level where most water treatment professionals suggest considering an ion-exchange softener. Hardness varies utility to utility, so look up your own city's value before sizing equipment.
How do I find my city's exact water hardness?
Enter your ZIP code in our free lookup at tapwaterdata.com/zip to see the value we hold for your North Carolina city from utility-reported water quality data, check your water utility's annual Consumer Confidence Report (CCR), or use a home test-strip kit.
Need whole-house or professional water treatment?
For the problems a pitcher or under-sink filter cannot fix — scale, rust and black staining, sulfur smell, well contamination, or test results you cannot explain. Tell us what is happening and we will connect you with a local water-treatment professional.
Get the Weekly Water Brief
One email a week on water testing, treatment, and what water-quality data means for your home.
One email a week. Unsubscribe anytime.