Vermont Water Quality Rankings
105 cities ranked · Data from EPA SDWIS
Vermont water quality overview
Vermont's drinking water quality is fair overall, with a state average score of 74.3 out of 100 — 0.1 points above the national average of 74.2. The median city score is 80.9, reflecting how water quality is distributed across the state's 105 ranked cities. The state shows a mixed picture: 31 cities earned an A grade while 7 cities received an F. The majority fall in the B–C range. PFAS "forever chemicals" were detected in 3 of 105 cities (3%). Of those, 1 city exceeds the 2024 EPA maximum contaminant levels — a health concern requiring action. 2 cities have lead levels exceeding the EPA action level of 15 ppb, typically a sign of aging lead service lines or lead solder in older plumbing. Residents in these areas should use an NSF 53-certified filter. 97 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 Vermont cities scored
Score distribution by range
State vs national average
Water quality across Vermont
Each dot is a city, colored by grade. Size reflects population served. Click any city to view its full report.
Top & bottom cities in Vermont
Best 10 cities
All 105 cities in Vermont
| # | City | Grade | Score | Score | Population | Violations | Issues |
|---|---|---|---|---|---|---|---|
| 1 | Essex | A+ | 95 | 19K | 4 | ||
| 2 | Brandon | A+ | 95 | 4K | 36 | Health Unresolved | |
| 3 | Bridport | A | 94.8 | 4K | 15 | Health Unresolved | |
| 4 | Winooski | A | 94.3 | 9K | 2 | ||
| 5 | Fairlee | A | 94.2 | 967 | 5 | Health Unresolved | |
| 6 | Shaftsbury | A | 94.2 | 950 | 11 | Unresolved | |
| 7 | Peru | A | 93.9 | 4K | 13 | Health Unresolved | |
| 8 | Arlington | A | 93.9 | 1K | 10 | Health Unresolved | |
| 9 | West Windsor | A | 93.8 | 750 | 11 | Health Unresolved | |
| 10 | Pittsford | A | 92.3 | 2K | 87 | Health Unresolved | |
| 11 | Barre City | A | 92.2 | 14K | 6 | Health Unresolved | |
| 12 | Rutland City | A | 91.8 | 19K | 26 | Health Unresolved | |
| 13 | West Rutland | A | 91.7 | 2K | 7 | Health Unresolved | |
| 14 | Bristol | A | 91.7 | 2K | 38 | Health Unresolved | |
| 15 | Springfield | A | 91.6 | 10K | 15 | Health Unresolved | |
| 16 | Bethel | A | 91.5 | 2K | 22 | Health Unresolved | |
| 17 | Poultney | A | 91.3 | 2K | 8 | Unresolved | |
| 18 | Fair Haven | A | 90.7 | 3K | 15 | Health Unresolved | |
| 19 | Underhill | A- | 89.9 | 825 | 7 | Health Unresolved | |
| 20 | Brighton | A- | 89.2 | 1K | 4 | Unresolved | |
| 21 | Saint Albans City | A- | 88.6 | 10K | 13 | Health Unresolved | |
| 22 | Middlebury | A- | 88.2 | 10K | 39 | Health Unresolved | |
| 23 | Vergennes | A- | 87.8 | 5K | 82 | Health Unresolved | |
| 24 | Richford | A- | 87.8 | 3K | 65 | Health Unresolved | |
| 25 | Lyndon | A- | 87.6 | 4K | 37 | Health Unresolved | |
| 26 | Williamstown | A- | 86.8 | 1K | 59 | Health Unresolved | |
| 27 | Stratton | A- | 86.6 | 6K | 26 | Health Unresolved | |
| 28 | North Hero | A- | 86.4 | 3K | 74 | Health Unresolved | |
| 29 | Chester | A- | 85.9 | 3K | 85 | Health Unresolved | |
| 30 | Norwich | A- | 85.7 | 956 | 149 | Health Unresolved | |
| 31 | Montpelier | A- | 85.4 | 9K | 11 | Health Unresolved | |
| 32 | South Burlington | B+ | 84.9 | 20K | 22 | Health Unresolved | |
| 33 | Bradford | B+ | 84.7 | 2K | 133 | Health Unresolved | |
| 34 | Burlington | B+ | 84.6 | 42K | 21 | Unresolved | |
| 35 | Northfield | B+ | 84.6 | 5K | 12 | Health Unresolved | |
| 36 | Newport City | B+ | 84.6 | 5K | 23 | Health Unresolved | |
| 37 | Woodstock | B+ | 84.5 | 3K | 25 | Health Unresolved | |
| 38 | Plainfield | B+ | 84.4 | 985 | 48 | Unresolved | |
| 39 | Lunenburg | B+ | 83.7 | 650 | 90 | Health Unresolved | |
| 40 | Williston | B+ | 83.6 | 8K | 17 | Unresolved | |
| 41 | Enosburgh | B+ | 83.5 | 2K | 24 | Health Unresolved | |
| 42 | Saint George | B+ | 83.4 | 534 | 66 | Health Unresolved | |
| 43 | Windsor | B+ | 83.3 | 2K | 86 | Health Unresolved | |
| 44 | Chelsea | B+ | 83.3 | 562 | 146 | Health Unresolved | |
| 45 | Shelburne | B+ | 83 | 7K | 75 | Health Unresolved | |
| 46 | Waitsfield | B+ | 82.9 | 569 | 42 | Health Unresolved | |
| 47 | Johnson | B+ | 82.7 | 1K | 139 | Health Unresolved | |
| 48 | Grand Isle | B+ | 82.4 | 3K | 54 | Health Unresolved | |
| 49 | Hardwick | B+ | 82.1 | 2K | 63 | Health Unresolved | |
| 50 | Putney | B+ | 81.9 | 2K | 29 | Health Unresolved | |
| 51 | Montgomery | B+ | 81.9 | 530 | 28 | Health Unresolved | |
| 52 | Dorset | B+ | 81.2 | 772 | 141 | Health Unresolved | |
| 53 | Cavendish | B+ | 80.9 | 950 | 93 | Health Unresolved | |
| 54 | Hinesburg | B | 79.8 | 3K | 111 | Health Unresolved | |
| 55 | Derby | B | 79.6 | 3K | 94 | Health Unresolved | |
| 56 | Brattleboro | B | 79.5 | 12K | 32 | Health Unresolved | |
| 57 | South Hero | B | 79.5 | 760 | 84 | Health Unresolved | |
| 58 | Danville | B | 79 | 500 | 30 | Health Unresolved | |
| 59 | Richmond | B | 78.9 | 1K | 78 | Health Unresolved | |
| 60 | Jay | B | 78.2 | 7K | 144 | Health Unresolved | |
| 61 | Swanton | B | 77.8 | 4K | 57 | Health Unresolved | |
| 62 | Manchester | B | 77.5 | 4K | 102 | Health Unresolved | |
| 63 | Canaan | B | 77.2 | 1K | 80 | Health Unresolved | |
| 64 | Waterbury | B | 76.6 | 6K | 196 | Health Unresolved | |
| 65 | Troy | B | 76.6 | 1K | 74 | Health Unresolved | |
| 66 | Hyde Park | B | 75.2 | 1K | 155 | Health Unresolved | |
| 67 | Barton | B- | 74.5 | 2K | 80 | Health Unresolved | |
| 68 | Morristown | B- | 73.8 | 3K | 159 | Health Unresolved | |
| 69 | Newbury | B- | 72.2 | 970 | 138 | Health Unresolved | |
| 70 | Winhall | B- | 70.3 | 762 | 219 | Health Unresolved | |
| 71 | Saint Johnsbury | C+ | 70 | 5K | 128 | Health Unresolved | |
| 72 | Proctor | C+ | 67.7 | 2K | 139 | Health Unresolved | |
| 73 | Cambridge | C+ | 67.1 | 4K | 139 | Health Unresolved | |
| 74 | Wallingford | C+ | 66.9 | 1K | 179 | Health Unresolved | |
| 75 | Jericho | C+ | 66.6 | 2K | 128 | Health Unresolved | |
| 76 | Randolph | C+ | 66.4 | 4K | 176 | Health Unresolved | |
| 77 | Bolton | C+ | 65.2 | 1K | 237 | Health Unresolved | |
| 78 | Greensboro | C+ | 65.1 | 622 | 140 | Health Unresolved | |
| 79 | Colchester | C | 63.4 | 22K | 104 | Health Unresolved | |
| 80 | Rockingham | C | 62.9 | 4K | 229 | Health Unresolved | |
| 81 | Starksboro | C- | 59.6 | 690 | 200 | Health Unresolved | |
| 82 | Londonderry | C- | 59 | 539 | 289 | Health Unresolved | |
| 83 | Royalton | C- | 58.8 | 2K | 177 | Health Unresolved | |
| 84 | East Montpelier | C- | 56.8 | 530 | 244 | Health Unresolved | |
| 85 | Walpole | C- | 56 | 750 | 96 | Health Unresolved | |
| 86 | Milton | D+ | 54.5 | 8K | 101 | Health Unresolved | |
| 87 | Pownal | D+ | 51.2 | 980 | 300 | Health Unresolved | |
| 88 | Castleton | D+ | 50 | 3K | 198 | Health Unresolved | |
| 89 | Burke | D+ | 50 | 1K | 258 | Health Unresolved | |
| 90 | Georgia | D+ | 50 | 685 | 290 | Health Unresolved | |
| 91 | Barre Town | D | 49 | 3K | 247 | Health Unresolved | |
| 92 | Hartford | D | 47 | 11K | 366 | Health Unresolved | |
| 93 | Wilmington | D | 46 | 5K | 200 | Health Unresolved | |
| 94 | Dover | D | 46 | 5K | 668 | Health Unresolved | |
| 95 | Stowe | D | 46 | 5K | 213 | Health Unresolved | |
| 96 | Berlin | D | 46 | 4K | 395 | Health PFAS Unresolved | |
| 97 | Fairfax | D | 46 | 2K | 384 | Health Unresolved | |
| 98 | Alburgh | D | 45 | 963 | 183 | Health Unresolved | |
| 99 | Bennington | F | 44.9 | 17K | 343 | Health Unresolved | |
| 100 | Ludlow | F | 44 | 8K | 418 | Health Unresolved | |
| 101 | Killington | F | 42 | 5K | 1618 | Health Unresolved | |
| 102 | Barnet | F | 42 | 661 | 293 | Health Unresolved | |
| 103 | Rutland Town | F | 40 | 2K | 625 | Health Unresolved | |
| 104 | Plymouth | F | 32 | 574 | 359 | Health Lead Unresolved | |
| 105 | Warren | F | 29 | 4K | 383 | Health Lead Unresolved |