Guest, Sign inJoin
George H. Haven HouseChatfield, #1 on this list · George H. Haven House · Photo: Jonathunder · CC BY-SA 3.0
Minnesota rankings · 2026

Best small towns in Minnesota

Chatfield ranks first of Minnesota’s 167 graded small towns (2,500–9,999 residents), with an A+: safety (A+) and schools (A) are its strongest grades; hazard risk (B−) is its lowest. 96 of the 167 (57%) 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

#1

Chatfield

Fillmore County · 3,018 people
A+

Strongest: safety A+, schools A·lowest: hazard risk B−

ACostA+SafetyASchoolsB+HealthA−JobsA−WalkB−Hazards
#2

Barnesville

Clay County · 2,767 people
A+

Strongest: schools A, safety A·lowest: hazard risk D

A−CostASafetyASchoolsAHealthAJobsB+WalkDHazards
#3

Deephaven

Hennepin County · 3,794 people
A+

Strongest: health A+, jobs & income A+·lowest: cost of living C

CCostA+SafetyA+SchoolsA+HealthA+JobsA−WalkB+Hazards

Where they are: One of the top 10 is in Fillmore County.

All 167 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 271 Minnesota towns.

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

#TownScoreGradeWhat drives it
1ChatfieldFillmore County · 3,018 people85.6top 0.1%A+Strongest: safety A+, schools A·lowest: hazard risk B−
2BarnesvilleClay County · 2,767 people83.0top 0.1%A+Strongest: schools A, safety A·lowest: hazard risk D
3DeephavenHennepin County · 3,794 people81.3top 0.1%A+Strongest: health A+, jobs & income A+·lowest: cost of living C
4CaledoniaHouston County · 2,768 people80.0top 0.2%A+Strongest: safety A+, schools A·lowest: jobs & income B
5PlainviewWabasha County · 3,482 people78.2top 0.4%A+Strongest: walkability A+, safety A·lowest: jobs & income B−
6AlbertvilleWright County · 8,544 people77.6top 0.5%A+Strongest: jobs & income A+, health A·lowest: walkability C
7New PragueScott County · 8,238 people77.3top 0.5%A+Strongest: schools A, health A·lowest: hazard risk C+
8Dodge CenterDodge County · 2,951 people76.8top 0.7%A+Strongest: cost of living A, jobs & income A−·lowest: hazard risk B
9ByronOlmsted County · 6,740 people76.7top 0.8%A+Strongest: schools A+, health A·lowest: cost of living B−
10CentervilleAnoka County · 3,978 people76.6top 0.8%A+Strongest: jobs & income A+, health A·lowest: hazard risk C−
11MedinaHennepin County · 7,460 people76.4top 0.8%A+Strongest: health A+, schools A+·lowest: cost of living C
12ZumbrotaGoodhue County · 4,072 people76.0top 1.0%A+Strongest: safety A, schools A·lowest: hazard risk C
14AlbanyStearns County · 2,873 people74.6top 1.7%A+Strongest: safety A, schools A·lowest: jobs & income B−
15MontgomeryLe Sueur County · 3,539 people74.5top 1.7%A+Strongest: safety A+, walkability A−·lowest: schools B−
16DelanoWright County · 7,788 people74.2top 1.9%A+Strongest: schools A+, jobs & income A+·lowest: hazard risk C
17AnnandaleWright County · 3,801 people74.2top 2.0%A+Strongest: cost of living A, schools A·lowest: hazard risk C
18MoundHennepin County · 9,064 people74.1top 2.0%A+Strongest: schools A+, health A·lowest: cost of living B−
19LonsdaleRice County · 5,117 people74.0top 2.1%A+Strongest: jobs & income A, safety A·lowest: cost of living B−
21WatertownCarver County · 4,789 people73.9top 2.2%A+Strongest: jobs & income A, cost of living A−·lowest: hazard risk D
22KassonDodge County · 7,350 people73.9top 2.2%A+Strongest: schools A, health A·lowest: hazard risk C+
24Circle PinesAnoka County · 4,967 people73.7top 2.4%A+Strongest: jobs & income A, schools A·lowest: hazard risk C−
25BayportWashington County · 3,721 people73.4top 2.7%A+Strongest: jobs & income A+, safety A·lowest: cost of living C+
27PaynesvilleStearns County · 2,591 people72.8top 3.2%A+Strongest: cost of living A, safety A·lowest: hazard risk C
28Arden HillsRamsey County · 9,583 people72.7top 3.3%A+Strongest: health A+, jobs & income A·lowest: cost of living C
29St. CharlesWinona County · 4,090 people72.3top 3.7%A+Strongest: jobs & income A, schools A−·lowest: hazard risk C
32LuverneRock County · 4,984 people72.1top 4.0%A+Strongest: cost of living A, schools A·lowest: hazard risk B−
34New London TownshipKandiyohi County · 2,965 people71.7top 4.3%A+Strongest: schools A, health A−·lowest: walkability C−
35MinnetristaHennepin County · 9,458 people71.4top 4.7%A+Strongest: health A+, schools A·lowest: cost of living D
36Le CenterLe Sueur County · 2,524 people71.3top 4.9%A+Strongest: safety A+, cost of living A·lowest: schools B−
38MorrisStevens County · 5,150 people71.2top 5.0%A+Strongest: schools A, walkability A·lowest: jobs & income C+
39BeckerSherburne County · 5,425 people71.0top 5.2%AStrongest: schools A−, safety A−·lowest: walkability C−
40CarverCarver County · 7,198 people71.0top 5.2%AStrongest: jobs & income A, health A·lowest: walkability C
41WyomingChisago County · 8,121 people71.0top 5.3%AStrongest: jobs & income A, health A·lowest: walkability C+
44CorcoranHennepin County · 9,269 people70.5top 6.1%AStrongest: jobs & income A+, health A+·lowest: walkability C−
45Lake CityWabasha County · 5,306 people70.4top 6.1%AStrongest: walkability A−, cost of living A−·lowest: hazard risk C+
46RockfordWright County · 4,827 people70.4top 6.2%AStrongest: jobs & income A, health A·lowest: hazard risk C−
47ShorewoodHennepin County · 7,620 people70.4top 6.2%AStrongest: health A+, schools A+·lowest: cost of living D
49CokatoWright County · 2,793 people70.3top 6.3%AStrongest: schools A, cost of living A−·lowest: jobs & income C+
51MahtomediWashington County · 8,189 people70.0top 6.8%AStrongest: schools A+, jobs & income A·lowest: cost of living C−
52Monticello TownshipWright County · 3,374 people69.9top 6.9%AStrongest: jobs & income A+, schools A·lowest: walkability D
53LindstromChisago County · 5,039 people69.8top 7.0%AStrongest: jobs & income A−, schools A−·lowest: walkability C+
55NowthenAnoka County · 4,630 people69.6top 7.3%AStrongest: jobs & income A, schools A−·lowest: cost of living C+
56OronoHennepin County · 8,301 people69.5top 7.6%AStrongest: health A+, schools A+·lowest: cost of living D
57StewartvilleOlmsted County · 6,850 people69.5top 7.6%AStrongest: walkability A−, cost of living B+·lowest: hazard risk B
58GoodviewWinona County · 4,122 people69.5top 7.6%AStrongest: safety A+, health A−·lowest: hazard risk C
59WayzataHennepin County · 4,344 people69.4top 7.7%AStrongest: health A+, schools A+·lowest: cost of living D−
60West Lakeland TownshipWashington County · 3,931 people69.3top 7.9%AStrongest: jobs & income A+, health A·lowest: cost of living C
61IndependenceHennepin County · 3,763 people69.1top 8.2%AStrongest: jobs & income A+, schools A+·lowest: cost of living C−
62Falcon HeightsRamsey County · 5,071 people69.0top 8.3%AStrongest: walkability A+, health A+·lowest: cost of living C+
65Livonia TownshipSherburne County · 6,436 people68.9top 8.7%AStrongest: jobs & income A+, schools A·lowest: cost of living C+
66JordanScott County · 6,988 people68.8top 8.7%AStrongest: jobs & income A, schools A−·lowest: hazard risk D
70IsantiIsanti County · 7,714 people68.6top 9.1%AStrongest: jobs & income A, safety A−·lowest: schools B−
71La CrescentHouston County · 5,261 people68.6top 9.1%AStrongest: safety A, jobs & income A·lowest: hazard risk D
76JacksonJackson County · 3,305 people67.5top 11.1%AStrongest: cost of living A+, walkability B+·lowest: jobs & income C+
77St. Paul ParkWashington County · 5,396 people67.5top 11.3%AStrongest: jobs & income A+, schools A−·lowest: walkability C+
81Thomson TownshipCarlton County · 5,624 people67.2top 12.1%AStrongest: schools A+, jobs & income A·lowest: hazard risk C−
85Silver Creek TownshipWright County · 2,620 people66.6top 13.2%AStrongest: jobs & income A, schools A·lowest: walkability C
86GrantWashington County · 3,954 people66.6top 13.2%AStrongest: jobs & income A+, schools A·lowest: cost of living D
87Alexandria TownshipDouglas County · 3,114 people66.5top 13.3%AStrongest: schools A−, hazard risk A−·lowest: walkability C
90Le SueurLe Sueur County · 4,210 people66.4top 13.5%AStrongest: safety A, schools B+·lowest: hazard risk C+
93Elko New MarketScott County · 5,300 people66.1top 14.2%AStrongest: jobs & income A+, schools A·lowest: walkability C−
97MayerCarver County · 2,563 people65.7top 15.1%A−Strongest: jobs & income A, health A−·lowest: walkability C−
99Mountain IronSt. Louis County · 2,835 people65.7top 15.3%A−Strongest: hazard risk A, cost of living A·lowest: jobs & income B−
100MontroseWright County · 3,986 people65.4top 15.7%A−Strongest: schools A−, jobs & income B+·lowest: walkability C−
101HanoverWright County · 4,392 people65.4top 15.8%A−Strongest: jobs & income A+, health A·lowest: walkability C−
103Chisago Lake TownshipChisago County · 4,958 people65.0top 16.9%A−Strongest: jobs & income A, schools A−·lowest: walkability C
104StacyChisago County · 4,367 people64.8top 17.2%A−Strongest: jobs & income A, cost of living B+·lowest: hazard risk C
105Sleepy EyeBrown County · 3,461 people64.7top 17.4%A−Strongest: cost of living A, safety A−·lowest: schools C+
106Big Lake TownshipSherburne County · 8,283 people64.6top 17.7%A−Strongest: jobs & income A, schools A·lowest: walkability C−
107Rockford TownshipWright County · 3,474 people64.5top 17.9%A−Strongest: jobs & income A, schools A−·lowest: hazard risk D
110St. FrancisAnoka County · 8,635 people64.2top 18.5%A−Strongest: jobs & income A, cost of living B+·lowest: walkability C
111MontevideoChippewa County · 5,335 people64.1top 19.0%A−Strongest: safety A+, cost of living A−·lowest: hazard risk C
113ProctorSt. Louis County · 3,054 people64.0top 19.2%A−Strongest: jobs & income A−, hazard risk B+·lowest: cost of living C+
114Pine IslandGoodhue County · 3,911 people63.9top 19.4%A−Strongest: jobs & income A, health A·lowest: walkability C
115Cedar Lake TownshipScott County · 3,080 people63.8top 19.6%A−Strongest: schools A, jobs & income A·lowest: walkability D
116ElySt. Louis County · 3,231 people63.8top 19.6%A−Strongest: hazard risk A+, walkability A+·lowest: jobs & income C−
118MelroseStearns County · 3,888 people63.7top 19.7%A−Strongest: safety A−, walkability B+·lowest: hazard risk C+
119ZimmermanSherburne County · 6,904 people63.7top 19.9%A−Strongest: schools A, jobs & income B+·lowest: walkability C+
120Norwood Young AmericaCarver County · 3,777 people63.7top 19.9%A−Strongest: schools A−, hazard risk A−·lowest: walkability C+
123Brockway TownshipStearns County · 3,016 people63.3top 20.7%A−Strongest: schools A, jobs & income A·lowest: walkability C
125St. AnthonyHennepin County · 9,989 people63.2top 21.0%A−Strongest: walkability A+, health A+·lowest: safety C−
126Pelican RapidsOtter Tail County · 2,608 people63.1top 21.2%A−Strongest: safety A, walkability A−·lowest: jobs & income C−
128Cannon FallsGoodhue County · 4,209 people63.0top 21.5%A−Strongest: walkability A, jobs & income A−·lowest: hazard risk C−
129Belle PlaineScott County · 7,632 people62.8top 22.0%A−Strongest: safety A−, health A−·lowest: cost of living C+
130Franklin TownshipWright County · 2,939 people62.7top 22.1%A−Strongest: schools A+, jobs & income A+·lowest: cost of living D
131La Grand TownshipDouglas County · 4,309 people62.7top 22.3%A−Strongest: hazard risk A, schools A−·lowest: walkability C
132Breezy PointCrow Wing County · 2,771 people62.6top 22.3%A−Strongest: safety A+, schools A−·lowest: walkability C−
134Corinna TownshipWright County · 2,596 people62.5top 22.6%A−Strongest: schools A, jobs & income A−·lowest: walkability C
135GlenwoodPope County · 2,631 people62.3top 23.2%A−Strongest: walkability A, schools A−·lowest: hazard risk C−
136Sylvan TownshipCass County · 3,030 people62.1top 23.6%A−Strongest: schools A−, jobs & income B+·lowest: walkability C+
137Two HarborsLake County · 3,443 people62.0top 23.9%A−Strongest: hazard risk A+, safety A·lowest: health C+
138North OaksRamsey County · 5,283 people62.0top 23.9%A−Strongest: health A, jobs & income A·lowest: cost of living D−
139LexingtonAnoka County · 3,081 people61.8top 24.5%A−Strongest: schools A, walkability A−·lowest: cost of living C+
140Chisago CityChisago County · 5,955 people61.8top 24.7%A−Strongest: schools A−, health B+·lowest: cost of living C+
141Orrock TownshipSherburne County · 3,698 people61.7top 24.8%A−Strongest: jobs & income A−, schools A−·lowest: hazard risk D
142GreenfieldHennepin County · 2,962 people61.7top 24.9%A−Strongest: jobs & income A+, health A·lowest: walkability C−
148East Grand ForksPolk County · 8,906 people61.3top 26.2%B+Strongest: walkability A, safety A·lowest: cost of living C
149May TownshipWashington County · 2,638 people61.1top 26.6%B+Strongest: jobs & income A+, health A·lowest: walkability D
151PrincetonMille Lacs County · 5,480 people61.0top 26.9%B+Strongest: cost of living A−, schools B·lowest: safety B−
152ScandiaWashington County · 3,979 people60.9top 27.0%B+Strongest: jobs & income A+, health A−·lowest: walkability C−
154Spring Lake TownshipScott County · 3,498 people60.8top 27.5%B+Strongest: jobs & income A+, schools A·lowest: cost of living C−
157Marion TownshipOlmsted County · 4,111 people60.3top 28.6%B+Strongest: jobs & income A+, health B+·lowest: hazard risk C
158ColumbusAnoka County · 4,356 people60.2top 28.9%B+Strongest: jobs & income A+, health A−·lowest: walkability C
159Blue Hill TownshipSherburne County · 2,625 people60.0top 29.4%B+Strongest: cost of living A−, health B+·lowest: walkability D
162AftonWashington County · 2,960 people59.9top 29.6%B+Strongest: health A, jobs & income A·lowest: cost of living D
164New Market TownshipScott County · 3,574 people59.6top 30.3%B+Strongest: schools A, health A·lowest: cost of living D
165Oak Park HeightsWashington County · 4,625 people59.6top 30.4%B+Strongest: schools A, health A−·lowest: safety C−
166PipestonePipestone County · 4,100 people59.6top 30.4%B+Strongest: cost of living A, hazard risk A−·lowest: health C
167Eagle LakeBlue Earth County · 3,357 people59.6top 30.4%B+Strongest: health A, jobs & income A−·lowest: walkability C
169Blue EarthFaribault County · 3,165 people58.9top 32.2%B+Strongest: walkability A, cost of living A−·lowest: hazard risk C−
170Linwood TownshipAnoka County · 5,403 people58.8top 32.4%B+Strongest: jobs & income A−, health B+·lowest: walkability D
171FoleyBenton County · 2,650 people58.7top 32.6%B+Strongest: walkability A, schools A−·lowest: safety C+
172Watab TownshipBenton County · 3,478 people58.6top 33.0%B+Strongest: jobs & income A−, health B+·lowest: walkability D
173WindomCottonwood County · 4,817 people58.5top 33.1%B+Strongest: cost of living A, walkability B+·lowest: hazard risk C
176LitchfieldMeeker County · 6,528 people58.4top 33.5%B+Strongest: schools A−, hazard risk B+·lowest: jobs & income C
178WabashaWabasha County · 2,599 people58.2top 34.1%B+Strongest: walkability A, cost of living A−·lowest: schools C+
179GlencoeMcLeod County · 5,632 people58.1top 34.3%B+Strongest: walkability B+, safety B+·lowest: hazard risk C+
181Oak GroveAnoka County · 9,476 people57.6top 35.8%BStrongest: jobs & income A, health A−·lowest: walkability D
182Thief River FallsPennington County · 8,799 people57.2top 36.7%BStrongest: cost of living A−, walkability B+·lowest: hazard risk D
183Cascade TownshipOlmsted County · 2,810 people57.2top 36.9%BStrongest: health A, jobs & income A·lowest: cost of living C
185NewportWashington County · 5,525 people57.0top 37.3%BStrongest: schools A−, hazard risk B+·lowest: cost of living C+
187St. AugustaStearns County · 3,799 people56.7top 38.1%BStrongest: jobs & income A, hazard risk A−·lowest: schools C−
189MilacaMille Lacs County · 3,041 people56.4top 39.0%BStrongest: cost of living A−, walkability A−·lowest: jobs & income C
191OsseoHennepin County · 2,534 people56.2top 39.6%BStrongest: health A, walkability A·lowest: safety C+
192MoraKanabec County · 3,763 people56.0top 40.0%BStrongest: walkability A, schools A−·lowest: jobs & income C
193Granite FallsYellow Medicine County · 2,691 people55.9top 40.4%BStrongest: cost of living A, walkability A−·lowest: jobs & income C
194Wakefield TownshipStearns County · 2,829 people55.8top 40.6%BStrongest: jobs & income A−, health A−·lowest: walkability C
195RoseauRoseau County · 2,685 people55.5top 41.4%BStrongest: walkability A−, cost of living A−·lowest: hazard risk D
196St. JamesWatonwan County · 4,863 people55.4top 41.5%BStrongest: cost of living A−, walkability A−·lowest: jobs & income D
200Cambridge TownshipIsanti County · 2,592 people54.9top 43.1%BStrongest: jobs & income B+, health B·lowest: walkability C+
202PerhamOtter Tail County · 3,746 people54.8top 43.2%BStrongest: walkability A, hazard risk A·lowest: jobs & income D
204Spring Lake ParkAnoka County · 7,127 people54.5top 44.0%BStrongest: walkability A, hazard risk A−·lowest: safety C+
205BreckenridgeWilkin County · 3,323 people54.4top 44.1%BStrongest: cost of living A, hazard risk B+·lowest: jobs & income D
207International FallsKoochiching County · 5,481 people54.3top 44.5%BStrongest: cost of living A+, walkability A·lowest: jobs & income D
209DilworthClay County · 4,823 people54.1top 45.0%BStrongest: walkability A+, hazard risk A−·lowest: safety D
210St. JosephStearns County · 6,846 people54.0top 45.3%B−Strongest: walkability B+, hazard risk B+·lowest: schools C−
212StaplesTodd County · 3,074 people53.5top 46.7%B−Strongest: cost of living A−, hazard risk A−·lowest: jobs & income D
213WasecaWaseca County · 9,035 people53.5top 46.8%B−Strongest: hazard risk A−, walkability B+·lowest: schools C+
214Rice LakeSt. Louis County · 4,169 people53.4top 47.1%B−Strongest: jobs & income A−, hazard risk B+·lowest: cost of living C−
215Bradford TownshipIsanti County · 3,549 people53.4top 47.1%B−Strongest: health B+, cost of living B·lowest: walkability C
216Redwood FallsRedwood County · 5,040 people52.6top 49.5%B−Strongest: walkability A, cost of living B+·lowest: jobs & income C
219White TownshipSt. Louis County · 3,088 people52.3bottom 49.7%B−Strongest: cost of living A+, hazard risk A−·lowest: jobs & income C
220Rush CityChisago County · 3,300 people52.1bottom 49.2%B−Strongest: cost of living B+, walkability B·lowest: jobs & income C−
221Sauk CentreStearns County · 4,663 people52.1bottom 49.2%B−Strongest: walkability A, safety B+·lowest: jobs & income D
222Palmer TownshipSherburne County · 2,633 people52.1bottom 49.2%B−Strongest: jobs & income A, health B·lowest: walkability C−
223Cold SpringStearns County · 4,329 people52.0bottom 49.0%B−Strongest: health A−, schools B+·lowest: cost of living C−
224Long PrairieTodd County · 3,830 people51.9bottom 48.7%B−Strongest: hazard risk A+, walkability A−·lowest: schools C−
226Harris TownshipItasca County · 3,364 people51.8bottom 48.3%B−Strongest: schools B+, health B·lowest: walkability D
229Bemidji TownshipBeltrami County · 4,031 people50.8bottom 45.8%B−Strongest: health B, cost of living B−·lowest: hazard risk C+
232BensonSwift County · 3,444 people50.2bottom 44.0%C+Strongest: walkability A, safety A−·lowest: hazard risk C−
235CohassetItasca County · 2,728 people49.4bottom 41.8%C+Strongest: schools B+, health B·lowest: walkability D
237ChisholmSt. Louis County · 4,625 people48.8bottom 40.2%C+Strongest: cost of living A, walkability A−·lowest: health C−
240CrookstonPolk County · 7,375 people48.4bottom 39.1%C+Strongest: walkability A, cost of living B+·lowest: hazard risk C−
242EvelethSt. Louis County · 3,381 people48.3bottom 38.9%C+Strongest: hazard risk A, cost of living A·lowest: jobs & income D
244VirginiaSt. Louis County · 8,187 people48.0bottom 37.9%C+Strongest: cost of living A, walkability A−·lowest: jobs & income D
245BaxterCrow Wing County · 9,217 people47.9bottom 37.7%C+Strongest: hazard risk A−, health B+·lowest: cost of living C−
247Grand Lake TownshipSt. Louis County · 2,705 people47.5bottom 36.7%C+Strongest: schools B+, hazard risk B+·lowest: walkability D
248Northern TownshipBeltrami County · 3,701 people47.2bottom 35.7%C+Strongest: jobs & income B+, health B·lowest: cost of living C
252Pine CityPine County · 3,820 people46.3bottom 33.7%CStrongest: cost of living B+, walkability B·lowest: jobs & income D
255WadenaWadena County · 4,341 people45.8bottom 32.4%CStrongest: hazard risk A, walkability A−·lowest: jobs & income D
257Collegeville TownshipStearns County · 3,262 people44.6bottom 29.1%CStrongest: health B+, hazard risk B+·lowest: cost of living D
258Moose LakeCarlton County · 2,948 people44.6bottom 29.1%CStrongest: cost of living A−, hazard risk B+·lowest: jobs & income D
263Pokegama TownshipPine County · 2,884 people41.7bottom 22.5%C−Strongest: schools B, jobs & income B−·lowest: hazard risk C−
264Little FallsMorrison County · 9,277 people40.7bottom 20.5%C−Strongest: walkability B+, cost of living B·lowest: hazard risk D
265Park RapidsHubbard County · 4,447 people40.1bottom 19.2%C−Strongest: walkability A−, hazard risk B+·lowest: jobs & income D−
267SandstonePine County · 2,543 people39.6bottom 18.2%C−Strongest: walkability A−, hazard risk B+·lowest: jobs & income D−
271Waite ParkStearns County · 8,450 people31.6bottom 6.4%DStrongest: walkability A, hazard risk A−·lowest: safety 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 Minnesota. 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 Minnesota?

Among 167 graded towns of 2,500 to 9,999 residents, Chatfield (Fillmore County) ranks first, with an A+; safety (A+) and schools (A) are its strongest grades; hazard risk (B−) is its lowest. Barnesville and Deephaven 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 Minnesota. 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 (167 in Minnesota). 301 smaller places have subject grades only; 3 towns of 2,500+ lack enough data for a grade; Larger towns are on the best places to live list. Every town is on the Minnesota page.

Go deeper

More Minnesota lists

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

All Minnesota rankings →
Other states

Best small towns in other states