Iowa Water Quality Rankings
436 cities ranked · Data from EPA SDWIS
Iowa water quality overview
Iowa's drinking water quality is excellent overall, with a state average score of 87.5 out of 100 — 13.3 points above the national average of 74.2. The median city score is 89.6, reflecting how water quality is distributed across the state's 436 ranked cities. 96% of Iowa cities earned an A or B grade, indicating broadly strong water quality infrastructure. Only 5 cities received a failing grade. PFAS "forever chemicals" were detected in 112 of 436 cities (26%). Of those, 7 cities exceed 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. 303 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 Iowa cities scored
Score distribution by range
State vs national average
Water quality across Iowa
Each dot is a city, colored by grade. Size reflects population served. Click any city to view its full report.
Top & bottom cities in Iowa
Best 10 cities
All 436 cities in Iowa
| # | City | Grade | Score | Score | Population | Violations | Issues |
|---|---|---|---|---|---|---|---|
| 1 | Asbury | A+ | 97.8 | 6K | 0 | Zero violations | |
| 2 | Cresco | A+ | 97 | 4K | 15 | Unresolved | |
| 3 | Rockford | A+ | 95.9 | 762 | 5 | Health Unresolved | |
| 4 | Gilman | A+ | 95.9 | 582 | 8 | Health | |
| 5 | Brooklyn | A+ | 95.8 | 15K | 13 | Health Unresolved | |
| 6 | Bancroft | A+ | 95.7 | 711 | 8 | Unresolved | |
| 7 | Evansdale | A+ | 95.4 | 5K | 5 | Unresolved | |
| 8 | Glenwood | A+ | 95.2 | 5K | 27 | Health Unresolved | |
| 9 | West Bend | A+ | 95.2 | 791 | 9 | Health Unresolved | |
| 10 | Brooks | A+ | 95.1 | 3K | 6 | Health | |
| 11 | Sumner | A+ | 95.1 | 2K | 38 | ||
| 12 | Hartley | A+ | 95 | 2K | 0 | Zero violations | |
| 13 | Rolfe | A+ | 95 | 509 | 35 | Unresolved | |
| 14 | Charter Oak | A | 94.8 | 522 | 24 | Health Unresolved | |
| 15 | Lenox | A | 94.7 | 1K | 6 | Unresolved | |
| 16 | Winfield | A | 94.7 | 1K | 5 | Unresolved | |
| 17 | Fairbank | A | 94.5 | 1K | 11 | Health | |
| 18 | Dakota City | A | 94.5 | 769 | 6 | Unresolved | |
| 19 | Montrose | A | 94.5 | 738 | 7 | Health | |
| 20 | Strawberry Point | A | 94.4 | 1K | 6 | Health Unresolved | |
| 21 | Villisca | A | 94.4 | 1K | 6 | Health Unresolved | |
| 22 | Redfield | A | 94.4 | 744 | 8 | Unresolved | |
| 23 | Eagle Grove | A | 94.3 | 4K | 5 | Unresolved | |
| 24 | Monroe | A | 94.3 | 2K | 6 | Health Unresolved | |
| 25 | Dexter | A | 94.3 | 693 | 9 | Unresolved | |
| 26 | Hopkinton | A | 94.3 | 622 | 9 | Unresolved | |
| 27 | Melcher-Dallas | A | 94.2 | 1K | 8 | Health Unresolved | |
| 28 | Colo | A | 94.2 | 853 | 7 | Unresolved | |
| 29 | Ainsworth | A | 94.2 | 511 | 6 | Health Unresolved | |
| 30 | Cascade | A | 94.1 | 2K | 13 | Unresolved | |
| 31 | Prairie City | A | 94.1 | 2K | 8 | Health Unresolved | |
| 32 | Dows | A | 94 | 526 | 7 | Health Unresolved | |
| 33 | Pocahontas | A | 93.9 | 2K | 7 | Health Unresolved | |
| 34 | Central City | A | 93.9 | 1K | 12 | Health Unresolved | |
| 35 | North English | A | 93.9 | 1K | 16 | Unresolved | |
| 36 | Lansing | A | 93.9 | 983 | 6 | Health Unresolved | |
| 37 | Riceville | A | 93.9 | 816 | 43 | Unresolved | |
| 38 | Jesup | A | 93.8 | 3K | 19 | Unresolved | |
| 39 | New Hartford | A | 93.8 | 570 | 6 | Health Unresolved | |
| 40 | Collins | A | 93.8 | 505 | 13 | Health Unresolved | |
| 41 | Elma | A | 93.8 | 505 | 20 | Unresolved | |
| 42 | Keota | A | 93.7 | 897 | 11 | Health Unresolved | |
| 43 | Northwood | A | 93.6 | 2K | 10 | Health Unresolved | |
| 44 | Carson | A | 93.6 | 766 | 7 | Health Unresolved | |
| 45 | Murray | A | 93.6 | 684 | 20 | Health Unresolved | |
| 46 | Huxley | A | 93.5 | 5K | 4 | Health Unresolved | |
| 47 | Logan | A | 93.5 | 1K | 7 | Unresolved | |
| 48 | New Sharon | A | 93.5 | 1K | 12 | Unresolved | |
| 49 | Saint Ansgar | A | 93.5 | 1K | 12 | Health Unresolved | |
| 50 | Hamburg | A | 93.5 | 890 | 25 | Unresolved | |
| 51 | What Cheer | A | 93.5 | 607 | 10 | Health Unresolved | |
| 52 | Story City | A | 93.4 | 3K | 7 | Unresolved | |
| 53 | Hubbard | A | 93.4 | 860 | 10 | Health Unresolved | |
| 54 | Manilla | A | 93.4 | 758 | 9 | Unresolved | |
| 55 | Badger | A | 93.4 | 561 | 13 | Health Unresolved | |
| 56 | Milford | A | 93.3 | 3K | 9 | Unresolved | |
| 57 | Walcott | A | 93.3 | 2K | 6 | Unresolved | |
| 58 | Inwood | A | 93.3 | 928 | 10 | Health Unresolved | |
| 59 | Norwalk | A | 93.2 | 15K | 10 | Health Unresolved | |
| 60 | Denison | A | 93.2 | 12K | 8 | Unresolved | |
| 61 | Graettinger | A | 93.2 | 9K | 9 | Health Unresolved | |
| 62 | Spirit Lake | A | 93.2 | 6K | 5 | Health Unresolved | |
| 63 | Vinton | A | 93.2 | 5K | 8 | Health Unresolved | |
| 64 | Belmond | A | 93.2 | 2K | 16 | Unresolved | |
| 65 | Farley | A | 93.2 | 2K | 9 | Health Unresolved | |
| 66 | State Center | A | 93.2 | 1K | 13 | Health Unresolved | |
| 67 | Clarence | A | 93.2 | 1K | 20 | Health Unresolved | |
| 68 | Sabula | A | 93.2 | 506 | 12 | Health Unresolved | |
| 69 | Durant | A | 93.1 | 2K | 4 | Health | |
| 70 | Van Horne | A | 93.1 | 779 | 11 | Health Unresolved | |
| 71 | Shenandoah | A | 93 | 5K | 17 | Health Unresolved | |
| 72 | West Liberty | A | 93 | 4K | 15 | Health Unresolved | |
| 73 | New London | A | 93 | 2K | 12 | Health Unresolved | |
| 74 | Stuart | A | 93 | 2K | 22 | Health Unresolved | |
| 75 | Coon Rapids | A | 93 | 1K | 1 | ||
| 76 | Odebolt | A | 93 | 994 | 14 | Health Unresolved | |
| 77 | Walnut | A | 93 | 768 | 16 | Health Unresolved | |
| 78 | Breda | A | 93 | 500 | 15 | Unresolved | |
| 79 | Eldora | A | 92.9 | 3K | 3 | ||
| 80 | Grand Junction | A | 92.9 | 725 | 7 | Health Unresolved | |
| 81 | Radcliffe | A | 92.9 | 561 | 28 | Health Unresolved | |
| 82 | Marcus | A | 92.8 | 1K | 15 | Health Unresolved | |
| 83 | Clive | A | 92.7 | 19K | 6 | Health Unresolved | |
| 84 | Toledo | A | 92.7 | 2K | 19 | Health Unresolved | |
| 85 | Rockwell | A | 92.6 | 1K | 12 | Health Unresolved | |
| 86 | Sully | A | 92.6 | 881 | 26 | Health Unresolved | |
| 87 | Richland | A | 92.6 | 542 | 17 | Health Unresolved | |
| 88 | Anita | A | 92.5 | 972 | 7 | Health Unresolved | |
| 89 | Conrad | A | 92.4 | 1K | 5 | Health Unresolved | |
| 90 | Melbourne | A | 92.4 | 765 | 5 | Health Unresolved | |
| 91 | Alburnett | A | 92.4 | 675 | 25 | Health Unresolved | |
| 92 | Ely | A | 92.3 | 2K | 7 | Unresolved | |
| 93 | Epworth | A | 92.3 | 2K | 5 | Unresolved | |
| 94 | Walker | A | 92.3 | 688 | 8 | Unresolved | |
| 95 | Bondurant | A | 92.2 | 9K | 6 | Health Unresolved | |
| 96 | Nevada | A | 92.2 | 7K | 22 | Health Unresolved | |
| 97 | Mount Vernon | A | 92.2 | 5K | 9 | Unresolved | |
| 98 | New Hampton | A | 92.2 | 3K | 6 | Unresolved | |
| 99 | Hawarden | A | 92.2 | 3K | 31 | Health Unresolved | |
| 100 | Winthrop | A | 92.2 | 840 | 10 | Unresolved | |
| 101 | Lake View | A | 92.1 | 1K | 11 | Health Unresolved | |
| 102 | Gladbrook | A | 92.1 | 799 | 10 | Health Unresolved | |
| 103 | Dayton | A | 92.1 | 772 | 14 | Health Unresolved | |
| 104 | Brighton | A | 92.1 | 600 | 11 | Unresolved | |
| 105 | Palo | A | 92 | 2K | 14 | Health Unresolved | |
| 106 | Calmar | A | 92 | 1K | 8 | Health Unresolved | |
| 107 | Wayland | A | 92 | 966 | 19 | Health Unresolved | |
| 108 | Olin | A | 92 | 651 | 12 | Health Unresolved | |
| 109 | Lake Park | A | 91.9 | 1K | 11 | Health Unresolved | |
| 110 | Sloan | A | 91.9 | 1K | 8 | Unresolved | |
| 111 | Wellsburg | A | 91.9 | 721 | 25 | Health Unresolved | |
| 112 | Sheldon | A | 91.8 | 6K | 5 | Unresolved | |
| 113 | Sergeant Bluff | A | 91.8 | 5K | 5 | Health Unresolved | |
| 114 | Larchwood | A | 91.8 | 926 | 19 | Health Unresolved | |
| 115 | Janesville | A | 91.7 | 1K | 12 | Health Unresolved | |
| 116 | Jefferson | A | 91.6 | 4K | 9 | Health Unresolved | |
| 117 | Albia | A | 91.6 | 4K | 24 | Health Unresolved | |
| 118 | Garner | A | 91.6 | 3K | 3 | Unresolved | |
| 119 | Sac City | A | 91.6 | 2K | 3 | Unresolved | |
| 120 | Sigourney | A | 91.6 | 2K | 3 | Unresolved | |
| 121 | Oakland | A | 91.6 | 2K | 3 | Unresolved | |
| 122 | Aurelia | A | 91.6 | 968 | 3 | Unresolved | |
| 123 | Garnavillo | A | 91.6 | 763 | 4 | Unresolved | |
| 124 | Schaller | A | 91.6 | 729 | 9 | Health Unresolved | |
| 125 | Whiting | A | 91.6 | 727 | 4 | Unresolved | |
| 126 | Lakeside | A | 91.6 | 700 | 3 | Unresolved | |
| 127 | Goldfield | A | 91.6 | 634 | 3 | Unresolved | |
| 128 | Grundy Center | A | 91.5 | 3K | 3 | Health Unresolved | |
| 129 | Traer | A | 91.5 | 2K | 12 | Unresolved | |
| 130 | Buffalo Center | A | 91.5 | 857 | 4 | Unresolved | |
| 131 | Correctionville | A | 91.5 | 766 | 4 | Health Unresolved | |
| 132 | Morning Sun | A | 91.5 | 752 | 4 | Health Unresolved | |
| 133 | Audubon | A | 91.4 | 2K | 4 | Health Unresolved | |
| 134 | Earlham | A | 91.4 | 1K | 23 | Health Unresolved | |
| 135 | Schleswig | A | 91.4 | 803 | 36 | Health Unresolved | |
| 136 | Mount Pleasant | A | 91.3 | 11K | 27 | Health Unresolved | |
| 137 | Perry | A | 91.3 | 8K | 17 | Health Unresolved | |
| 138 | Oelwein | A | 91.3 | 6K | 9 | Health Unresolved | |
| 139 | West Union | A | 91.3 | 3K | 4 | Health Unresolved | |
| 140 | Elk Run Heights | A | 91.3 | 1K | 6 | Health Unresolved | |
| 141 | Keosauqua | A | 91.3 | 961 | 11 | Health Unresolved | |
| 142 | Adair | A | 91.3 | 809 | 41 | Health Unresolved | |
| 143 | Anthon | A | 91.3 | 545 | 7 | Unresolved | |
| 144 | Newton | A | 91.2 | 17K | 8 | Health Unresolved | |
| 145 | Humboldt | A | 91.2 | 5K | 3 | Health Unresolved | |
| 146 | Mount Ayr | A | 91.2 | 2K | 63 | Health Unresolved | |
| 147 | Crescent | A | 91.2 | 778 | 14 | Health Unresolved | |
| 148 | Grand Mound | A | 91.2 | 615 | 6 | Unresolved | |
| 149 | Delmar | A | 91.2 | 542 | 3 | Health Unresolved | |
| 150 | Lake Mills | A | 91.1 | 2K | 7 | Health Unresolved | |
| 151 | Lake City | A | 91.1 | 2K | 48 | Unresolved | |
| 152 | Sanborn | A | 91.1 | 1K | 33 | Unresolved | |
| 153 | Fredericksburg | A | 91.1 | 987 | 7 | Unresolved | |
| 154 | Le Grand | A | 91.1 | 910 | 9 | Health Unresolved | |
| 155 | Merrill | A | 91.1 | 717 | 58 | Health Unresolved | |
| 156 | Wyoming | A | 91.1 | 523 | 8 | Unresolved | |
| 157 | Estherville | A | 91 | 6K | 2 | Unresolved | |
| 158 | Pleasantville | A | 91 | 2K | 4 | Health Unresolved | |
| 159 | Laurens | A | 91 | 1K | 3 | Unresolved | |
| 160 | Mapleton | A | 91 | 1K | 23 | Health Unresolved | |
| 161 | Lawton | A | 91 | 943 | 10 | Health Unresolved | |
| 162 | Kellogg | A | 91 | 617 | 7 | Health Unresolved | |
| 163 | Adel | A | 90.9 | 6K | 13 | Health Unresolved | |
| 164 | Preston | A | 90.9 | 949 | 3 | Health Unresolved | |
| 165 | Independence | A | 90.8 | 6K | 11 | Health Unresolved | |
| 166 | Long Grove | A | 90.8 | 988 | 61 | Health Unresolved | |
| 167 | Okoboji | A | 90.7 | 793 | 18 | Health Unresolved | |
| 168 | Hinton | A | 90.6 | 935 | 13 | Health Unresolved | |
| 169 | Le Mars | A | 90.5 | 11K | 17 | Health Unresolved | |
| 170 | Manchester | A | 90.5 | 5K | 3 | Health Unresolved | |
| 171 | Camanche | A | 90.5 | 5K | 17 | Unresolved | |
| 172 | Waukon | A | 90.5 | 4K | 4 | Unresolved | |
| 173 | Denver | A | 90.5 | 2K | 14 | Health Unresolved | |
| 174 | Dallas Center | A | 90.5 | 2K | 2 | Unresolved | |
| 175 | Clarksville | A | 90.5 | 1K | 8 | Health Unresolved | |
| 176 | Arcadia | A | 90.5 | 525 | 6 | Unresolved | |
| 177 | Mitchellville | A | 90.4 | 3K | 11 | Health Unresolved | |
| 178 | Guttenberg | A | 90.4 | 2K | 8 | Unresolved | |
| 179 | Dike | A | 90.4 | 1K | 5 | Health Unresolved | |
| 180 | Paullina | A | 90.4 | 996 | 6 | Health Unresolved | |
| 181 | Milo | A | 90.4 | 788 | 25 | Health Unresolved | |
| 182 | Greenfield | A | 90.3 | 4K | 23 | Health Unresolved | |
| 183 | La Porte City | A | 90.3 | 2K | 11 | Health Unresolved | |
| 184 | Truro | A | 90.3 | 525 | 18 | Health Unresolved | |
| 185 | Spencer | A | 90.2 | 18K | 16 | Health Unresolved | |
| 186 | Dyersville | A | 90.2 | 4K | 43 | Health Unresolved | |
| 187 | Decatur City | A | 90.2 | 1K | 5 | Health Unresolved | |
| 188 | Newell | A | 90.2 | 906 | 10 | Unresolved | |
| 189 | Farmington | A | 90.2 | 601 | 30 | Health Unresolved | |
| 190 | Roland | A | 90.1 | 1K | 6 | Health Unresolved | |
| 191 | Alden | A | 90.1 | 763 | 11 | Health Unresolved | |
| 192 | Albert City | A | 90.1 | 677 | 12 | Unresolved | |
| 193 | Webster City | A | 90 | 8K | 8 | Health Unresolved | |
| 194 | Avoca | A | 90 | 6K | 15 | Health Unresolved | |
| 195 | Luther | A | 90 | 5K | 20 | Health Unresolved | |
| 196 | Onawa | A- | 90 | 3K | 2 | Unresolved | |
| 197 | Springville | A | 90 | 1K | 18 | Unresolved | |
| 198 | Alton | A | 90 | 1K | 12 | Health Unresolved | |
| 199 | Kingsley | A- | 89.9 | 1K | 11 | Health Unresolved | |
| 200 | Gowrie | A- | 89.9 | 954 | 7 | Health Unresolved | |
| 201 | Newhall | A- | 89.9 | 881 | 15 | Health Unresolved | |
| 202 | Exira | A- | 89.9 | 764 | 7 | Health Unresolved | |
| 203 | Hedrick | A- | 89.9 | 728 | 9 | Unresolved | |
| 204 | Moulton | A- | 89.9 | 607 | 2 | Health Unresolved | |
| 205 | Waukee | A- | 89.8 | 33K | 26 | Health Unresolved | |
| 206 | Fort Madison | A- | 89.8 | 23K | 37 | Health Unresolved | |
| 207 | Clear Lake | A- | 89.8 | 8K | 22 | Health Unresolved | |
| 208 | May City | A- | 89.8 | 7K | 3 | Unresolved | |
| 209 | South Amana | A- | 89.8 | 3K | 15 | Health Unresolved | |
| 210 | Wall Lake | A- | 89.8 | 2K | 30 | Health Unresolved | |
| 211 | Ogden | A- | 89.8 | 2K | 14 | Health Unresolved | |
| 212 | Van Meter | A- | 89.8 | 2K | 46 | Health Unresolved | |
| 213 | Essex | A- | 89.8 | 722 | 27 | Health Unresolved | |
| 214 | Battle Creek | A- | 89.8 | 700 | 33 | Health Unresolved | |
| 215 | Harlan | A- | 89.7 | 5K | 1 | Unresolved | |
| 216 | Ida Grove | A- | 89.7 | 2K | 18 | Health Unresolved | |
| 217 | Wheatland | A- | 89.7 | 775 | 12 | Health Unresolved | |
| 218 | Kanawha | A- | 89.7 | 658 | 2 | Unresolved | |
| 219 | Storm Lake | A- | 89.6 | 12K | 8 | Health Unresolved | |
| 220 | Tipton | A- | 89.6 | 3K | 2 | Unresolved | |
| 221 | Wilton | A- | 89.6 | 3K | 4 | Unresolved | |
| 222 | Hudson | A- | 89.6 | 3K | 4 | Unresolved | |
| 223 | Alta | A- | 89.6 | 2K | 2 | Health Unresolved | |
| 224 | Manly | A- | 89.6 | 1K | 2 | Health Unresolved | |
| 225 | George | A- | 89.6 | 1K | 26 | Health Unresolved | |
| 226 | Mechanicsville | A- | 89.6 | 1K | 13 | Unresolved | |
| 227 | Eldon | A- | 89.6 | 927 | 28 | Health Unresolved | |
| 228 | West Point | A- | 89.6 | 921 | 37 | Health Unresolved | |
| 229 | Earlville | A- | 89.6 | 724 | 31 | Health Unresolved | |
| 230 | Nashua | A- | 89.5 | 2K | 21 | Unresolved | |
| 231 | Holstein | A- | 89.5 | 2K | 12 | Health Unresolved | |
| 232 | Greene | A- | 89.5 | 994 | 3 | Unresolved | |
| 233 | Edgewood | A- | 89.5 | 939 | 3 | Health Unresolved | |
| 234 | Cambridge | A- | 89.5 | 832 | 10 | Health Unresolved | |
| 235 | Lowden | A- | 89.4 | 807 | 4 | Unresolved | |
| 236 | Ossian | A- | 89.4 | 802 | 3 | Unresolved | |
| 237 | Fairfax | A- | 89.3 | 3K | 12 | Health Unresolved | |
| 238 | Gilbertville | A- | 89.3 | 794 | 20 | Unresolved | |
| 239 | Wellman | A- | 89.2 | 2K | 45 | Health Unresolved | |
| 240 | Bedford | A- | 89.2 | 2K | 39 | Health Unresolved | |
| 241 | Winterset | A- | 89.1 | 5K | 31 | Health | |
| 242 | Danville | A- | 89.1 | 923 | 26 | Health Unresolved | |
| 243 | Cedar Falls | A- | 89 | 41K | 14 | Health Unresolved | |
| 244 | Manning | A- | 89 | 5K | 38 | Health Unresolved | |
| 245 | Clarion | A- | 89 | 3K | 4 | Health Unresolved | |
| 246 | Bellevue | A- | 89 | 3K | 36 | Health Unresolved | |
| 247 | Coggon | A- | 89 | 701 | 41 | Unresolved | |
| 248 | Indianola | A- | 88.9 | 36K | 18 | Health Unresolved | |
| 249 | Charles City | A- | 88.9 | 7K | 4 | Unresolved | |
| 250 | Columbus Junction | A- | 88.9 | 2K | 7 | Unresolved | |
| 251 | Remsen | A- | 88.9 | 2K | 12 | Health Unresolved | |
| 252 | Shellsburg | A- | 88.9 | 1K | 53 | Health Unresolved | |
| 253 | Primghar | A- | 88.9 | 896 | 4 | Unresolved | |
| 254 | Peosta | A- | 88.8 | 3K | 65 | Health Unresolved | |
| 255 | Atkins | A- | 88.7 | 2K | 32 | Health Unresolved | |
| 256 | Tabor | A- | 88.7 | 1K | 6 | Unresolved | |
| 257 | Elkhart | A- | 88.7 | 882 | 12 | Unresolved | |
| 258 | Fontanelle | A- | 88.7 | 670 | 2 | Unresolved | |
| 259 | Seymour | A- | 88.6 | 637 | 4 | Unresolved | |
| 260 | Red Oak | A- | 88.5 | 9K | 79 | Health Unresolved | |
| 261 | Shelby | A- | 88.5 | 727 | 18 | Health Unresolved | |
| 262 | Everly | A- | 88.5 | 575 | 66 | Health Unresolved | |
| 263 | Marshalltown | A- | 88.4 | 29K | 45 | Health Unresolved | |
| 264 | Emmetsburg | A- | 88.3 | 4K | 3 | Health Unresolved | |
| 265 | Akron | A- | 88.3 | 2K | 15 | Health Unresolved | |
| 266 | Maquoketa | A- | 88.2 | 6K | 38 | Health Unresolved | |
| 267 | Ackley | A- | 88.2 | 2K | 8 | Health Unresolved | |
| 268 | Dysart | A- | 88.2 | 1K | 4 | Unresolved | |
| 269 | Fayette | A- | 88.2 | 1K | 2 | Unresolved | |
| 270 | Blairstown | A- | 88.1 | 738 | 9 | Health Unresolved | |
| 271 | Williamsburg | A- | 88 | 3K | 15 | Health Unresolved | |
| 272 | Dumont | A- | 88 | 635 | 4 | Health Unresolved | |
| 273 | Sutherland | A- | 87.9 | 3K | 21 | Health Unresolved | |
| 274 | Colfax | A- | 87.9 | 2K | 12 | Health Unresolved | |
| 275 | Baxter | A- | 87.9 | 1K | 8 | Unresolved | |
| 276 | Montezuma | A- | 87.8 | 3K | 14 | Unresolved | |
| 277 | Aplington | A- | 87.8 | 1K | 11 | Health Unresolved | |
| 278 | Minden | A- | 87.8 | 598 | 10 | Health Unresolved | |
| 279 | Ireton | A- | 87.7 | 6K | 19 | Health Unresolved | |
| 280 | Shell Rock | A- | 87.7 | 1K | 2 | Unresolved | |
| 281 | Glidden | A- | 87.7 | 1K | 7 | Unresolved | |
| 282 | Waterloo | A- | 87.6 | 70K | 23 | Health Unresolved | |
| 283 | Sibley | A- | 87.6 | 3K | 4 | Unresolved | |
| 284 | Minburn | A- | 87.5 | 13K | 14 | Health Unresolved | |
| 285 | Cherokee | A- | 87.5 | 10K | 45 | Health Unresolved | |
| 286 | Hampton | A- | 87.5 | 4K | 36 | Health Unresolved | |
| 287 | Hull | A- | 87.5 | 2K | 3 | Health Unresolved | |
| 288 | Monona | A- | 87.5 | 1K | 4 | Unresolved | |
| 289 | Treynor | A- | 87.5 | 1K | 7 | ||
| 290 | Allison | A- | 87.5 | 966 | 4 | Unresolved | |
| 291 | Boyden | A- | 87.5 | 701 | 5 | Unresolved | |
| 292 | Keokuk | A- | 87.4 | 10K | 8 | Unresolved | |
| 293 | Sioux Center | A- | 87.4 | 8K | 4 | Unresolved | |
| 294 | Corydon | A- | 87.4 | 2K | 149 | Unresolved | |
| 295 | Hazleton | A- | 87.4 | 803 | 37 | Health Unresolved | |
| 296 | Elgin | A- | 87.4 | 685 | 7 | Unresolved | |
| 297 | Atlantic | A- | 87.3 | 7K | 2 | Unresolved | |
| 298 | Stratford | A- | 87.3 | 7K | 13 | Health Unresolved | |
| 299 | Ventura | A- | 87.3 | 716 | 3 | Unresolved | |
| 300 | Keystone | A- | 87.3 | 599 | 33 | Health Unresolved | |
| 301 | Pella | A- | 87.2 | 11K | 85 | Health Unresolved | |
| 302 | Corning | A- | 87.2 | 2K | 129 | Health Unresolved | |
| 303 | Dunkerton | A- | 87.2 | 1K | 30 | Health Unresolved | |
| 304 | Sheffield | A- | 87.1 | 1K | 8 | Health Unresolved | |
| 305 | Maxwell | A- | 87.1 | 859 | 10 | Unresolved | |
| 306 | Whittemore | A- | 87.1 | 522 | 10 | Unresolved | |
| 307 | Grimes | A- | 87 | 17K | 24 | Health Unresolved | |
| 308 | Orange City | A- | 87 | 6K | 5 | Unresolved | |
| 309 | Carlisle | A- | 87 | 4K | 11 | Unresolved | |
| 310 | Titonka | A- | 87 | 511 | 4 | Unresolved | |
| 311 | Panora | A- | 86.9 | 4K | 100 | Health Unresolved | |
| 312 | Norway | A- | 86.9 | 2K | 20 | Health Unresolved | |
| 313 | Manson | A- | 86.9 | 2K | 33 | Health Unresolved | |
| 314 | Urbana | A- | 86.7 | 2K | 1 | Unresolved | |
| 315 | Griswold | A- | 86.7 | 1K | 13 | Health Unresolved | |
| 316 | Readlyn | A- | 86.7 | 845 | 1 | Unresolved | |
| 317 | Agency | A- | 86.7 | 620 | 1 | Unresolved | |
| 318 | Swea City | A- | 86.7 | 584 | 1 | Unresolved | |
| 319 | Postville | A- | 86.6 | 3K | 8 | Unresolved | |
| 320 | Dunlap | A- | 86.6 | 1K | 16 | Health Unresolved | |
| 321 | Carter Lake | A- | 86.5 | 5K | 20 | Health Unresolved | |
| 322 | Bloomfield | A- | 86.4 | 3K | 88 | Health Unresolved | |
| 323 | Leon | A- | 86.4 | 2K | 27 | Health Unresolved | |
| 324 | Hills | A- | 86.4 | 863 | 2 | Unresolved | |
| 325 | Ellsworth | A- | 86.3 | 514 | 14 | Health Unresolved | |
| 326 | Buffalo | A- | 86.2 | 1K | 74 | Health Unresolved | |
| 327 | Oskaloosa | A- | 86 | 23K | 37 | Health Unresolved | |
| 328 | Tama | A- | 86 | 8K | 44 | Health Unresolved | |
| 329 | Mediapolis | A- | 86 | 2K | 15 | Health Unresolved | |
| 330 | Marion | A- | 85.9 | 44K | 98 | Health Unresolved | |
| 331 | Zearing | A- | 85.9 | 528 | 28 | Health Unresolved | |
| 332 | Granger | A- | 85.8 | 2K | 7 | Health Unresolved | |
| 333 | Arnolds Park | A- | 85.7 | 1K | 1 | Unresolved | |
| 334 | Moville | A- | 85.6 | 2K | 75 | Health Unresolved | |
| 335 | Riverside | A- | 85.6 | 1K | 31 | Health Unresolved | |
| 336 | Tripoli | A- | 85.6 | 1K | 2 | Health Unresolved | |
| 337 | Guthrie Center | A- | 85.5 | 2K | 3 | Health Unresolved | |
| 338 | Clinton | A- | 85.4 | 25K | 2 | Unresolved | |
| 339 | Madrid | A- | 85.4 | 5K | 7 | Health Unresolved | |
| 340 | Ruthven | A- | 85.4 | 779 | 1 | Unresolved | |
| 341 | Mason City | A- | 85.3 | 27K | 143 | Health Unresolved | |
| 342 | Fairfield | A- | 85.3 | 10K | 28 | Health Unresolved | |
| 343 | Creston | A- | 85.1 | 28K | 27 | Health Unresolved | |
| 344 | Des Moines | B+ | 85 | 250K | 35 | Health Unresolved | |
| 345 | Pomeroy | A- | 85 | 671 | 9 | Health Unresolved | |
| 346 | Middle Amana | B+ | 84.9 | 1K | 6 | Health Unresolved | |
| 347 | Armstrong | B+ | 84.9 | 930 | 26 | Health Unresolved | |
| 348 | Rock Valley | B+ | 84.8 | 6K | 34 | Health Unresolved | |
| 349 | Gilbert | B+ | 84.8 | 1K | 40 | Health Unresolved | |
| 350 | Mcgregor | B+ | 84.8 | 902 | 21 | Health Unresolved | |
| 351 | Tiffin | B+ | 84.7 | 5K | 25 | Health Unresolved | |
| 352 | Kalona | B+ | 84.7 | 3K | 26 | Health Unresolved | |
| 353 | Elk Horn | B+ | 84.7 | 631 | 9 | Unresolved | |
| 354 | Malvern | B+ | 84.6 | 1K | 17 | Health Unresolved | |
| 355 | Centerville | B+ | 84.5 | 38K | 75 | Health Unresolved | |
| 356 | Burlington | B+ | 84.5 | 35K | 26 | Health Unresolved | |
| 357 | Polk City | B+ | 84.5 | 7K | 2 | Unresolved | |
| 358 | Nora Springs | B+ | 84.5 | 1K | 3 | Health Unresolved | |
| 359 | Lamoni | B+ | 84.4 | 2K | 27 | Health Unresolved | |
| 360 | Fonda | B+ | 84.3 | 636 | 6 | Health Unresolved | |
| 361 | Moravia | B+ | 84.1 | 637 | 15 | Unresolved | |
| 362 | Ottumwa | B+ | 84 | 43K | 31 | Health Unresolved | |
| 363 | Osage | B+ | 84 | 4K | 13 | Health PFAS Unresolved | |
| 364 | Britt | B+ | 84 | 2K | 3 | Unresolved | |
| 365 | Altoona | B+ | 83.9 | 27K | 37 | Health Unresolved | |
| 366 | Waverly | B+ | 83.7 | 48K | 30 | Health PFAS Unresolved | |
| 367 | West Burlington | B+ | 83.7 | 4K | 31 | Health PFAS Unresolved | |
| 368 | Stanwood | B+ | 83.6 | 637 | 4 | Unresolved | |
| 369 | Woodbine | B+ | 83.5 | 2K | 8 | Health Unresolved | |
| 370 | Sioux Rapids | B+ | 83.4 | 920 | 25 | Health Unresolved | |
| 371 | Eldridge | B+ | 83.2 | 9K | 51 | Health Unresolved | |
| 372 | Doon | B+ | 83.1 | 2K | 69 | Health Unresolved | |
| 373 | Clermont | B+ | 83.1 | 586 | 31 | Health Unresolved | |
| 374 | Delhi | B+ | 83 | 509 | 110 | Unresolved | |
| 375 | Council Bluffs | B+ | 82.9 | 66K | 45 | Health Unresolved | |
| 376 | Donnellson | B+ | 82.7 | 885 | 48 | Health Unresolved | |
| 377 | Elkader | B+ | 82.6 | 1K | 36 | Unresolved | |
| 378 | Slater | B+ | 82.5 | 2K | 11 | Health Unresolved | |
| 379 | Rockwell City | B+ | 82.4 | 3K | 22 | Health Unresolved | |
| 380 | Washington | B+ | 82.2 | 7K | 96 | Health Unresolved | |
| 381 | Rock Rapids | B+ | 82.2 | 6K | 36 | Health Unresolved | |
| 382 | De Witt | B+ | 81.8 | 6K | 123 | Health Unresolved | |
| 383 | Neola | B+ | 81.8 | 906 | 35 | Health Unresolved | |
| 384 | West Des Moines | B+ | 81.6 | 70K | 31 | Health Unresolved | |
| 385 | Parkersburg | B+ | 81.6 | 2K | 3 | Unresolved | |
| 386 | Ames | B+ | 81.5 | 97K | 70 | Health Unresolved | |
| 387 | Johnston | B+ | 80.9 | 25K | 45 | Health Unresolved | |
| 388 | Hospers | B+ | 80.8 | 4K | 25 | Health Unresolved | |
| 389 | Lisbon | B+ | 80.8 | 2K | 86 | Health Unresolved | |
| 390 | Lone Tree | B+ | 80.6 | 1K | 17 | Health Unresolved | |
| 391 | Decorah | B+ | 80.5 | 9K | 82 | Health Unresolved | |
| 392 | Wapello | B+ | 80.5 | 2K | 94 | Health Unresolved | |
| 393 | Early | B+ | 80.5 | 587 | 30 | Health Unresolved | |
| 394 | Reinbeck | B+ | 80.4 | 2K | 8 | Health Unresolved | |
| 395 | Urbandale | B+ | 80.2 | 46K | 8 | Unresolved | |
| 396 | Belle Plaine | B+ | 80.1 | 2K | 10 | Health Unresolved | |
| 397 | Carroll | B | 79.8 | 10K | 2 | Unresolved | |
| 398 | Forest City | B | 79.8 | 4K | 94 | Health Unresolved | |
| 399 | Center Point | B | 79.8 | 3K | 43 | Health Unresolved | |
| 400 | Iowa Falls | B | 79.7 | 5K | 15 | Health Unresolved | |
| 401 | West Branch | B | 79.3 | 3K | 18 | Unresolved | |
| 402 | Knoxville | B | 79.2 | 15K | 8 | Health Unresolved | |
| 403 | Jewell | B | 79.2 | 1K | 4 | Unresolved | |
| 404 | Clarinda | B | 78.8 | 9K | 78 | Health Unresolved | |
| 405 | Algona | B | 78.8 | 6K | 67 | Health Unresolved | |
| 406 | Woodward | B | 78.8 | 6K | 46 | Health Unresolved | |
| 407 | Princeton | B | 78.8 | 981 | 67 | Health Unresolved | |
| 408 | Boone | B | 78.7 | 13K | 44 | Health Unresolved | |
| 409 | Sidney | B | 78.4 | 1K | 21 | Health Unresolved | |
| 410 | Osceola | B | 78.2 | 10K | 39 | Health Unresolved | |
| 411 | De Soto | B | 78.2 | 960 | 25 | Health Unresolved | |
| 412 | Ankeny | B | 77.7 | 78K | 99 | Health Unresolved | |
| 413 | Sioux City | B | 77.3 | 86K | 35 | Health PFAS Unresolved | |
| 414 | Coralville | B | 77.3 | 24K | 104 | Health Unresolved | |
| 415 | Scranton | B | 76.2 | 504 | 21 | Health Lead Unresolved | |
| 416 | Anamosa | B- | 74.8 | 6K | 35 | Health Unresolved | |
| 417 | Chariton | B- | 74.4 | 4K | 98 | Health Unresolved | |
| 418 | Hiawatha | B- | 73.2 | 7K | 64 | Health Unresolved | |
| 419 | Marengo | B- | 71.1 | 2K | 55 | Health Unresolved | |
| 420 | North Liberty | B- | 70 | 21K | 120 | Health Unresolved | |
| 421 | Victor | C+ | 68.7 | 875 | 19 | Health Lead Unresolved | |
| 422 | Missouri Valley | C+ | 66.3 | 3K | 79 | Health Unresolved | |
| 423 | Bettendorf | C+ | 65.6 | 929 | 173 | Health Unresolved | |
| 424 | Oxford | C+ | 65.2 | 1K | 114 | Health Unresolved | |
| 425 | Blue Grass | C | 60.6 | 2K | 363 | Health Unresolved | |
| 426 | Davenport | C- | 55 | 148K | 143 | Health PFAS Unresolved | |
| 427 | Grinnell | D+ | 54.5 | 10K | 23 | Health Unresolved | |
| 428 | Fort Dodge | D+ | 50.4 | 27K | 271 | Health Unresolved | |
| 429 | Monticello | D | 46 | 4K | 265 | Health Unresolved | |
| 430 | Cedar Rapids | D | 45.5 | 144K | 365 | Health Unresolved | |
| 431 | Walford | D | 45 | 728 | 98 | Health Unresolved | |
| 432 | Solon | F | 44 | 4K | 364 | Health Unresolved | |
| 433 | Swisher | F | 43.1 | 724 | 119 | Health Unresolved | |
| 434 | Dubuque | F | 42.5 | 63K | 354 | Health PFAS Unresolved | |
| 435 | Iowa City | F | 42 | 101K | 691 | Health Unresolved | |
| 436 | Muscatine | F | 36.9 | 28K | 320 | Health PFAS Unresolved |