Kentucky Water Quality Rankings
246 cities ranked · Data from EPA SDWIS
Kentucky water quality overview
Kentucky's drinking water quality is good overall, with a state average score of 79.3 out of 100 — 5.1 points above the national average of 74.2. The median city score is 83, reflecting how water quality is distributed across the state's 246 ranked cities. 82% of Kentucky cities earned an A or B grade, indicating broadly strong water quality infrastructure. Only 3 cities received a failing grade. PFAS "forever chemicals" were detected in 90 of 246 cities (37%). Of those, 29 cities exceed the 2024 EPA maximum contaminant levels — a health concern requiring action. 222 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 Kentucky cities scored
Score distribution by range
State vs national average
Water quality across Kentucky
Each dot is a city, colored by grade. Size reflects population served. Click any city to view its full report.
Top & bottom cities in Kentucky
Best 10 cities
All 246 cities in Kentucky
| # | City | Grade | Score | Score | Population | Violations | Issues |
|---|---|---|---|---|---|---|---|
| 1 | Bremen | A | 94.3 | 7K | 12 | Unresolved | |
| 2 | Warsaw | A | 94.1 | 2K | 11 | Health Unresolved | |
| 3 | Buckner | A | 93.5 | 38K | 8 | Health Unresolved | |
| 4 | Central City | A | 92.1 | 6K | 28 | Health Unresolved | |
| 5 | Hardin | A | 91.7 | 2K | 25 | Health Unresolved | |
| 6 | Springfield | A | 91.3 | 14K | 21 | Health Unresolved | |
| 7 | New Castle | A | 91.3 | 2K | 8 | Unresolved | |
| 8 | Oak Grove | A | 91.2 | 9K | 34 | Health Unresolved | |
| 9 | Harlan | A | 91.2 | 5K | 55 | Health Unresolved | |
| 10 | Almo | A | 91 | 2K | 11 | Health Unresolved | |
| 11 | Greensburg | A | 90.9 | 2K | 31 | Health Unresolved | |
| 12 | Hawesville | A | 90.7 | 3K | 14 | Health Unresolved | |
| 13 | Sparta | A | 90.5 | 6K | 79 | Unresolved | |
| 14 | White Plains | A | 90.5 | 2K | 60 | Health Unresolved | |
| 15 | Augusta | A | 90.5 | 2K | 17 | Unresolved | |
| 16 | Glasgow | A | 90.4 | 37K | 56 | Health Unresolved | |
| 17 | Russellvile | A | 90.4 | 9K | 18 | Health Unresolved | |
| 18 | Garrison | A | 90.4 | 3K | 18 | Unresolved | |
| 19 | Bedford | A | 90.3 | 4K | 10 | Health Unresolved | |
| 20 | Florence | A | 90.2 | 29K | 12 | Health Unresolved | |
| 21 | Whitley City | A | 90 | 34K | 25 | Health Unresolved | |
| 22 | Louisa | A | 90 | 8K | 32 | Health Unresolved | |
| 23 | Vanceburg | A | 90 | 7K | 45 | Health Unresolved | |
| 24 | Dawson Springs | A | 90 | 3K | 54 | Health Unresolved | |
| 25 | Trenton | A | 90 | 950 | 61 | Health Unresolved | |
| 26 | Stanford | A- | 89.9 | 9K | 51 | Health Unresolved | |
| 27 | Franklin | A- | 89.8 | 15K | 67 | Health Unresolved | |
| 28 | Dover | A- | 89.7 | 3K | 31 | Unresolved | |
| 29 | Worthington | A- | 89.7 | 2K | 18 | Unresolved | |
| 30 | Lewisport | A- | 89.6 | 3K | 25 | Unresolved | |
| 31 | Jeffersonville | A- | 89.4 | 5K | 40 | Health Unresolved | |
| 32 | Calvert City | A- | 89.4 | 4K | 19 | Health Unresolved | |
| 33 | Hazel | A- | 89.4 | 1K | 5 | Unresolved | |
| 34 | Hyden | A- | 89.3 | 10K | 68 | Health Unresolved | |
| 35 | South Shore | A- | 89.3 | 7K | 109 | Health Unresolved | |
| 36 | Sandy Hook | A- | 89.2 | 4K | 12 | Unresolved | |
| 37 | Frakfort | A- | 89.2 | 3K | 10 | Unresolved | |
| 38 | Irvington | A- | 89.2 | 2K | 56 | Health Unresolved | |
| 39 | Mt Vernon | A- | 89 | 13K | 23 | Health Unresolved | |
| 40 | Lagrange | A- | 89 | 10K | 3 | Unresolved | |
| 41 | Wheelwright | A- | 88.9 | 834 | 48 | Health Unresolved | |
| 42 | Horse Cave | A- | 88.8 | 20K | 46 | Health Unresolved | |
| 43 | Middlesboro | A- | 88.8 | 14K | 45 | Health Unresolved | |
| 44 | Harrodsburg | A- | 88.8 | 8K | 127 | Health Unresolved | |
| 45 | Science Hill | A- | 88.8 | 6K | 31 | Health Unresolved | |
| 46 | Island | A- | 88.7 | 2K | 28 | Health Unresolved | |
| 47 | Danville | A- | 88.6 | 33K | 65 | Health Unresolved | |
| 48 | Adairville | A- | 88.5 | 5K | 15 | Health Unresolved | |
| 49 | Parksville | A- | 88.5 | 4K | 6 | Health Unresolved | |
| 50 | Paintsville | A- | 88.4 | 24K | 74 | Health Unresolved | |
| 51 | Fulton | A- | 88.3 | 5K | 31 | Health Unresolved | |
| 52 | Ghent | A- | 88.2 | 6K | 14 | Health Unresolved | |
| 53 | Prestonsburg | A- | 88.1 | 27K | 39 | Health Unresolved | |
| 54 | Crittenden | A- | 88.1 | 20K | 31 | Health Unresolved | |
| 55 | Fort Campbell | A- | 88 | 22K | 10 | Health Unresolved | |
| 56 | Shelbyville | A- | 87.5 | 24K | 30 | Health Unresolved | |
| 57 | Eddyville | A- | 87.5 | 5K | 40 | Health Unresolved | |
| 58 | Eminence | A- | 87.5 | 3K | 5 | Health Unresolved | |
| 59 | Symsonia | A- | 87.5 | 2K | 98 | Health Unresolved | |
| 60 | Eubank | A- | 87.4 | 12K | 24 | Health Unresolved | |
| 61 | Dawson Springs, Ky 42408 | A- | 87.4 | 8K | 18 | Health Unresolved | |
| 62 | Auburn | A- | 87.4 | 3K | 38 | Health Unresolved | |
| 63 | Earlington | A- | 87.4 | 2K | 41 | Health Unresolved | |
| 64 | Brodhead | A- | 87.3 | 7K | 41 | Health Unresolved | |
| 65 | Lebanon | A- | 87.2 | 24K | 40 | Health Unresolved | |
| 66 | Grennsburg | A- | 87.2 | 15K | 26 | Health Unresolved | |
| 67 | Edmonton | A- | 87.2 | 9K | 21 | Health Unresolved | |
| 68 | Bradenburg | A- | 87 | 33K | 15 | Health Unresolved | |
| 69 | Nortonville | A- | 86.9 | 3K | 63 | Health Unresolved | |
| 70 | Ft. Thomas | A- | 86.8 | 199K | 142 | Unresolved | |
| 71 | Elkton | A- | 86.7 | 13K | 36 | Health Unresolved | |
| 72 | Raceland | A- | 86.7 | 3K | 21 | Unresolved | |
| 73 | Campbellsburg | A- | 86.6 | 18K | 80 | Health Unresolved | |
| 74 | Wingo | A- | 86.6 | 965 | 67 | Health Unresolved | |
| 75 | Monticello | A- | 86.5 | 21K | 22 | Health Unresolved | |
| 76 | Salt Lick | A- | 86.5 | 10K | 11 | Health Unresolved | |
| 77 | Radcliff | A- | 86.4 | 54K | 144 | Health Unresolved | |
| 78 | Paducah | A- | 86.3 | 65K | 35 | Health PFAS Unresolved | |
| 79 | Walton | A- | 86.3 | 4K | 9 | Health Unresolved | |
| 80 | Russell | A- | 86.2 | 5K | 82 | Health Unresolved | |
| 81 | Cloverport | A- | 86.2 | 2K | 50 | Health Unresolved | |
| 82 | Bardwell | A- | 86 | 1K | 78 | Health Unresolved | |
| 83 | Owingsville | A- | 85.9 | 2K | 52 | Health Unresolved | |
| 84 | Elkhorn City | A- | 85.9 | 2K | 25 | Health Unresolved | |
| 85 | Hopkinsville | A- | 85.8 | 59K | 55 | Health Unresolved | |
| 86 | Taylorsville | A- | 85.8 | 22K | 12 | Health PFAS Unresolved | |
| 87 | Hustonville | A- | 85.8 | 5K | 18 | Health Unresolved | |
| 88 | Burnside | A- | 85.7 | 2K | 62 | Health Unresolved | |
| 89 | Bonnieville | A- | 85.7 | 2K | 14 | Unresolved | |
| 90 | Leitchfield | A- | 85.6 | 28K | 59 | Health Unresolved | |
| 91 | Berea | A- | 85.5 | 25K | 79 | Health Unresolved | |
| 92 | Mt Washington | A- | 85.5 | 24K | 15 | Health PFAS Unresolved | |
| 93 | Frenchburg | A- | 85.5 | 5K | 9 | Health Unresolved | |
| 94 | Lebanon Junction | A- | 85.5 | 3K | 19 | Health Unresolved | |
| 95 | Muldraugh | A- | 85.4 | 1K | 4 | Unresolved | |
| 96 | Hardinsburg | A- | 85.2 | 18K | 85 | Health Unresolved | |
| 97 | Brooksville | A- | 85.2 | 7K | 31 | Health Unresolved | |
| 98 | Owensboro | A- | 85.1 | 94K | 137 | Health PFAS Unresolved | |
| 99 | Grand Rivers | A- | 85.1 | 4K | 15 | Health PFAS Unresolved | |
| 100 | Midway | A- | 85.1 | 2K | 42 | Unresolved | |
| 101 | Fountain Run | A- | 85.1 | 1K | 11 | Health Unresolved | |
| 102 | Bardstown | B+ | 85 | 31K | 82 | Health Unresolved | |
| 103 | Mortons Gap | B+ | 84.9 | 1K | 8 | Unresolved | |
| 104 | Lancaster | B+ | 84.7 | 19K | 95 | Health Unresolved | |
| 105 | Tompkinville, Ky | B+ | 84.7 | 10K | 11 | Health Unresolved | |
| 106 | Simpsonville | B+ | 84.7 | 7K | 17 | Health PFAS Unresolved | |
| 107 | Whitesville | B+ | 84.6 | 4K | 10 | PFAS Unresolved | |
| 108 | Nebo | B+ | 84.5 | 5K | 17 | Health Unresolved | |
| 109 | Butler | B+ | 83.9 | 980 | 48 | Health Unresolved | |
| 110 | Somerset | B+ | 83.8 | 75K | 49 | Health Unresolved | |
| 111 | Fredonia | B+ | 83.8 | 1K | 9 | Unresolved | |
| 112 | Scottsville | B+ | 83.7 | 23K | 151 | Health Unresolved | |
| 113 | Carrollton | B+ | 83.7 | 7K | 109 | Health Unresolved | |
| 114 | Wilmore | B+ | 83.7 | 6K | 143 | Health Unresolved | |
| 115 | Arlington | B+ | 83.7 | 801 | 109 | Unresolved | |
| 116 | Ewing | B+ | 83.6 | 4K | 114 | Health Unresolved | |
| 117 | Knottsville | B+ | 83.5 | 12K | 13 | Health PFAS Unresolved | |
| 118 | Marion | B+ | 83.5 | 3K | 55 | Health Unresolved | |
| 119 | Guthrie | B+ | 83.4 | 2K | 41 | Health Unresolved | |
| 120 | Russellville | B+ | 83.3 | 10K | 46 | Health Unresolved | |
| 121 | Georgetown | B+ | 83.2 | 36K | 35 | Health PFAS Unresolved | |
| 122 | Mckinney | B+ | 83.2 | 5K | 33 | Health Unresolved | |
| 123 | Madisonville | B+ | 83.1 | 4K | 27 | Health Unresolved | |
| 124 | Princeton | B+ | 83 | 13K | 79 | Health Unresolved | |
| 125 | Clay City | B+ | 83 | 9K | 38 | Health Unresolved | |
| 126 | Brandenburg | B+ | 83 | 5K | 57 | Health Unresolved | |
| 127 | Cadiz | B+ | 82.9 | 20K | 83 | Health Unresolved | |
| 128 | Beaver Dam | B+ | 82.8 | 5K | 65 | Health Unresolved | |
| 129 | Corinth | B+ | 82.8 | 3K | 28 | Health Unresolved | |
| 130 | Cumberland | B+ | 82.8 | 3K | 46 | Health Unresolved | |
| 131 | Slaughters | B+ | 82.8 | 659 | 14 | Health Unresolved | |
| 132 | Vine Grove | B+ | 82.4 | 7K | 17 | Health Unresolved | |
| 133 | Coxs Creek | B+ | 82.3 | 13K | 14 | Health PFAS Unresolved | |
| 134 | Louisville | B+ | 82.2 | 765K | 82 | Health PFAS Unresolved | |
| 135 | Winchester | B+ | 82.2 | 37K | 84 | Health Unresolved | |
| 136 | Mayking | B+ | 82.2 | 3K | 60 | Health Unresolved | |
| 137 | Sacramento | B+ | 82.2 | 2K | 20 | Health Unresolved | |
| 138 | Morgantown | B+ | 82 | 3K | 59 | Health Unresolved | |
| 139 | Vicco | B+ | 81.6 | 10K | 64 | Health Unresolved | |
| 140 | Salvisa | B+ | 81.3 | 10K | 20 | Health Unresolved | |
| 141 | Olive Hill | B+ | 81.3 | 6K | 64 | Health Unresolved | |
| 142 | Elizabethtown | B+ | 81.2 | 76K | 8 | Health PFAS Unresolved | |
| 143 | Bronston | B+ | 81.1 | 7K | 72 | Health Unresolved | |
| 144 | Booneville | B+ | 81.1 | 5K | 91 | Health Unresolved | |
| 145 | Stanton | B+ | 80.8 | 7K | 44 | Health Unresolved | |
| 146 | Flemingsburg | B+ | 80.7 | 14K | 57 | Health Unresolved | |
| 147 | Cawood | B+ | 80.6 | 5K | 52 | Health Unresolved | |
| 148 | Mount Olivet | B+ | 80.5 | 775 | 39 | Health Unresolved | |
| 149 | Versailles | B+ | 80.4 | 20K | 105 | Health Unresolved | |
| 150 | Salem | B+ | 80.4 | 11K | 92 | Health PFAS Unresolved | |
| 151 | Russell Springs | B+ | 80.4 | 9K | 60 | Health Unresolved | |
| 152 | Bagdad | B+ | 80.1 | 23K | 31 | Health PFAS Unresolved | |
| 153 | Whitesburg | B+ | 80 | 4K | 82 | Health Unresolved | |
| 154 | Hindman | B+ | 80 | 2K | 27 | Health Unresolved | |
| 155 | Wickliffe | B | 79.9 | 1K | 48 | Unresolved | |
| 156 | Sedalia | B | 79.8 | 28K | 29 | Health Unresolved | |
| 157 | Jamestown | B | 79.8 | 7K | 104 | Health Unresolved | |
| 158 | Mayslick | B | 79.7 | 5K | 25 | Health PFAS Unresolved | |
| 159 | Henderson | B | 79.5 | 49K | 94 | Health Unresolved | |
| 160 | Carlisle | B | 79.1 | 2K | 82 | Health Unresolved | |
| 161 | Lexington | B | 79 | 303K | 90 | Health Unresolved | |
| 162 | Hickman | B | 78.9 | 3K | 88 | Health Unresolved | |
| 163 | Evarts | B | 78.7 | 3K | 86 | Health Unresolved | |
| 164 | Fordsville | B | 78.5 | 927 | 30 | Health Unresolved | |
| 165 | Dry Ridge | B | 78.4 | 8K | 72 | Health Unresolved | |
| 166 | Kevil | B | 78.3 | 2K | 170 | Health Unresolved | |
| 167 | Bloomfield | B | 78.2 | 6K | 29 | Health Unresolved | |
| 168 | Corbin | B | 78.1 | 26K | 55 | Health PFAS Unresolved | |
| 169 | Richmond | B | 77.9 | 67K | 65 | Health Unresolved | |
| 170 | Burlington | B | 77.8 | 67K | 72 | Health Unresolved | |
| 171 | Flatwoods | B | 77.3 | 10K | 28 | Health PFAS Unresolved | |
| 172 | Hanson | B | 77.3 | 2K | 33 | Health Unresolved | |
| 173 | Lawrenceburg | B | 77.2 | 23K | 132 | Health Unresolved | |
| 174 | Crab Orchard | B | 77.1 | 1K | 38 | Health Unresolved | |
| 175 | Benham | B | 76.8 | 855 | 39 | Health Unresolved | |
| 176 | Campbellsville | B | 76.2 | 47K | 105 | Health Unresolved | |
| 177 | Bowling Green | B | 75.5 | 168K | 222 | Health Unresolved | |
| 178 | Sharpsburg | B | 75.5 | 4K | 29 | Health Unresolved | |
| 179 | Irvine, | B | 75.1 | 15K | 59 | Health Unresolved | |
| 180 | Livermore | B | 75 | 5K | 93 | Health PFAS Unresolved | |
| 181 | Sebree | B- | 75 | 2K | 18 | Health Unresolved | |
| 182 | Cave City | B- | 74.4 | 10K | 71 | Health Unresolved | |
| 183 | Drakesboro | B- | 74.3 | 888 | 32 | Health Unresolved | |
| 184 | Jenkins | B- | 73.9 | 3K | 68 | Health Unresolved | |
| 185 | Hazard | B- | 73.8 | 27K | 162 | Health Unresolved | |
| 186 | Burkesville | B- | 73.8 | 10K | 153 | Health Unresolved | |
| 187 | Burgin | B- | 73.6 | 8K | 65 | Health Unresolved | |
| 188 | Dixon | B- | 73.5 | 7K | 118 | Health Unresolved | |
| 189 | Maysville | B- | 73.4 | 18K | 96 | Health Unresolved | |
| 190 | Wurtland | B- | 73.3 | 2K | 26 | Health Unresolved | |
| 191 | Buckhorn | B- | 73.2 | 875 | 88 | Health Unresolved | |
| 192 | Albany | B- | 72.8 | 9K | 60 | Health Unresolved | |
| 193 | Mckee | B- | 71.7 | 15K | 148 | Health Unresolved | |
| 194 | Grayson | B- | 71.3 | 22K | 71 | Health Unresolved | |
| 195 | Greenup | B- | 71.2 | 12K | 96 | Health Unresolved | |
| 196 | Salyersville | B- | 71.2 | 12K | 88 | Health Unresolved | |
| 197 | Inez | B- | 71.1 | 9K | 93 | Health Unresolved | |
| 198 | West Liberty | B- | 71 | 10K | 38 | Health Unresolved | |
| 199 | Calisle | B- | 70.6 | 4K | 59 | Health Unresolved | |
| 200 | Lacenter | B- | 70.6 | 2K | 146 | Health Unresolved | |
| 201 | Tompkinsville | B- | 70.3 | 2K | 110 | Health Unresolved | |
| 202 | London | B- | 70.2 | 72K | 156 | Health Unresolved | |
| 203 | Morehead | C+ | 69.6 | 34K | 244 | Health Unresolved | |
| 204 | Campton | C+ | 69.6 | 7K | 115 | Health Unresolved | |
| 205 | Uniontown | C+ | 69.6 | 1K | 36 | Health Unresolved | |
| 206 | Liberty | C+ | 69.3 | 15K | 274 | Health Unresolved | |
| 207 | Cynthiana | C+ | 68.3 | 24K | 213 | Health PFAS Unresolved | |
| 208 | Pineville | C+ | 68.3 | 17K | 242 | Health Unresolved | |
| 209 | Paris | C+ | 68.2 | 14K | 189 | Health Unresolved | |
| 210 | Frankfort | C+ | 67.6 | 66K | 156 | Health Unresolved | |
| 211 | Ledbetter | C+ | 67.4 | 3K | 135 | Health PFAS Unresolved | |
| 212 | Greenville | C+ | 67 | 22K | 47 | Health Unresolved | |
| 213 | Benton | C+ | 66.9 | 31K | 239 | Health Unresolved | |
| 214 | Williamsburg | C+ | 66.6 | 16K | 48 | Health PFAS Unresolved | |
| 215 | Ashland | C+ | 65.7 | 53K | 135 | Health PFAS Unresolved | |
| 216 | Clay | C+ | 65.6 | 1K | 42 | Health Unresolved | |
| 217 | Falmouth | C+ | 65.3 | 15K | 81 | Health PFAS Unresolved | |
| 218 | Ft. Campbell | C+ | 65.2 | 43K | 77 | PFAS Unresolved | |
| 219 | Barbourville | C+ | 65.2 | 25K | 290 | Health Unresolved | |
| 220 | Mcdoqwell | C+ | 65 | 15K | 49 | Health Unresolved | |
| 221 | Hodgenville | C | 64.3 | 15K | 86 | Health Unresolved | |
| 222 | Hartford | C | 62.4 | 20K | 207 | Health Unresolved | |
| 223 | Jackson | C | 61.9 | 10K | 137 | Health Unresolved | |
| 224 | Beattyville | C | 61.9 | 8K | 84 | Health PFAS Unresolved | |
| 225 | Manchester | C | 61.5 | 17K | 99 | Health Unresolved | |
| 226 | Calhoun | C | 60 | 2K | 80 | Health Unresolved | |
| 227 | Lynch | C- | 58.2 | 1K | 91 | Health Unresolved | |
| 228 | Smithland | C- | 58.1 | 989 | 105 | Health Unresolved | |
| 229 | Catlettsburg | C- | 57.1 | 13K | 50 | Health PFAS Unresolved | |
| 230 | Murray | C- | 57 | 26K | 339 | Health Unresolved | |
| 231 | Kuttawa | C- | 56.9 | 8K | 64 | Health PFAS Unresolved | |
| 232 | Nicholasville | C- | 56.8 | 51K | 172 | Health Unresolved | |
| 233 | Lewisburg | C- | 56.6 | 3K | 84 | Health Unresolved | |
| 234 | Mayfield | C- | 56.2 | 26K | 515 | Health Unresolved | |
| 235 | Sturgis | C- | 56.1 | 3K | 119 | Health PFAS Unresolved | |
| 236 | Brownsville | D+ | 50.2 | 18K | 164 | Health Unresolved | |
| 237 | Providence | D | 49.5 | 5K | 109 | Health Unresolved | |
| 238 | Livingston | D | 47.4 | 529 | 94 | Unresolved | |
| 239 | Mt Sterling | D | 47 | 29K | 291 | Health Unresolved | |
| 240 | Pikeville | D | 46.8 | 54K | 177 | Health Unresolved | |
| 241 | Neon | D | 46 | 3K | 131 | Health Unresolved | |
| 242 | Martin | D | 46 | 1K | 125 | Health Unresolved | |
| 243 | Milton | D | 45.5 | 5K | 110 | Health Unresolved | |
| 244 | Morganfield | F | 44.5 | 11K | 80 | Health PFAS Unresolved | |
| 245 | Milton | F | 43.5 | 9K | 121 | Health Unresolved | |
| 246 | Baxter | F | 43.3 | 10K | 392 | Health Unresolved |