Maryland Water Quality Rankings
107 cities ranked · Data from EPA SDWIS
Maryland water quality overview
Maryland's drinking water quality is fair overall, with a state average score of 74.4 out of 100 — 0.2 points above the national average of 74.2. The median city score is 79.7, reflecting how water quality is distributed across the state's 107 ranked cities. 71% of Maryland cities earned an A or B grade, indicating broadly strong water quality infrastructure. Only 9 cities received a failing grade. PFAS "forever chemicals" were detected in 36 of 107 cities (34%). Of those, 13 cities exceed the 2024 EPA maximum contaminant levels — a health concern requiring action. 91 cities have recorded health-based violations with the EPA — meaning contaminant levels exceeded safe limits or required testing was missed. Use the table below to find your city's specific record.
How Maryland cities scored
Score distribution by range
State vs national average
Water quality across Maryland
Each dot is a city, colored by grade. Size reflects population served. Click any city to view its full report.
Top & bottom cities in Maryland
Best 10 cities
All 107 cities in Maryland
| # | City | Grade | Score | Score | Population | Violations | Issues |
|---|---|---|---|---|---|---|---|
| 1 | Fenwick Island | A+ | 99.9 | 2K | 2 | ||
| 2 | Bel Air | A+ | 96.1 | 5K | 5 | Unresolved | |
| 3 | Laurel | A+ | 95 | 1.9M | 2 | ||
| 4 | St. Leonard | A | 93.8 | 2K | 22 | Unresolved | |
| 5 | Fort Meade | A | 91.8 | 62K | 21 | Health Unresolved | |
| 6 | Sherwood Forest | A | 91.6 | 1K | 3 | Unresolved | |
| 7 | Myersville | A | 91 | 2K | 13 | Health Unresolved | |
| 8 | Taneytown | A | 90.8 | 7K | 26 | Health PFAS | |
| 9 | Abingdon | A | 90 | 105K | 11 | Unresolved | |
| 10 | Secretary | A- | 89.8 | 535 | 41 | Health Unresolved | |
| 11 | Millington | A- | 89.4 | 625 | 5 | Unresolved | |
| 12 | Chrisfield | A- | 89.3 | 3K | 5 | Health Unresolved | |
| 13 | Chesapeake Beach | A- | 89.2 | 5K | 2 | Unresolved | |
| 14 | Rantoul | A- | 89.1 | 770 | 14 | Health Unresolved | |
| 15 | Walkersville | A- | 89 | 8K | 15 | Health Unresolved | |
| 16 | New Windsor | A- | 89 | 2K | 9 | Health Unresolved | |
| 17 | Brandywine | A- | 89 | 780 | 11 | Unresolved | |
| 18 | Mountain Lake Park | A- | 88.6 | 6K | 4 | Health Unresolved | |
| 19 | Annapolis | A- | 88 | 44K | 20 | Health Unresolved | |
| 20 | Chesapeake City | A- | 87.8 | 673 | 12 | Unresolved | |
| 21 | Easton | A- | 87.5 | 17K | 24 | Health Unresolved | |
| 22 | Port Republic | A- | 87.5 | 1K | 14 | Unresolved | |
| 23 | Patuxent River | A- | 86.7 | 22K | 58 | Health Unresolved | |
| 24 | Brunswick | A- | 86.7 | 7K | 18 | Health Unresolved | |
| 25 | Grantsville | A- | 86.2 | 885 | 7 | Unresolved | |
| 26 | Funkstown | A- | 85.8 | 1K | 2 | Health Unresolved | |
| 27 | Union Bridge | A- | 85.7 | 997 | 5 | Health Unresolved | |
| 28 | Dunkirk | A- | 85.5 | 9K | 17 | Health Unresolved | |
| 29 | Hebron | A- | 85.5 | 1K | 52 | Health Unresolved | |
| 30 | Rock Hall | A- | 85.1 | 2K | 10 | Unresolved | |
| 31 | Woodsboro | A- | 85.1 | 846 | 27 | Health Unresolved | |
| 32 | Snow Hill | B+ | 84.7 | 2K | 30 | Health Unresolved | |
| 33 | Delmar | B+ | 84.5 | 5K | 48 | Health Unresolved | |
| 34 | Sharptown | B+ | 84.4 | 625 | 35 | Health Unresolved | |
| 35 | Cumberland | B+ | 83.5 | 39K | 23 | Health Unresolved | |
| 36 | Pittsville | B+ | 83.5 | 2K | 24 | Health Unresolved | |
| 37 | Timonium | B+ | 83.3 | 1K | 14 | Health Unresolved | |
| 38 | St Michaels | B+ | 83.2 | 3K | 44 | Health Unresolved | |
| 39 | Willards | B+ | 82.9 | 4K | 20 | Health Unresolved | |
| 40 | Urbana | B+ | 82.7 | 2K | 10 | Unresolved | |
| 41 | Thurmont | B+ | 82.6 | 6K | 50 | Health PFAS Unresolved | |
| 42 | Queenstown | B+ | 82.4 | 705 | 25 | Health Unresolved | |
| 43 | Hampstead | B+ | 81.8 | 7K | 9 | Health PFAS Unresolved | |
| 44 | Preston | B+ | 81.8 | 750 | 17 | Health Unresolved | |
| 45 | Perry Point | B+ | 81.7 | 2K | 126 | Health Unresolved | |
| 46 | Lexington Park | B+ | 81.1 | 892 | 20 | Health Unresolved | |
| 47 | Manchester | B+ | 80.9 | 5K | 57 | Health PFAS Unresolved | |
| 48 | North Beach | B+ | 80.9 | 3K | 12 | Health Unresolved | |
| 49 | Bowie | B+ | 80.5 | 25K | 3 | Health Unresolved | |
| 50 | Cambridge | B+ | 80.2 | 16K | 23 | Health Unresolved | |
| 51 | Aberdeen | B | 79.8 | 33K | 11 | PFAS Unresolved | |
| 52 | Smithsburg | B | 79.8 | 4K | 34 | Health Unresolved | |
| 53 | Hancock | B | 79.8 | 2K | 14 | Health Unresolved | |
| 54 | Lavale | B | 79.7 | 6K | 18 | Health Unresolved | |
| 55 | Hurlock | B | 79.4 | 2K | 11 | Health Unresolved | |
| 56 | Crofton | B | 79.4 | 830 | 88 | Unresolved | |
| 57 | Westernport | B | 79.1 | 2K | 18 | Health Unresolved | |
| 58 | Middletown | B | 78.6 | 4K | 31 | Health PFAS Unresolved | |
| 59 | Centreville | B | 78.5 | 3K | 49 | Health Unresolved | |
| 60 | Oxford | B | 78.3 | 726 | 21 | Health Unresolved | |
| 61 | Poolesville | B | 76.8 | 6K | 49 | Health PFAS Unresolved | |
| 62 | Emmitsburg | B | 75.9 | 4K | 83 | Health Unresolved | |
| 63 | Lusby | B | 75.7 | 10K | 21 | Health Unresolved | |
| 64 | Jessup | B | 75.4 | 1K | 46 | Health Unresolved | |
| 65 | Prince Frederick | B | 75 | 14K | 78 | Health Unresolved | |
| 66 | Princess Anne | B | 75 | 4K | 94 | Health Unresolved | |
| 67 | Ridgely | B- | 74.2 | 2K | 37 | Health Unresolved | |
| 68 | Street | B- | 73.3 | 643 | 144 | Health Unresolved | |
| 69 | Grasonville | B- | 73.3 | 556 | 24 | Health Unresolved | |
| 70 | Severn | B- | 73.2 | 2K | 17 | Health Unresolved | |
| 71 | Pocomoke City | B- | 72 | 4K | 19 | Health Unresolved | |
| 72 | Denton | B- | 71.5 | 5K | 134 | Health Unresolved | |
| 73 | Huntingtown | B- | 70.6 | 526 | 52 | Health Unresolved | |
| 74 | Leonardtown | B- | 70.5 | 5K | 66 | Health Unresolved | |
| 75 | Lothian | B- | 70.5 | 3K | 50 | Health Unresolved | |
| 76 | Indian Head | B- | 70.3 | 9K | 100 | Health Unresolved | |
| 77 | Boonsboro | C+ | 69.6 | 5K | 98 | Health PFAS Unresolved | |
| 78 | Williamsport | C+ | 69 | 4K | 51 | Health Unresolved | |
| 79 | Lonaconing | C+ | 67.9 | 5K | 39 | Health Unresolved | |
| 80 | Mount Airy | C+ | 66.6 | 10K | 120 | Health PFAS Unresolved | |
| 81 | Oakland | C+ | 66.6 | 6K | 114 | Health Unresolved | |
| 82 | Glen Arm | C+ | 66.3 | 818 | 92 | Health Unresolved | |
| 83 | Columbia | C+ | 66 | 287K | 140 | Health Unresolved | |
| 84 | Fruitland | C+ | 65.2 | 7K | 144 | Health PFAS Unresolved | |
| 85 | Chestertown | C | 64.8 | 8K | 174 | Health Unresolved | |
| 86 | Stevensville | C | 64.5 | 13K | 57 | Health Unresolved | |
| 87 | Federalsburg | C | 63.4 | 3K | 89 | Health Unresolved | |
| 88 | Havre De Grace | C | 62.2 | 15K | 98 | Health Unresolved | |
| 89 | Gaithersburg | C | 60.8 | 805 | 66 | Health Unresolved | |
| 90 | Hagerstown | C | 60.5 | 95K | 116 | Health Unresolved | |
| 91 | California | C- | 59.6 | 60K | 77 | Health Unresolved | |
| 92 | Ocean City | C- | 57.9 | 30K | 134 | Health Unresolved | |
| 93 | Sykesville | C- | 57.8 | 2K | 53 | Health Unresolved | |
| 94 | Greensboro | D+ | 52.3 | 2K | 69 | Health Unresolved | |
| 95 | Berlin | D | 47.9 | 24K | 252 | Health Unresolved | |
| 96 | Perryville | D | 45 | 5K | 281 | Health Unresolved | |
| 97 | Waldorf | D | 45 | 3K | 282 | Health Unresolved | |
| 98 | Ellicott City | D | 45 | 939 | 453 | Health Unresolved | |
| 99 | Millersville | F | 41.6 | 388K | 99 | Health Unresolved | |
| 100 | North East | F | 41 | 10K | 504 | Health Unresolved | |
| 101 | Baltimore | F | 39.8 | 1.6M | 84 | Health Unresolved | |
| 102 | La Plata | F | 39.5 | 107K | 183 | Health Unresolved | |
| 103 | Westminster | F | 39.5 | 63K | 128 | Health PFAS Unresolved | |
| 104 | Frederick | F | 37.5 | 147K | 205 | Health Unresolved | |
| 105 | Port Deposit | F | 36 | 1K | 372 | Health Unresolved | |
| 106 | Salisbury | F | 32.2 | 31K | 82 | Health PFAS Unresolved | |
| 107 | Elkton | F | 32.1 | 18K | 182 | Health PFAS Unresolved |