Guest, Sign inJoin
VH with templeVestavia Hills, #1 on this list · Photo: Sharon Phelan Evans · CC BY-SA 3.0
Alabama rankings · Schools

Towns with the best schools in Alabama

Vestavia Hills ranks first on schools among Alabama’s 187 towns of 2,500+; 49 of the 187 grade A− or better (schools are graded within each state).

The Schools grade: state test results and graduation rates of the districts serving each town, compared with the state’s other districts (U.S. Department of Education). How grades work

#1

Vestavia Hills

Jefferson County · 38,306 people
A+

Schools grade, graded within the state·Overall A · #10 of 187 in AL

#2

Mountain Brook

Jefferson County · 21,661 people
A+

Schools grade, graded within the state·Overall A · #6 of 187 in AL

#3

Trussville

Jefferson County · 27,273 people
A+

Schools grade, graded within the state·Overall A− · #21 of 187 in AL

All 187 towns

Schools grade, best first (graded within Alabama). Towns with the same score share a rank (T = tied; 86 towns here); the overall grade and state rank are beside each.

187 towns ranked. Not here? See why a town may be missing.

#TownGradeOverall
1Vestavia HillsJefferson County · 38,306 peopleA+graded within the state·Overall A · #10 of 187
2Mountain BrookJefferson County · 21,661 peopleA+graded within the state·Overall A · #6 of 187
3TrussvilleJefferson County · 27,273 peopleA+graded within the state·Overall A− · #21 of 187
4SaralandMobile County · 16,652 peopleA+graded within the state·Overall B− · #64 of 187
5MadisonMadison County · 67,968 peopleA+graded within the state·Overall A · #3 of 187
6HomewoodJefferson County · 28,118 peopleA+graded within the state·Overall B+ · #36 of 187
7HooverJefferson County · 93,550 peopleA+graded within the state·Overall A− · #19 of 187
8HartselleMorgan County · 16,312 peopleAgraded within the state·Overall B+ · #37 of 187
9AuburnLee County · 85,113 peopleAgraded within the state·Overall A− · #26 of 187
10Muscle ShoalsColbert County · 17,666 peopleAgraded within the state·Overall B · #49 of 187
11PiedmontCalhoun County · 4,696 peopleAgraded within the state·Overall C− · #115 of 187
12Gulf ShoresBaldwin County · 17,394 peopleAgraded within the state·Overall C+ · #74 of 187
13ArabMarshall County · 9,061 peopleAgraded within the state·Overall C+ · #69 of 187
14OneontaBlount County · 7,022 peopleAgraded within the state·Overall B− · #65 of 187
15Orange BeachBaldwin County · 8,798 peopleAgraded within the state·Overall B · #53 of 187
16WinfieldMarion County · 4,842 peopleAgraded within the state·Overall C · #83 of 187
17JacksonvilleCalhoun County · 14,400 peopleAgraded within the state·Overall C+ · #79 of 187
18Pike RoadMontgomery County · 11,899 peopleAgraded within the state·Overall B+ · #33 of 187
19AlabasterShelby County · 34,748 peopleAgraded within the state·Overall A− · #22 of 187
20GenevaGeneva County · 4,307 peopleAgraded within the state·Overall C+ · #71 of 187
21JasperWalker County · 14,585 peopleA−graded within the state·Overall B− · #66 of 187
22OxfordCalhoun County · 22,199 peopleA−graded within the state·Overall C · #96 of 187
T23Brook Highlandunincorporated, Shelby County · 8,146 peopleA−graded within the state·Overall A− · #16 of 187
T23CaleraShelby County · 18,992 peopleA−graded within the state·Overall B+ · #40 of 187
T23ChelseaShelby County · 17,716 peopleA−graded within the state·Overall A · #12 of 187
T23ColumbianaShelby County · 5,106 peopleA−graded within the state·Overall B · #46 of 187
T23Eagle Pointunincorporated, Shelby County · 3,110 peopleA−graded within the state·Overall A+ · #1 of 187
T23Highland Lakesunincorporated, Shelby County · 5,866 peopleA−graded within the state·Overall A− · #18 of 187
T23Indian Springs VillageShelby County · 2,553 peopleA−graded within the state·Overall A · #7 of 187
T23Meadowbrookunincorporated, Shelby County · 9,117 peopleA−graded within the state·Overall A · #9 of 187
T23MontevalloShelby County · 7,872 peopleA−graded within the state·Overall A− · #20 of 187
32CullmanCullman County · 20,799 peopleA−graded within the state·Overall C+ · #72 of 187
T33Harvestunincorporated, Madison County · 5,955 peopleA−graded within the state·Overall A · #8 of 187
T33Hazel Greenunincorporated, Madison County · 3,940 peopleA−graded within the state·Overall A · #5 of 187
T33Meridianvilleunincorporated, Madison County · 11,150 peopleA−graded within the state·Overall A · #13 of 187
T33Moores Millunincorporated, Madison County · 6,378 peopleA−graded within the state·Overall B+ · #38 of 187
T33New HopeMadison County · 3,054 peopleA−graded within the state·Overall A− · #31 of 187
T33Owens Cross RoadsMadison County · 3,334 peopleA−graded within the state·Overall B+ · #34 of 187
T33TrianaMadison County · 5,244 peopleA−graded within the state·Overall A · #11 of 187
40Fort PayneDeKalb County · 15,189 peopleA−graded within the state·Overall C · #81 of 187
41HartfordGeneva County · 2,801 peopleA−graded within the state·Overall B · #52 of 187
42HaleyvilleWinston County · 4,303 peopleA−graded within the state·Overall C · #98 of 187
43BrewtonEscambia County · 5,113 peopleA−graded within the state·Overall D · #135 of 187
44EnterpriseCoffee County · 31,211 peopleA−graded within the state·Overall C− · #114 of 187
45GuntersvilleMarshall County · 9,394 peopleA−graded within the state·Overall C− · #108 of 187
46SatsumaMobile County · 6,851 peopleA−graded within the state·Overall B · #44 of 187
47AndalusiaCovington County · 8,763 peopleA−graded within the state·Overall D · #147 of 187
T48Good HopeCullman County · 2,682 peopleA−graded within the state·Overall A− · #27 of 187
T48HancevilleCullman County · 3,390 peopleA−graded within the state·Overall B− · #62 of 187
T50GlencoeEtowah County · 5,426 peopleB+graded within the state·Overall B− · #56 of 187
T50Hokes BluffEtowah County · 4,706 peopleB+graded within the state·Overall A− · #23 of 187
T50Rainbow CityEtowah County · 10,406 peopleB+graded within the state·Overall C · #94 of 187
T50SouthsideEtowah County · 9,718 peopleB+graded within the state·Overall A− · #25 of 187
54Underwood-Petersvilleunincorporated, Lauderdale County · 3,100 peopleB+graded within the state·Overall A− · #24 of 187
55FlorenceLauderdale County · 42,581 peopleB+graded within the state·Overall C · #92 of 187
56RussellvilleFranklin County · 10,904 peopleB+graded within the state·Overall C · #82 of 187
57AthensLimestone County · 34,209 peopleB+graded within the state·Overall B− · #57 of 187
58PelhamShelby County · 25,664 peopleB+graded within the state·Overall A− · #28 of 187
59OppCovington County · 6,738 peopleB+graded within the state·Overall C− · #124 of 187
60ScottsboroJackson County · 16,123 peopleB+graded within the state·Overall C− · #106 of 187
61Remlapunincorporated, Blount County · 2,761 peopleB+graded within the state·Overall B− · #60 of 187
T62Bay MinetteBaldwin County · 8,555 peopleB+graded within the state·Overall C− · #121 of 187
T62Bon Secourunincorporated, Baldwin County · 2,789 peopleB+graded within the state·Overall C+ · #68 of 187
T62DaphneBaldwin County · 31,396 peopleB+graded within the state·Overall A− · #30 of 187
T62FairhopeBaldwin County · 26,625 peopleB+graded within the state·Overall B− · #59 of 187
T62FoleyBaldwin County · 30,354 peopleB+graded within the state·Overall C+ · #75 of 187
T62LoxleyBaldwin County · 6,131 peopleB+graded within the state·Overall C− · #102 of 187
T62RobertsdaleBaldwin County · 7,761 peopleB+graded within the state·Overall C+ · #76 of 187
T62SilverhillBaldwin County · 2,529 peopleB+graded within the state·Overall C · #89 of 187
T62Spanish FortBaldwin County · 11,203 peopleB+graded within the state·Overall B+ · #41 of 187
T62Stapletonunincorporated, Baldwin County · 3,009 peopleB+graded within the state·Overall B+ · #42 of 187
72BoazMarshall County · 10,619 peopleBgraded within the state·Overall B− · #63 of 187
73RoanokeRandolph County · 5,440 peopleBgraded within the state·Overall C− · #126 of 187
74CentreCherokee County · 3,912 peopleBgraded within the state·Overall C− · #129 of 187
T75Alexandriaunincorporated, Calhoun County · 3,475 peopleBgraded within the state·Overall B− · #55 of 187
T75Choccoloccounincorporated, Calhoun County · 2,620 peopleBgraded within the state·Overall B · #54 of 187
T75Saksunincorporated, Calhoun County · 10,681 peopleBgraded within the state·Overall C · #84 of 187
T75WeaverCalhoun County · 3,289 peopleBgraded within the state·Overall C · #99 of 187
T75West End-Cobb Townunincorporated, Calhoun County · 3,453 peopleBgraded within the state·Overall C · #100 of 187
80DemopolisMarengo County · 6,641 peopleBgraded within the state·Overall D− · #165 of 187
81HuntsvilleMadison County · 233,627 peopleBgraded within the state·Overall B− · #61 of 187
82HamiltonMarion County · 6,769 peopleBgraded within the state·Overall C · #90 of 187
83RainsvilleDeKalb County · 6,020 peopleBgraded within the state·Overall A− · #29 of 187
84Phenix CityRussell County · 38,344 peopleBgraded within the state·Overall D · #159 of 187
85Ladoniaunincorporated, Russell County · 3,346 peopleBgraded within the state·Overall C · #86 of 187
T86ChildersburgTalladega County · 4,571 peopleBgraded within the state·Overall D · #137 of 187
T86LincolnTalladega County · 8,110 peopleBgraded within the state·Overall C− · #131 of 187
T88PricevilleMorgan County · 3,952 peopleBgraded within the state·Overall A · #4 of 187
T88TrinityMorgan County · 2,638 peopleBgraded within the state·Overall B+ · #35 of 187
90HeadlandHenry County · 5,603 peopleBgraded within the state·Overall B · #48 of 187
91DecaturMorgan County · 58,056 peopleBgraded within the state·Overall C− · #110 of 187
T92ArgoSt. Clair County · 4,376 peopleB−graded within the state·Overall A · #2 of 187
T92MargaretSt. Clair County · 7,149 peopleB−graded within the state·Overall B+ · #43 of 187
T92MoodySt. Clair County · 13,559 peopleB−graded within the state·Overall B− · #58 of 187
T92OdenvilleSt. Clair County · 6,023 peopleB−graded within the state·Overall C · #80 of 187
T92SpringvilleSt. Clair County · 5,597 peopleB−graded within the state·Overall B · #51 of 187
97ThomasvilleClarke County · 3,545 peopleB−graded within the state·Overall D− · #163 of 187
98HelenaShelby County · 23,388 peopleB−graded within the state·Overall A− · #15 of 187
99TuscumbiaColbert County · 9,332 peopleB−graded within the state·Overall B+ · #39 of 187
100FayetteFayette County · 4,060 peopleB−graded within the state·Overall C− · #130 of 187
101Smiths StationLee County · 5,596 peopleB−graded within the state·Overall C+ · #70 of 187
T102Emerald Mountainunincorporated, Elmore County · 3,535 peopleB−graded within the state·Overall A · #14 of 187
T102Holtvilleunincorporated, Elmore County · 5,158 peopleB−graded within the state·Overall C− · #104 of 187
T102MillbrookElmore County · 17,623 peopleB−graded within the state·Overall C− · #117 of 187
T102Redlandunincorporated, Elmore County · 4,982 peopleB−graded within the state·Overall A− · #17 of 187
T102WetumpkaElmore County · 7,535 peopleB−graded within the state·Overall C− · #118 of 187
107Red BayFranklin County · 3,196 peopleB−graded within the state·Overall C · #93 of 187
108SylacaugaTalladega County · 12,055 peopleB−graded within the state·Overall D · #154 of 187
109OpelikaLee County · 35,765 peopleB−graded within the state·Overall C− · #127 of 187
T110Pine Levelunincorporated, Autauga County · 4,170 peopleB−graded within the state·Overall B · #45 of 187
T110PrattvilleAutauga County · 40,582 peopleB−graded within the state·Overall C+ · #73 of 187
T112Cottondaleunincorporated, Tuscaloosa County · 2,632 peopleB−graded within the state·Overall C+ · #77 of 187
T112Holtunincorporated, Tuscaloosa County · 3,629 peopleB−graded within the state·Overall C− · #120 of 187
T112Lake ViewTuscaloosa County · 3,969 peopleB−graded within the state·Overall B · #50 of 187
T112NorthportTuscaloosa County · 31,648 peopleB−graded within the state·Overall C− · #103 of 187
116MoundvilleHale County · 3,628 peopleB−graded within the state·Overall C · #85 of 187
117Pell CitySt. Clair County · 14,320 peopleB−graded within the state·Overall D · #134 of 187
118TroyPike County · 18,022 peopleB−graded within the state·Overall D · #149 of 187
119DadevilleTallapoosa County · 2,920 peopleB−graded within the state·Overall D · #140 of 187
120MoultonLawrence County · 3,436 peopleC+graded within the state·Overall C− · #109 of 187
121TallasseeElmore County · 4,738 peopleC+graded within the state·Overall C− · #123 of 187
122LuverneCrenshaw County · 2,690 peopleC+graded within the state·Overall D · #150 of 187
123HeflinCleburne County · 3,572 peopleC+graded within the state·Overall C− · #107 of 187
124AttallaEtowah County · 5,807 peopleC+graded within the state·Overall D · #141 of 187
125SumitonWalker County · 2,511 peopleC+graded within the state·Overall C · #91 of 187
T126BrentBibb County · 4,414 peopleC+graded within the state·Overall D · #156 of 187
T126CentrevilleBibb County · 2,709 peopleC+graded within the state·Overall D · #142 of 187
128LeedsJefferson County · 12,831 peopleC+graded within the state·Overall C · #87 of 187
129AlbertvilleMarshall County · 23,710 peopleCgraded within the state·Overall D · #139 of 187
130DothanHouston County · 72,060 peopleCgraded within the state·Overall D− · #161 of 187
131AtmoreEscambia County · 8,360 peopleCgraded within the state·Overall D− · #186 of 187
132TuscaloosaTuscaloosa County · 114,316 peopleCgraded within the state·Overall D · #143 of 187
T133AdamsvilleJefferson County · 4,178 peopleCgraded within the state·Overall C− · #122 of 187
T133Center PointJefferson County · 15,538 peopleCgraded within the state·Overall C− · #116 of 187
T133ClayJefferson County · 10,198 peopleCgraded within the state·Overall D · #132 of 187
T133Forestdaleunincorporated, Jefferson County · 9,742 peopleCgraded within the state·Overall C− · #125 of 187
T133FultondaleJefferson County · 9,307 peopleCgraded within the state·Overall C · #95 of 187
T133GardendaleJefferson County · 16,425 peopleCgraded within the state·Overall C+ · #67 of 187
T133Grayson Valleyunincorporated, Jefferson County · 6,077 peopleCgraded within the state·Overall C− · #113 of 187
T133HueytownJefferson County · 16,159 peopleCgraded within the state·Overall D · #153 of 187
T133IrondaleJefferson County · 13,545 peopleCgraded within the state·Overall C− · #105 of 187
T133KimberlyJefferson County · 4,858 peopleCgraded within the state·Overall B+ · #32 of 187
T133McCallaunincorporated, Jefferson County · 13,253 peopleCgraded within the state·Overall C+ · #78 of 187
T133Mount Oliveunincorporated, Jefferson County · 3,567 peopleCgraded within the state·Overall B · #47 of 187
T133PinsonJefferson County · 7,830 peopleCgraded within the state·Overall D · #146 of 187
T133Pleasant GroveJefferson County · 9,346 peopleCgraded within the state·Overall C− · #111 of 187
T133WarriorJefferson County · 3,320 peopleCgraded within the state·Overall C · #97 of 187
148JacksonClarke County · 4,452 peopleCgraded within the state·Overall D− · #174 of 187
149EvergreenConecuh County · 3,272 peopleCgraded within the state·Overall D− · #176 of 187
T150ClantonChilton County · 9,289 peopleCgraded within the state·Overall D · #138 of 187
T150JemisonChilton County · 3,030 peopleCgraded within the state·Overall C− · #128 of 187
152Alexander CityTallapoosa County · 14,515 peopleCgraded within the state·Overall D · #160 of 187
153DalevilleDale County · 4,971 peopleCgraded within the state·Overall D · #158 of 187
154GadsdenEtowah County · 33,367 peopleCgraded within the state·Overall D− · #168 of 187
T155CitronelleMobile County · 3,897 peopleC−graded within the state·Overall C− · #112 of 187
T155Grand Bayunincorporated, Mobile County · 3,553 peopleC−graded within the state·Overall C · #88 of 187
T155MobileMobile County · 200,824 peopleC−graded within the state·Overall D− · #169 of 187
T155PrichardMobile County · 18,825 peopleC−graded within the state·Overall D− · #173 of 187
T155SemmesMobile County · 6,259 peopleC−graded within the state·Overall D− · #178 of 187
T155Theodoreunincorporated, Mobile County · 4,964 peopleC−graded within the state·Overall D · #157 of 187
T155Tillmans Cornerunincorporated, Mobile County · 17,677 peopleC−graded within the state·Overall D · #148 of 187
162OzarkDale County · 14,269 peopleC−graded within the state·Overall D− · #167 of 187
T163Huguleyunincorporated, Chambers County · 2,577 peopleC−graded within the state·Overall C · #101 of 187
T163La FayetteChambers County · 2,621 peopleC−graded within the state·Overall D · #155 of 187
T163ValleyChambers County · 10,294 peopleC−graded within the state·Overall D− · #171 of 187
166SheffieldColbert County · 9,416 peopleC−graded within the state·Overall D · #151 of 187
167ElbaCoffee County · 3,408 peopleC−graded within the state·Overall D− · #166 of 187
168TalladegaTalladega County · 14,840 peopleC−graded within the state·Overall D− · #172 of 187
169FairfieldJefferson County · 9,483 peopleC−graded within the state·Overall C− · #119 of 187
170MonroevilleMonroe County · 5,758 peopleC−graded within the state·Overall D− · #162 of 187
171Valley GrandeDallas County · 3,903 peopleC−graded within the state·Overall D− · #179 of 187
172EufaulaBarbour County · 12,437 peopleC−graded within the state·Overall D− · #183 of 187
173MontgomeryMontgomery County · 195,300 peopleC−graded within the state·Overall D · #152 of 187
174Union SpringsBullock County · 3,091 peopleC−graded within the state·Overall D− · #187 of 187
175AnnistonCalhoun County · 20,930 peopleDgraded within the state·Overall D− · #181 of 187
176MarionPerry County · 2,602 peopleDgraded within the state·Overall D− · #175 of 187
177BirminghamJefferson County · 195,893 peopleDgraded within the state·Overall D− · #164 of 187
178GreenvilleButler County · 6,912 peopleDgraded within the state·Overall D− · #184 of 187
179EutawGreene County · 2,640 peopleDgraded within the state·Overall D · #145 of 187
180TuskegeeMacon County · 8,644 peopleDgraded within the state·Overall D · #136 of 187
181SelmaDallas County · 16,077 peopleDgraded within the state·Overall D− · #185 of 187
182LivingstonSumter County · 3,242 peopleDgraded within the state·Overall D− · #182 of 187
183MidfieldJefferson County · 4,906 peopleDgraded within the state·Overall D · #144 of 187
184LanettChambers County · 6,781 peopleD−graded within the state·Overall D− · #170 of 187
185TarrantJefferson County · 5,639 peopleD−graded within the state·Overall D · #133 of 187
186BessemerJefferson County · 24,984 peopleD−graded within the state·Overall D− · #177 of 187
187ChickasawMobile County · 6,166 peopleD−graded within the state·Overall D− · #180 of 187
Quick answers

Questions people ask

Which Alabama town has the best schools?

Vestavia Hills (Jefferson County) ranks first on schools among 187 towns, with an A+; Mountain Brook and Trussville follow. Schools are compared within Alabama, so the letter is a state grade.

How are these towns ranked?

The Schools grade: state test results and graduation rates of the districts serving each town, compared with the state’s other districts (U.S. Department of Education). Towns are sorted on the grade’s score; the letter and rank are the same as on each town’s page. How grades work.

Why isn’t my town on this list?

The list covers towns of 2,500+ residents with a schools grade (187 in Alabama). Smaller towns have the grade on their page but no rank. Every town is on the Alabama page.

Go deeper

More Alabama lists

Every list ranks the same 2,500+ towns, so a town’s rank means the same thing on each.

All Alabama rankings →
Other states

Towns with the best schools in other states