Water Hardness in North Carolina
Across 195 measured cities — with 349 more covered by labeled county-level estimates — North Carolina's median tap water hardness is 29.5 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 July 6, 2026. Sources: utility-reported water quality data and USGS/EPA Water Quality Portal samples.
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 | 179 | 91.8% |
| Moderately hard | 60-120 mg/L | 15 | 7.7% |
| Hard | 120-180 mg/L | 1 | 0.5% |
| 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
- Wake Forest — 106.0 mg/L (6.2 gpg), moderately hard
- Brogden — 75.2 mg/L (4.4 gpg), moderately hard
- Dudley — 75.2 mg/L (4.4 gpg), moderately hard
- Elroy — 75.2 mg/L (4.4 gpg), moderately hard
Softest water in North Carolina
- Duck — 3.6 mg/L (0.2 gpg), soft
- Kill Devil Hills — 3.6 mg/L (0.2 gpg), soft
- Kitty Hawk — 3.6 mg/L (0.2 gpg), soft
- Manns Harbor — 3.6 mg/L (0.2 gpg), soft
- Manteo — 3.6 mg/L (0.2 gpg), soft
Every Covered City in North Carolina
All 544 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 |
|---|---|---|---|---|
| Mint Hill | 31.1 | 1.8 | Soft | Utility-reported |
| Charlotte | 31.1 | 1.8 | Soft | Utility-reported |
| Matthews | 31.1 | 1.8 | Soft | Utility-reported |
| Huntersville | 31.3 | 1.8 | Soft | Utility-reported |
| Davidson | 31.3 | 1.8 | Soft | Utility-reported |
| Cornelius | 31.3 | 1.8 | Soft | Utility-reported |
| Pineville | 31.3 | 1.8 | Soft | Utility-reported |
| Raleigh | 25.1 | 1.5 | Soft | Utility-reported |
| Garner | 25.1 | 1.5 | Soft | Utility-reported |
| Knightdale | 25.1 | 1.5 | Soft | Utility-reported |
| Rolesville | 25.1 | 1.5 | Soft | Utility-reported |
| High Point | 32.5 | 1.9 | Soft | Utility-reported |
| Tobaccoville | 23.9 | 1.4 | Soft | Utility-reported |
| Kernersville | 23.9 | 1.4 | Soft | Utility-reported |
| Germanton | 23.9 | 1.4 | Soft | Utility-reported |
| Winston-Salem | 23.9 | 1.4 | Soft | Utility-reported |
| Rural Hall | 23.9 | 1.4 | Soft | Utility-reported |
| Bethania | 23.9 | 1.4 | Soft | Utility-reported |
| Clemmons | 23.9 | 1.4 | Soft | Utility-reported |
| Lewisville | 23.9 | 1.4 | Soft | Utility-reported |
| Pfafftown | 23.9 | 1.4 | Soft | Utility-reported |
| Walkertown | 23.9 | 1.4 | Soft | Utility-reported |
| Durham | 29.7 | 1.7 | Soft | Utility-reported |
| Gorman | 29.7 | 1.7 | Soft | Utility-reported |
| Morrisville | 29.7 | 1.7 | Soft | Utility-reported |
| Greensboro | 36.2 | 2.1 | Soft | Utility-reported |
| Pleasant Garden | 36.2 | 2.1 | Soft | Utility-reported |
| Forest Oaks | 36.2 | 2.1 | Soft | Utility-reported |
| McLeansville | 36.2 | 2.1 | Soft | Utility-reported |
| Sedalia | 36.2 | 2.1 | Soft | Utility-reported |
| Fairview | 19.0 | 1.1 | Soft | Utility-reported |
| Cary | 32.9 | 1.9 | Soft | Utility-reported |
| Jacksonville | 51.6 | 3.0 | Soft | Utility-reported |
| Fletcher | 7.8 | 0.5 | Soft | Utility-reported |
| Mills River | 7.8 | 0.5 | Soft | Utility-reported |
| Fayetteville | 29.1 | 1.7 | Soft | Utility-reported |
| Eastover | 29.1 | 1.7 | Soft | Utility-reported |
| Hope Mills | 29.1 | 1.7 | Soft | Utility-reported |
| Stedman | 12.4 | 0.7 | Soft | County estimate |
| Vander | 29.1 | 1.7 | Soft | Utility-reported |
| Thomasville | 23.6 | 1.4 | Soft | Utility-reported |
| Wrightsville Beach | 22.7 | 1.3 | Soft | Utility-reported |
| Lexington | 23.6 | 1.4 | Soft | Utility-reported |
| Monroe | 31.5 | 1.8 | Soft | Utility-reported |
| Wilmington | 21.1 | 1.2 | Soft | Utility-reported |
| Anderson Creek | 50.7 | 3.0 | Soft | Utility-reported |
| Denton | 23.6 | 1.4 | Soft | Utility-reported |
| Asheville | 9.2 | 0.5 | Soft | Utility-reported |
| Black Mountain | 9.7 | 0.6 | Soft | Utility-reported |
| Woodfin | 9.2 | 0.5 | Soft | Utility-reported |
| Trinity | 23.6 | 1.4 | Soft | Utility-reported |
| Midway | 23.6 | 1.4 | Soft | Utility-reported |
| Southmont | 23.6 | 1.4 | Soft | Utility-reported |
| Tyro | 23.6 | 1.4 | Soft | Utility-reported |
| Wallburg | 23.6 | 1.4 | Soft | Utility-reported |
| Welcome | 23.6 | 1.4 | Soft | Utility-reported |
| Leland | 49.0 | 2.9 | Soft | Utility-reported |
| Piney Green | 51.6 | 3.0 | Soft | Utility-reported |
| Biltmore Forest | 9.2 | 0.5 | Soft | Utility-reported |
| Avery Creek | 9.2 | 0.5 | Soft | Utility-reported |
| Bent Creek | 9.2 | 0.5 | Soft | Utility-reported |
| Emma | 9.2 | 0.5 | Soft | Utility-reported |
| Royal Pines | 9.2 | 0.5 | Soft | Utility-reported |
| Swannanoa | 9.2 | 0.5 | Soft | Utility-reported |
| Wingate | 29.5 | 1.7 | Soft | Utility-reported |
| Marshville | 29.5 | 1.7 | Soft | Utility-reported |
| Winterville | 36.5 | 2.1 | Soft | County estimate |
| Hemby Bridge | 29.5 | 1.7 | Soft | Utility-reported |
| Indian Trail | 29.5 | 1.7 | Soft | Utility-reported |
| Lake Park | 29.5 | 1.7 | Soft | Utility-reported |
| Marvin | 29.5 | 1.7 | Soft | Utility-reported |
| Mineral Springs | 29.5 | 1.7 | Soft | Utility-reported |
| Stallings | 29.5 | 1.7 | Soft | Utility-reported |
| Unionville | 29.5 | 1.7 | Soft | Utility-reported |
| Waxhaw | 29.5 | 1.7 | Soft | Utility-reported |
| Weddington | 29.5 | 1.7 | Soft | Utility-reported |
| Wesley Chapel | 29.5 | 1.7 | Soft | Utility-reported |
| Half Moon | 51.6 | 3.0 | Soft | Utility-reported |
| Holly Ridge | 51.6 | 3.0 | Soft | Utility-reported |
| Pumpkin Center | 51.6 | 3.0 | Soft | Utility-reported |
| Richlands | 51.6 | 3.0 | Soft | Utility-reported |
| Sneads Ferry | 51.6 | 3.0 | Soft | Utility-reported |
| Swansboro | 51.6 | 3.0 | Soft | Utility-reported |
| Greenville | 36.5 | 2.1 | Soft | County estimate |
| Oak Island | 60.8 | 3.6 | Moderately hard | Utility-reported |
| Apex | 27.2 | 1.6 | Soft | Utility-reported |
| Dunn | 50.7 | 3.0 | Soft | Utility-reported |
| Jamestown | 35.7 | 2.1 | Soft | Utility-reported |
| Southport | 49.0 | 2.9 | Soft | Utility-reported |
| Holden Beach | 49.0 | 2.9 | Soft | Utility-reported |
| Concord | 34.5 | 2.0 | Soft | Utility-reported |
| Angier | 50.7 | 3.0 | Soft | Utility-reported |
| Lillington | 50.7 | 3.0 | Soft | Utility-reported |
| Four Oaks | 28.0 | 1.6 | Soft | County estimate |
| Boiling Spring Lakes | 49.0 | 2.9 | Soft | Utility-reported |
| Bolivia | 49.0 | 2.9 | Soft | Utility-reported |
| Calabash | 49.0 | 2.9 | Soft | Utility-reported |
| Ocean Isle Beach | 49.0 | 2.9 | Soft | Utility-reported |
| Shallotte | 49.0 | 2.9 | Soft | Utility-reported |
| St. James | 49.0 | 2.9 | Soft | Utility-reported |
| Sunset Beach | 49.0 | 2.9 | Soft | Utility-reported |
| Varnamtown | 49.0 | 2.9 | Soft | Utility-reported |
| Midland | 34.5 | 2.0 | Soft | Utility-reported |
| Coats | 50.7 | 3.0 | Soft | Utility-reported |
| Mount Pleasant | 34.5 | 2.0 | Soft | Utility-reported |
| Smithfield | 28.0 | 1.6 | Soft | County estimate |
| Barbecue | 50.7 | 3.0 | Soft | Utility-reported |
| Buies Creek | 50.7 | 3.0 | Soft | Utility-reported |
| Bunnlevel | 50.7 | 3.0 | Soft | Utility-reported |
| Erwin | 50.7 | 3.0 | Soft | Utility-reported |
| Mamers | 50.7 | 3.0 | Soft | Utility-reported |
| Spout Springs | 50.7 | 3.0 | Soft | Utility-reported |
| 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 |
| Chapel Hill | 29.6 | 1.7 | Soft | Utility-reported |
| Carrboro | 29.6 | 1.7 | Soft | Utility-reported |
| Hendersonville | 4.9 | 0.3 | Soft | Utility-reported |
| Flat Rock | 4.9 | 0.3 | Soft | Utility-reported |
| Shelby | 20.0 | 1.2 | Soft | County estimate |
| Fruitland | 4.9 | 0.3 | Soft | Utility-reported |
| Mountain Home | 4.9 | 0.3 | Soft | Utility-reported |
| Balfour | 4.9 | 0.3 | Soft | Utility-reported |
| Barker Heights | 4.9 | 0.3 | Soft | Utility-reported |
| Dana | 4.9 | 0.3 | Soft | Utility-reported |
| East Flat Rock | 4.9 | 0.3 | Soft | Utility-reported |
| Etowah | 4.9 | 0.3 | Soft | Utility-reported |
| Hoopers Creek | 4.9 | 0.3 | Soft | Utility-reported |
| Horse Shoe | 4.9 | 0.3 | Soft | Utility-reported |
| Laurel Park | 4.9 | 0.3 | Soft | Utility-reported |
| Valley Hill | 4.9 | 0.3 | Soft | Utility-reported |
| Spring Lake | 27.0 | 1.6 | Soft | County estimate |
| Hickory | 22.7 | 1.3 | 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 |
| Havelock | 23.6 | 1.4 | Soft | Utility-reported |
| 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 |
| James City | 29.4 | 1.7 | Soft | Utility-reported |
| New Bern | 29.4 | 1.7 | Soft | Utility-reported |
| Rowland | 17.0 | 1.0 | Soft | County estimate |
| Gibsonville | 39.6 | 2.3 | Soft | County estimate |
| Brookford | 22.7 | 1.3 | Soft | Utility-reported |
| Mountain View | 22.7 | 1.3 | Soft | Utility-reported |
| St. Stephens | 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 |
| St. Pauls | 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 |
| Lincolnton | 14.4 | 0.8 | Soft | Utility-reported |
| 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 | 18.8 | 1.1 | Soft | County estimate |
| Mooresville | 50.7 | 3.0 | Soft | Utility-reported |
| Pinehurst | 33.8 | 2.0 | Soft | Utility-reported |
| 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 |
| Broadway | 27.0 | 1.6 | Soft | County estimate |
| Selma | 28.0 | 1.6 | Soft | County estimate |
| Belville | 51.6 | 3.0 | Soft | Utility-reported |
| Denver | 14.4 | 0.8 | Soft | Utility-reported |
| Iron Station | 14.4 | 0.8 | Soft | Utility-reported |
| Lowesville | 14.4 | 0.8 | Soft | Utility-reported |
| Westport | 14.4 | 0.8 | Soft | Utility-reported |
| Holly Springs | 41.3 | 2.4 | Soft | Utility-reported |
| Washington | 42.9 | 2.5 | Soft | Utility-reported |
| Roanoke Rapids | 31.8 | 1.9 | Soft | County estimate |
| Fairfield Harbour | 23.6 | 1.4 | Soft | Utility-reported |
| Kinston | 28.1 | 1.6 | Soft | County estimate |
| Raeford | 9.0 | 0.5 | Soft | County estimate |
| Ayden | 36.5 | 2.1 | Soft | County estimate |
| Trent Woods | 36.6 | 2.1 | Soft | Utility-reported |
| Weldon | 31.8 | 1.9 | Soft | County estimate |
| Brices Creek | 23.6 | 1.4 | Soft | Utility-reported |
| Cherry Branch | 23.6 | 1.4 | Soft | Utility-reported |
| Dover | 23.6 | 1.4 | Soft | Utility-reported |
| Neuse Forest | 23.6 | 1.4 | Soft | Utility-reported |
| Vanceboro | 36.0 | 2.1 | Soft | County estimate |
| Mount Olive | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Statesville | 19.0 | 1.1 | Soft | County estimate |
| Boone | 28.0 | 1.6 | Soft | Utility-reported |
| Rockingham | 13.0 | 0.8 | Soft | County estimate |
| Mocksville | 45.6 | 2.7 | Soft | County estimate |
| Walnut Creek | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Morganton | 19.0 | 1.1 | Soft | Utility-reported |
| Brogden | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Dudley | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Elroy | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Eureka | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Fremont | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Goldsboro | 75.2 | 4.4 | Moderately hard | Utility-reported |
| New Hope | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Pikeville | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Seven Springs | 75.2 | 4.4 | Moderately hard | Utility-reported |
| Hamlet | 13.0 | 0.8 | Soft | County estimate |
| Salem | 19.0 | 1.1 | Soft | Utility-reported |
| Carthage | 33.8 | 2.0 | Soft | Utility-reported |
| Southern Pines | 33.8 | 2.0 | Soft | Utility-reported |
| 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 |
| Kill Devil Hills | 3.6 | 0.2 | Soft | Utility-reported |
| River Bend | 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 |
| Mebane | 39.5 | 2.3 | Soft | County estimate |
| Waynesville | 9.9 | 0.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 |
| Glen Alpine | 19.0 | 1.1 | Soft | Utility-reported |
| Grimesland | 36.5 | 2.1 | Soft | County estimate |
| Tarboro | 27.6 | 1.6 | Soft | County estimate |
| Manteo | 3.6 | 0.2 | Soft | Utility-reported |
| Lake Royale | 35.4 | 2.1 | Soft | Utility-reported |
| Bunn | 35.4 | 2.1 | Soft | Utility-reported |
| Franklinton | 35.4 | 2.1 | Soft | Utility-reported |
| Louisburg | 35.4 | 2.1 | Soft | Utility-reported |
| Youngsville | 35.4 | 2.1 | Soft | Utility-reported |
| North Wilkesboro | 11.0 | 0.6 | Soft | County estimate |
| Ellerbe | 13.0 | 0.8 | Soft | County estimate |
| Pinnacle | 17.0 | 1.0 | Soft | County estimate |
| King | 17.0 | 1.0 | Soft | County estimate |
| Governors Club | 31.8 | 1.9 | Soft | Utility-reported |
| Carolina Meadows | 31.4 | 1.8 | Soft | Utility-reported |
| Fearrington Village | 31.4 | 1.8 | Soft | Utility-reported |
| Governors Village | 31.4 | 1.8 | Soft | Utility-reported |
| Kitty Hawk | 3.6 | 0.2 | Soft | Utility-reported |
| Maiden | 15.0 | 0.9 | Soft | County estimate |
| Duck | 3.6 | 0.2 | Soft | Utility-reported |
| Manns Harbor | 3.6 | 0.2 | Soft | Utility-reported |
| Southern Shores | 3.6 | 0.2 | Soft | Utility-reported |
| Wanchese | 3.6 | 0.2 | Soft | Utility-reported |
| Enfield | 31.8 | 1.9 | Soft | County estimate |
| Belhaven | 42.9 | 2.5 | Soft | Utility-reported |
| Pantego | 42.9 | 2.5 | Soft | Utility-reported |
| River Road | 42.9 | 2.5 | Soft | Utility-reported |
| Washington Park | 42.9 | 2.5 | Soft | Utility-reported |
| 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 | 30.0 | 1.8 | 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 |
| Harrisburg | 40.9 | 2.4 | 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 |
| 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 |
| 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 |
| Mount Holly | 22.7 | 1.3 | Soft | Utility-reported |
| Newton | 15.0 | 0.9 | Soft | County estimate |
| 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 |
| Brevard | 3.9 | 0.2 | Soft | Utility-reported |
| Clinton | 28.1 | 1.6 | Soft | County estimate |
| Hillsborough | 28.6 | 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 |
| 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 |
| Hertford | 57.8 | 3.4 | Soft | Utility-reported |
| 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 |
| 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 |
| 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 |
| 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 |
| Winfall | 57.8 | 3.4 | Soft | Utility-reported |
| 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 |
| 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 |
| 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.6 | 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 | 30.0 | 1.8 | 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 |
| 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 |
| 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 | 18.8 | 1.1 | 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 |
| Woodland | 33.3 | 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 | 18.8 | 1.1 | 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 |
| Kure Beach | 226.0 | 13.2 | Very hard | County estimate |
| Tabor City | 63.4 | 3.7 | Moderately hard | Utility-reported |
| 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 |
| Hampstead | 26.7 | 1.6 | Soft | Utility-reported |
| Bryson City | 4.5 | 0.3 | 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 |
| Wake Forest | 106.0 | 6.2 | Moderately hard | Utility-reported |
| 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 |
| Robersonville | 38.5 | 2.3 | Soft | County estimate |
| Camp Lejeune | 127.0 | 7.4 | Hard | 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 |
| Clyde | 9.9 | 0.6 | Soft | County estimate |
| Columbia | 80.5 | 4.7 | Moderately hard | 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 |
| Biscoe | 24.0 | 1.4 | 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 |
| 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 |
| 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 |
| 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 |
| 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 | 18.8 | 1.1 | 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 | 18.8 | 1.1 | Soft | County estimate |
| Ansonville | 26.0 | 1.5 | 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 |
| Pink Hill | 44.0 | 2.6 | Soft | County estimate |
| Fair Bluff | 20.0 | 1.2 | 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 | 18.8 | 1.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.7 | 1.6 | Soft | County estimate |
| Banner Elk | 79.8 | 4.7 | Moderately hard | Utility-reported |
| 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.7 | 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 |
| Newland | 8.5 | 0.5 | Soft | County estimate |
| Salemburg | 28.1 | 1.6 | Soft | County estimate |
| Saxapahaw | 39.5 | 2.3 | 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.5 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 195 measured cities fall in the hard or very hard bands (1%), so check your own city rather than the state average.
How hard is tap water in North Carolina?
Across the 195 North Carolina cities with measured values in our index, the median hardness is 29.5 mg/L (1.7 gpg) — soft on the USGS scale. Individual cities range from 3.6 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 195 measured cities (1%) 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.
Stay Informed About Your Water Quality
Get EPA reports, filter recommendations, and safety alerts for your area.
Join 10,000+ people protecting their families. Unsubscribe anytime.