Home › Missouri › Rankings › Best small towns Glendale, #1 on this list · McPherson-Holland House · Photo: Jon Roanhaus · CC BY-SA 3.0 Missouri rankings · 2026 Best small towns in Missouri Glendale ranks first of Missouri’s 155 graded small towns (2,500–9,999 residents), with an A+: jobs & income (A+) and health (A+) are its strongest grades; cost of living (C) is its lowest. 32 of the 155 (21%) grade A− or better nationally, against 25% of U.S. towns.
The overall grade, sorted: cost of living, safety, schools, health, jobs & income, walkability and hazard risk, from Census, FBI, state, CDC, EPA and FEMA data. How grades work
All towns Small towns (2,500–9,999) #1 St. Louis County · 6,060 people A+ Strongest: jobs & income A+ , health A+ · lowest: cost of living C
C Cost– SafetyA+ SchoolsA+ HealthA+ JobsA− WalkB− Hazards
38.52° N · 90.34° W #2 St. Louis County · 2,670 people A+ Strongest: jobs & income A , cost of living A− · lowest: hazard risk C+
A− Cost– SafetyB+ SchoolsA− HealthA JobsB+ WalkC+ Hazards
#3 Lafayette County · 5,721 people A+ Strongest: safety A , jobs & income A · lowest: walkability C
A− CostA SafetyB+ SchoolsB HealthA JobsC WalkA− Hazards
Where they are: Three of the top 10 are in St. Louis County.
All 155 small towns Overall score, highest first. The score (0–100) blends the seven livability grades and sets the order; the letter places that score among every U.S. town of 2,500+, and A+ is the top 5%, so neighbors on the list often share a letter. Each town links to its page, where the grade sheet shows every subject. The rank is the town’s place among all 247 Missouri towns.
# Town Score Grade What drives it
1 Glendale St. Louis County · 6,060 people 77.0 top 0.6% A+ Strongest: jobs & income A+ , health A+ · lowest: cost of living C 2 Green Park St. Louis County · 2,670 people 76.8 top 0.7% A+ Strongest: jobs & income A , cost of living A− · lowest: hazard risk C+ 3 Odessa Lafayette County · 5,721 people 75.2 top 1.3% A+ Strongest: safety A , jobs & income A · lowest: walkability C 4 Cottleville St. Charles County · 6,717 people 71.6 top 4.5% A+ Strongest: safety A+ , jobs & income A+ · lowest: hazard risk D 6 Greenwood Jackson County · 6,315 people 70.9 top 5.4% A Strongest: jobs & income A+ , safety A · lowest: walkability C− 9 Savannah Andrew County · 5,107 people 70.4 top 6.2% A Strongest: cost of living A , schools A− · lowest: walkability B− 10 Palmyra Marion County · 3,649 people 69.4 top 7.7% A Strongest: cost of living A− , walkability A− · lowest: health B− 13 Olivette St. Louis County · 8,937 people 68.9 top 8.6% A Strongest: schools A+ , jobs & income A · lowest: cost of living D 15 Ashland Boone County · 5,221 people 68.3 top 9.6% A Strongest: health A , jobs & income A · lowest: walkability C− 16 Pleasant Valley Clay County · 2,747 people 67.9 top 10.3% A Strongest: jobs & income A , cost of living A− · lowest: health C+ 17 Crystal City Jefferson County · 4,694 people 67.9 top 10.3% A Strongest: cost of living A , schools A− · lowest: health C 18 Ladue St. Louis County · 8,934 people 67.9 top 10.4% A Strongest: jobs & income A+ , health A+ · lowest: cost of living D 19 Oronogo Jasper County · 3,204 people 67.7 top 10.7% A Strongest: schools A , safety A · lowest: hazard risk C− 20 Sappington unincorporated, St. Louis County · 7,367 people 67.3 top 11.7% A Strongest: schools A , health A− · lowest: cost of living C 26 St. Paul St. Charles County · 3,849 people 66.3 top 13.7% A Strongest: jobs & income A+ , schools A · lowest: hazard risk D 29 Rock Hill St. Louis County · 4,668 people 65.7 top 15.2% A− Strongest: schools A+ , jobs & income A · lowest: cost of living C− 30 Higginsville Lafayette County · 4,770 people 65.7 top 15.3% A− Strongest: cost of living A , hazard risk A− · lowest: schools C+ 36 California Moniteau County · 4,523 people 64.7 top 17.4% A− Strongest: cost of living A , schools A− · lowest: health C 37 Centralia Boone County · 4,767 people 64.6 top 17.8% A− Strongest: cost of living A , schools A− · lowest: jobs & income C 38 Clarkson Valley St. Louis County · 2,540 people 64.4 top 18.2% A− Strongest: jobs & income A+ , health A+ · lowest: cost of living D 39 High Ridge unincorporated, Jefferson County · 3,714 people 63.6 top 20.1% A− Strongest: cost of living A , jobs & income A− · lowest: hazard risk C− 42 Parkville Platte County · 9,093 people 63.5 top 20.4% A− Strongest: jobs & income A+ , health A− · lowest: cost of living C− 44 Fenton St. Louis County · 4,060 people 63.4 top 20.6% A− Strongest: schools A , health A− · lowest: cost of living C− 45 Battlefield Greene County · 6,361 people 63.4 top 20.7% A− Strongest: jobs & income A , health A− · lowest: walkability C− 47 Pleasant Hill Cass County · 8,956 people 63.0 top 21.5% A− Strongest: schools A− , safety B+ · lowest: walkability C+ 48 Brentwood St. Louis County · 8,079 people 62.9 top 21.8% A− Strongest: schools A+ , health A+ · lowest: safety D 49 Willard Greene County · 6,904 people 62.8 top 21.9% A− Strongest: schools A− , jobs & income B+ · lowest: walkability C 50 Frontenac St. Louis County · 3,790 people 62.8 top 22.0% A− Strongest: schools A+ , health A+ · lowest: cost of living C− 52 Marceline Township Linn County · 2,589 people 62.3 top 23.1% A− Strongest: cost of living A+ , schools A+ · lowest: health C− 53 Lawson Ray County · 2,541 people 62.3 top 23.2% A− Strongest: schools A , cost of living A− · lowest: health C 55 Weldon Spring St. Charles County · 5,301 people 61.8 top 24.6% A− Strongest: schools A+ , jobs & income A · lowest: cost of living D 56 Knob Noster Johnson County · 2,997 people 61.7 top 24.8% A− Strongest: schools A− , cost of living A− · lowest: walkability C− 57 Lake Lotawana Jackson County · 2,756 people 61.6 top 25.2% B+ Strongest: jobs & income A , schools A · lowest: cost of living D 59 Canton Lewis County · 2,763 people 61.5 top 25.5% B+ Strongest: cost of living A+ , safety A · lowest: jobs & income D 61 Herculaneum Jefferson County · 5,402 people 61.5 top 25.6% B+ Strongest: jobs & income A , schools A · lowest: hazard risk C− 63 Sunset Hills St. Louis County · 9,075 people 61.3 top 26.2% B+ Strongest: jobs & income A , health A · lowest: cost of living D 67 Clever Christian County · 3,143 people 60.9 top 27.3% B+ Strongest: jobs & income A− , schools B+ · lowest: walkability C 68 Maplewood St. Louis County · 8,033 people 60.4 top 28.3% B+ Strongest: walkability A+ , schools A · lowest: safety D− 72 Fayette Howard County · 2,848 people 59.6 top 30.5% B+ Strongest: cost of living A , walkability A · lowest: schools C 74 Holts Summit Callaway County · 4,773 people 59.4 top 30.8% B+ Strongest: jobs & income A− , cost of living A− · lowest: walkability D 77 Rogersville Webster County · 5,754 people 58.3 top 33.7% B+ Strongest: safety B+ , schools B+ · lowest: health C+ 78 Des Peres St. Louis County · 9,102 people 58.1 top 34.4% B+ Strongest: jobs & income A+ , health A+ · lowest: safety D 80 Wright City Warren County · 5,854 people 58.0 top 34.7% B+ Strongest: cost of living A− , schools A− · lowest: walkability C− 83 Ste. Genevieve Ste. Genevieve County · 5,065 people 57.2 top 36.7% B Strongest: cost of living A , schools A− · lowest: hazard risk C− 85 Country Club Andrew County · 2,512 people 57.0 top 37.4% B Strongest: schools A− , jobs & income B+ · lowest: walkability C− 87 Brookfield Linn County · 4,083 people 56.5 top 38.6% B Strongest: cost of living A+ , schools A− · lowest: health C− 88 Terre du Lac unincorporated, St. Francois County · 2,516 people 56.4 top 38.8% B Strongest: cost of living A− , schools B+ · lowest: walkability C− 90 Shrewsbury St. Louis County · 6,231 people 56.3 top 39.1% B Strongest: walkability A , health A · lowest: safety D 91 Barnhart unincorporated, Jefferson County · 5,785 people 55.9 top 40.4% B Strongest: jobs & income A , health B · lowest: hazard risk C− 92 Chillicothe Livingston County · 9,114 people 55.9 top 40.5% B Strongest: cost of living A , schools A · lowest: health D 93 Gray Summit unincorporated, Franklin County · 2,991 people 55.8 top 40.6% B Strongest: cost of living A− , jobs & income A− · lowest: hazard risk C− 95 Cuba Crawford County · 3,288 people 55.7 top 40.8% B Strongest: schools A− , cost of living A− · lowest: health D− 96 Richmond Heights St. Louis County · 9,093 people 55.6 top 41.1% B Strongest: schools A+ , health A+ · lowest: safety D− 97 Platte City Platte County · 4,911 people 55.3 top 41.8% B Strongest: schools A− , jobs & income B+ · lowest: walkability C+ 98 Oak Grove Jackson County · 9,370 people 55.2 top 42.0% B Strongest: hazard risk B+ , schools B+ · lowest: health C 99 Murphy unincorporated, Jefferson County · 8,285 people 55.1 top 42.3% B Strongest: cost of living A , jobs & income B · lowest: hazard risk D 100 Moscow Mills Lincoln County · 4,388 people 54.9 top 43.1% B Strongest: safety A− , cost of living B+ · lowest: walkability D 101 Grand River Township DeKalb County · 3,258 people 54.8 top 43.3% B Strongest: cost of living B+ , schools B+ · lowest: health C− 102 Peculiar Cass County · 6,365 people 54.7 top 43.4% B Strongest: jobs & income A− , health B · lowest: walkability C 103 Valley Park St. Louis County · 6,767 people 54.7 top 43.6% B Strongest: schools A , health A− · lowest: hazard risk D 104 Hillsboro Jefferson County · 3,493 people 54.5 top 43.9% B Strongest: cost of living B+ , schools B · lowest: hazard risk C 105 Monroe City Monroe County · 2,714 people 54.1 top 45.0% B Strongest: schools B+ , cost of living B+ · lowest: health C− 106 Carl Junction Jasper County · 8,484 people 54.0 top 45.5% B− Strongest: jobs & income B+ , schools B+ · lowest: hazard risk C 107 Eldon Miller County · 4,785 people 53.9 top 45.6% B− Strongest: schools A− , hazard risk B+ · lowest: health C− 108 Mount Vernon Lawrence County · 4,835 people 53.9 top 45.6% B− Strongest: cost of living A− , walkability B+ · lowest: health D 111 Bethany Harrison County · 2,956 people 52.2 bottom 49.4% B− Strongest: walkability A− , cost of living A− · lowest: health C− 112 Trenton Grundy County · 5,557 people 52.0 bottom 48.8% B− Strongest: walkability A , cost of living A · lowest: health D 113 Marshfield Webster County · 8,078 people 51.9 bottom 48.6% B− Strongest: cost of living A , walkability A− · lowest: safety C− 114 Imperial unincorporated, Jefferson County · 5,488 people 51.6 bottom 47.9% B− Strongest: jobs & income B+ , cost of living B · lowest: hazard risk C 115 Buckner Jackson County · 2,891 people 51.5 bottom 47.7% B− Strongest: cost of living A− , hazard risk B · lowest: safety C+ 117 Pike Township Stoddard County · 3,577 people 51.4 bottom 47.2% B− Strongest: cost of living A+ , schools A− · lowest: jobs & income D 118 Bowling Green Pike County · 4,472 people 51.4 bottom 47.2% B− Strongest: cost of living A− , walkability A− · lowest: jobs & income D 120 Castor Township Stoddard County · 4,651 people 51.1 bottom 46.6% B− Strongest: cost of living A , schools A− · lowest: health D 121 Forsyth Taney County · 2,752 people 50.3 bottom 44.5% C+ Strongest: schools A− , walkability B+ · lowest: hazard risk C− 124 Owensville Gasconade County · 2,802 people 49.8 bottom 43.2% C+ Strongest: cost of living A , safety B · lowest: health D 125 Strafford Greene County · 2,789 people 49.7 bottom 42.9% C+ Strongest: schools A− , cost of living A− · lowest: safety C− 126 St. James Phelps County · 3,925 people 49.6 bottom 42.6% C+ Strongest: hazard risk A− , walkability A− · lowest: jobs & income D 127 Warrenton Warren County · 9,667 people 49.6 bottom 42.4% C+ Strongest: cost of living A− , safety B+ · lowest: health C− 128 Macon Macon County · 5,532 people 49.5 bottom 42.2% C+ Strongest: cost of living A , walkability B+ · lowest: schools D 129 Duck Creek Township Stoddard County · 3,016 people 49.1 bottom 41.1% C+ Strongest: cost of living A , schools A− · lowest: health D 130 Pevely Jefferson County · 6,239 people 48.9 bottom 40.6% C+ Strongest: walkability B+ , cost of living B · lowest: hazard risk C− 131 Pacific Franklin County · 7,824 people 48.9 bottom 40.6% C+ Strongest: jobs & income A− , cost of living B · lowest: hazard risk D 134 Licking Texas County · 2,958 people 48.7 bottom 40.1% C+ Strongest: safety A− , cost of living B+ · lowest: jobs & income D− 135 Cameron Clinton County · 7,341 people 48.7 bottom 40.1% C+ Strongest: cost of living A , schools B+ · lowest: jobs & income C− 137 Louisiana Pike County · 3,208 people 48.5 bottom 39.3% C+ Strongest: cost of living A , walkability A− · lowest: jobs & income D− 139 Ava Douglas County · 3,231 people 47.6 bottom 36.7% C+ Strongest: safety B+ , schools B+ · lowest: jobs & income D 141 Montgomery City Montgomery County · 2,782 people 47.2 bottom 35.9% C+ Strongest: cost of living A− , hazard risk B+ · lowest: jobs & income C− 143 Hollister Taney County · 4,690 people 46.9 bottom 35.3% C+ Strongest: cost of living B+ , schools B · lowest: hazard risk D 144 Tipton Moniteau County · 2,766 people 46.2 bottom 33.4% C Strongest: cost of living A+ , walkability A− · lowest: jobs & income D 145 Park Hills St. Francois County · 8,753 people 46.1 bottom 33.2% C Strongest: cost of living A− , walkability B+ · lowest: hazard risk C− 146 Dexter Stoddard County · 7,851 people 46.1 bottom 33.2% C Strongest: cost of living A− , schools A− · lowest: health D 147 Villa Ridge unincorporated, Franklin County · 2,835 people 45.9 bottom 32.7% C Strongest: cost of living A− , schools B− · lowest: walkability D 149 Sullivan Franklin County · 6,942 people 45.7 bottom 32.2% C Strongest: cost of living A , walkability A− · lowest: safety D 150 Scott City Scott County · 4,593 people 45.7 bottom 32.0% C Strongest: cost of living A− , jobs & income B− · lowest: hazard risk D 152 North Kansas City Clay County · 5,613 people 45.6 bottom 32.0% C Strongest: walkability A− , schools A− · lowest: safety D− 153 St. Robert Pulaski County · 5,602 people 45.6 bottom 31.9% C Strongest: schools B+ , hazard risk B · lowest: jobs & income C− 154 Buffalo Dallas County · 3,550 people 45.2 bottom 30.8% C Strongest: cost of living A+ , safety B · lowest: jobs & income D 155 Mountain Grove Wright County · 4,754 people 45.1 bottom 30.6% C Strongest: walkability B+ , schools B+ · lowest: health D− 159 Carrollton Carroll County · 3,499 people 44.8 bottom 29.6% C Strongest: walkability A , cost of living A− · lowest: jobs & income D 160 Whiteman AFB unincorporated, Johnson County · 3,517 people 44.6 bottom 29.3% C Strongest: hazard risk A , schools A− · lowest: cost of living D 161 Boonville Cooper County · 7,867 people 44.5 bottom 28.9% C Strongest: cost of living A− , hazard risk B · lowest: jobs & income C− 162 Lexington Lafayette County · 4,568 people 44.1 bottom 28.1% C Strongest: cost of living A , hazard risk B+ · lowest: jobs & income D 163 Richmond Ray County · 5,968 people 43.9 bottom 27.7% C Strongest: cost of living A , walkability A− · lowest: health D 164 Versailles Morgan County · 2,713 people 43.8 bottom 27.4% C Strongest: cost of living A , hazard risk A− · lowest: health D 166 Waynesville Pulaski County · 5,558 people 43.2 bottom 25.9% C Strongest: schools B+ , health B · lowest: jobs & income C− 167 De Soto Jefferson County · 6,527 people 43.1 bottom 25.8% C Strongest: cost of living A+ , schools B+ · lowest: health D− 169 Chaffee Scott County · 3,017 people 43.0 bottom 25.4% C Strongest: cost of living A , safety B− · lowest: schools C− 170 Aurora Lawrence County · 7,686 people 42.9 bottom 25.2% C Strongest: cost of living A− , walkability B · lowest: health D− 171 Osage Beach Camden County · 5,079 people 42.7 bottom 24.7% C− Strongest: walkability B+ , schools B+ · lowest: health C− 172 Vandalia Audrain County · 3,029 people 42.7 bottom 24.6% C− Strongest: cost of living A , hazard risk B− · lowest: health C− 173 Center Township Vernon County · 9,550 people 42.5 bottom 24.2% C− Strongest: walkability A− , cost of living B · lowest: health D 175 Mount Pleasant Township Bates County · 5,093 people 42.2 bottom 23.7% C− Strongest: cost of living A− , hazard risk B+ · lowest: jobs & income D− 177 Portageville New Madrid County · 2,702 people 41.8 bottom 23.0% C− Strongest: schools A , cost of living B− · lowest: health D− 180 Camdenton Camden County · 4,050 people 41.3 bottom 21.8% C− Strongest: walkability A− , schools B+ · lowest: health D 181 Black Jack St. Louis County · 6,547 people 41.1 bottom 21.3% C− Strongest: walkability A− , jobs & income B+ · lowest: schools D 182 Dellwood St. Louis County · 4,825 people 41.1 bottom 21.3% C− Strongest: walkability A , cost of living A− · lowest: health D 183 Cassville Barry County · 3,301 people 41.0 bottom 21.1% C− Strongest: cost of living A , walkability A− · lowest: safety D 184 Sugar Creek Jackson County · 3,209 people 40.8 bottom 20.7% C− Strongest: cost of living A , walkability B · lowest: health D 185 Normandy St. Louis County · 4,380 people 40.8 bottom 20.7% C− Strongest: walkability A+ , cost of living A+ · lowest: schools D− 186 Salem Dent County · 4,674 people 40.6 bottom 20.2% C− Strongest: cost of living A , schools C+ · lowest: health D 188 Fredericktown Madison County · 4,584 people 40.4 bottom 19.7% C− Strongest: walkability A− , cost of living A− · lowest: jobs & income D 189 Mountain View Howell County · 2,661 people 40.3 bottom 19.6% C− Strongest: cost of living A− , schools B · lowest: jobs & income D− 190 Potosi Washington County · 2,568 people 40.1 bottom 19.3% C− Strongest: schools A , cost of living B+ · lowest: safety D− 192 Sherrill Township Texas County · 5,574 people 40.0 bottom 19.0% C− Strongest: cost of living B+ , schools B · lowest: jobs & income D− 193 Bonne Terre St. Francois County · 6,636 people 39.9 bottom 18.9% C− Strongest: cost of living A , walkability B+ · lowest: health D 194 Northwoods St. Louis County · 3,579 people 39.9 bottom 18.8% C− Strongest: walkability A , cost of living B+ · lowest: schools D− 197 Desloge St. Francois County · 4,819 people 39.3 bottom 17.7% C− Strongest: cost of living A , walkability B+ · lowest: health D 198 Windsor Henry County · 2,869 people 39.2 bottom 17.6% C− Strongest: cost of living A , walkability B+ · lowest: health D− 201 Windsor Township Henry County · 3,454 people 38.9 bottom 16.8% C− Strongest: cost of living A , walkability B · lowest: health D 204 East Prairie Mississippi County · 2,841 people 38.2 bottom 15.4% C− Strongest: cost of living A , safety B · lowest: health D− 205 Clinton Henry County · 9,504 people 37.6 bottom 14.6% D Strongest: walkability B+ , cost of living B+ · lowest: safety D 207 Pine Lawn St. Louis County · 2,682 people 37.3 bottom 14.1% D Strongest: walkability A+ , cost of living A− · lowest: health D− 208 Riverside Platte County · 4,581 people 37.3 bottom 14.1% D Strongest: schools A− , hazard risk B− · lowest: safety D− 209 Byrnes Mill Jefferson County · 3,183 people 37.2 bottom 13.9% D Strongest: cost of living B− , schools B− · lowest: hazard risk D 210 City Township Barton County · 4,337 people 37.0 bottom 13.5% D Strongest: cost of living B , schools B− · lowest: health D− 212 Perryville Perry County · 8,593 people 36.8 bottom 13.2% D Strongest: walkability B+ , cost of living B− · lowest: jobs & income D 215 Lamar Barton County · 4,337 people 35.2 bottom 10.8% D Strongest: cost of living B , schools B− · lowest: health D− 217 Nevada Vernon County · 8,404 people 34.9 bottom 10.5% D Strongest: walkability A , cost of living B+ · lowest: safety D 218 Butler Bates County · 4,317 people 34.9 bottom 10.4% D Strongest: cost of living A− , hazard risk B+ · lowest: health D− 221 St. Clair Franklin County · 4,813 people 34.1 bottom 9.5% D Strongest: cost of living B+ , hazard risk B · lowest: health D 226 Union Township Dunklin County · 3,242 people 33.4 bottom 8.7% D Strongest: cost of living A− , schools C · lowest: health D− 228 Piney Township Texas County · 5,071 people 32.8 bottom 7.8% D Strongest: cost of living B+ , hazard risk C+ · lowest: health D 230 El Dorado Springs Cedar County · 3,642 people 32.4 bottom 7.4% D Strongest: hazard risk B , walkability B · lowest: health D 232 Cotton Hill Township Dunklin County · 4,700 people 32.2 bottom 7.1% D Strongest: cost of living A , walkability B · lowest: health D− 234 Burdine Township Texas County · 3,327 people 31.6 bottom 6.5% D Strongest: cost of living B+ , walkability C · lowest: health D 235 Berkeley St. Louis County · 8,026 people 31.6 bottom 6.5% D Strongest: walkability A , cost of living B+ · lowest: safety D− 237 Woodson Terrace St. Louis County · 3,902 people 30.6 bottom 5.5% D Strongest: walkability B , cost of living B · lowest: health D 238 New Madrid New Madrid County · 2,586 people 30.4 bottom 5.3% D Strongest: cost of living B+ , jobs & income C+ · lowest: hazard risk D 239 Malden Dunklin County · 3,493 people 30.4 bottom 5.3% D Strongest: cost of living A− , walkability B+ · lowest: health D− 240 Glasgow Village unincorporated, St. Louis County · 5,504 people 30.4 bottom 5.3% D Strongest: walkability A , cost of living B · lowest: health D− 242 Breckenridge Hills St. Louis County · 4,350 people 30.2 bottom 5.0% D Strongest: walkability A , cost of living B+ · lowest: schools D 243 St. John St. Louis County · 6,441 people 29.7 bottom 4.5% D− Strongest: walkability B+ , cost of living B · lowest: health D 244 Pagedale St. Louis County · 2,511 people 29.6 bottom 4.4% D− Strongest: walkability A , cost of living A− · lowest: schools D− 246 Charleston Mississippi County · 4,731 people 26.0 bottom 2.0% D− Strongest: cost of living A− , walkability B+ · lowest: health D− 247 Caruthersville Pemiscot County · 5,211 people 14.4 bottom 0.1% D− Strongest: walkability B+ , cost of living C · lowest: health D− Method
How this list is made Each town’s overall grade blends seven livability grades: cost of living (weight 18), safety (18), schools (16), health (14), jobs & income (12), walkability (8) and hazard risk (4). A town needs 2,500+ residents and three of the first four. Letters are national, so an A here means the same as an A in any state; the list is the same towns in the same order, ranked within Missouri. Towns without their own FBI figures are graded on the rest and their page says why.
Data years: crime 2023–2025 (FBI), Census ACS 2020–2024, CDC PLACES 2025, state school tests. How grades work
Quick answers
Questions people ask What is the best small town in Missouri? Among 155 graded towns of 2,500 to 9,999 residents, Glendale (St. Louis County) ranks first, with an A+; jobs & income (A+) and health (A+) are its strongest grades; cost of living (C) is its lowest. Green Park and Odessa follow.
How are these towns ranked? By the overall grade, which blends seven livability grades from public data. The letter is national; the rank is within Missouri. The full method is on How grades work .
Why isn’t my town on this list? The list covers towns of 2,500 to 9,999 residents with an overall grade (155 in Missouri). 172 smaller places have subject grades only; Larger towns are on the best places to live list. Every town is on the Missouri page .
Go deeper More Missouri lists Every list ranks the same 2,500+ towns, so a town’s rank means the same thing on each.
All Missouri rankings → Other states
Best small towns in other states