Millville ranks first of Utah’s 50 graded small towns (2,500–9,999 residents), with an A+: health (A+) and schools (A) are its strongest grades; walkability (B−) is its lowest. 26 of the 50 (52%) 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
Where they are: Five of the top 10 are in Cache County.
All 50 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 118 Utah towns.
43South WeberDavis County · 8,218 people65.0top 16.8%A−Strongest: jobs & income A+, health A·lowest: walkability D
49SunsetDavis County · 5,549 people64.4top 18.2%A−Strongest: walkability A, cost of living A−·lowest: hazard risk C−
51EphraimSanpete County · 6,393 people64.0top 19.2%A−Strongest: walkability A−, health A−·lowest: jobs & income C
53PerryBox Elder County · 6,226 people63.4top 20.6%A−Strongest: jobs & income A, health A·lowest: safety C+
58BlandingSan Juan County · 3,199 people62.2top 23.5%A−Strongest: hazard risk A+, walkability A·lowest: jobs & income C
59East Basinunincorporated, Summit County · 4,002 people62.1top 23.6%A−Strongest: health A+, jobs & income A·lowest: cost of living D
62MidwayWasatch County · 6,011 people62.0top 24.0%A−Strongest: health A+, jobs & income A·lowest: cost of living C−
64FillmoreMillard County · 2,874 people61.9top 24.4%A−Strongest: cost of living A, schools A−·lowest: jobs & income D
65Mountain Greenunincorporated, Morgan County · 3,976 people61.6top 25.2%B+Strongest: health A+, jobs & income A·lowest: walkability D−
66EnochIron County · 8,847 people61.1top 26.6%B+Strongest: safety A, health B+·lowest: cost of living C+
67Elk RidgeUtah County · 4,969 people61.0top 26.8%B+Strongest: health A+, jobs & income A−·lowest: hazard risk D
72MantiSanpete County · 3,794 people59.8top 29.9%B+Strongest: health B+, walkability B+·lowest: jobs & income C
77Maeserunincorporated, Uintah County · 4,435 people58.5top 33.1%B+Strongest: hazard risk A+, health A−·lowest: schools C+
78HarrisvilleWeber County · 7,154 people58.4top 33.4%B+Strongest: jobs & income A, health A−·lowest: safety C
79Plain CityWeber County · 9,256 people57.9top 34.9%B+Strongest: jobs & income A+, health A−·lowest: walkability C−
82Park CitySummit County · 8,587 people57.2top 36.6%BStrongest: health A+, jobs & income A·lowest: cost of living C−
83GunnisonSanpete County · 3,693 people56.9top 37.5%BStrongest: hazard risk B+, schools B+·lowest: jobs & income D
84HooperWeber County · 9,741 people56.8top 37.8%BStrongest: jobs & income A, health A−·lowest: walkability C−
85Santa ClaraWashington County · 8,722 people56.8top 37.9%BStrongest: health A, jobs & income A−·lowest: hazard risk D
90DeltaMillard County · 3,868 people54.9top 42.9%BStrongest: schools A−, hazard risk B+·lowest: jobs & income C−
92RichfieldSevier County · 8,478 people53.4top 47.0%B−Strongest: walkability A−, health B+·lowest: safety C
94SalinaSevier County · 2,640 people52.3bottom 49.6%B−Strongest: cost of living B+, health B·lowest: jobs & income D
98Mount PleasantSanpete County · 4,018 people51.1bottom 46.6%B−Strongest: health B, walkability B·lowest: jobs & income C−
99RooseveltDuchesne County · 7,032 people50.7bottom 45.6%B−Strongest: hazard risk A+, walkability A−·lowest: jobs & income C−
100MonroeSevier County · 2,738 people50.0bottom 43.7%C+Strongest: schools B, cost of living B·lowest: walkability D
104GarlandBox Elder County · 2,915 people48.3bottom 38.9%C+Strongest: health B+, cost of living B·lowest: walkability D
110RiverdaleWeber County · 9,206 people45.6bottom 31.7%CStrongest: walkability B+, jobs & income B·lowest: safety D
111ErdaTooele County · 4,056 people44.7bottom 29.4%CStrongest: health A, jobs & income B+·lowest: hazard risk C−
112La VerkinWashington County · 4,515 people42.3bottom 23.8%C−Strongest: schools B+, walkability B−·lowest: jobs & income C−
115ParowanIron County · 3,282 people38.2bottom 15.5%C−Strongest: schools B, health C+·lowest: jobs & income D
116PriceCarbon County · 8,368 people38.0bottom 15.2%C−Strongest: hazard risk A−, walkability B·lowest: jobs & income D
118MoabGrand County · 5,206 people35.5bottom 11.2%DStrongest: walkability A, health B·lowest: safety C−
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 Utah. 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 Utah?
Among 50 graded towns of 2,500 to 9,999 residents, Millville (Cache County) ranks first, with an A+; health (A+) and schools (A) are its strongest grades; walkability (B−) is its lowest. Richmond and Hyde Park 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 Utah. 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 (50 in Utah). 54 smaller places have subject grades only; 1 town of 2,500+ lack enough data for a grade; Larger towns are on the best places to live list. Every town is on the Utah page.
Go deeper
More Utah lists
Every list ranks the same 2,500+ towns, so a town’s rank means the same thing on each.