State rental market analysis · MN
Minnesota rental markets
60 tracked cities over 20,000 population, 60 ranked and summarized by their median Overall. Every number traces to Census, Zillow and BLS. All states ranked →
Browse every Minnesota ZIP Code area → · the full server-rendered index for this state.
Part of the West North Central Census division (Midwest region).
The honest read
Minnesota ranks #22 of 51 states for rental investing, with a median Overall of 50.5/100 across its ranked cities, above the national median. 60 ranked cities roll up into this grade.
A state grade is the median of its ranked cities, a screen for where to look, not underwriting. Open any city below for its full shown-math breakdown, or run a specific deal through the cap rate and cash-flow calculators.
Where it ranks, factor by factor
Every value is the median across the 60 ranked cities in this state. The national rank compares all 51 states on that one factor; the engine already flips inverted factors (affordability, low unemployment) so a better rank always means a better market. Each factor sits in one of the model’s three categories (Cash Flow, Growth, or Stability); this is a representative summary, and the full thirteen-factor breakdown is on each city’s page. Full methodology.
| Factor | Category | State value | National rank |
|---|---|---|---|
| Gross rent yield | Cash Flow | 5.5% | not measured |
| Rent growth | Growth | 3.9% | not measured |
| Home value growth | Growth | 3.2% | not measured |
| Population growth | Growth | 0.5% | not measured |
| Job growth | Growth | 0.5% | not measured |
| Price-to-income | Cash Flow | 4.0× | not measured |
| Unemployment | Stability | 2.5% | not measured |
| Rental demand | Stability | 33% renters · 490.9% vacancy | not measured |
| Income growth | Growth | 5.3% | not measured |
Every city in Minnesota, ranked
Led by Blaine at 72/100. Click any column to re-sort; every city links to its full shown-math breakdown.
| MN rank | City | Grade | Cash Flow | Growth | Stability | Typical home value | Gross yield | National rank |
|---|---|---|---|---|---|---|---|---|
| 1 | Blaine | 72 | A | C | A | $386,572 | 6.7% | #36 |
| 2 | Otsego | 72 | A | B | C | $429,771 | 7.0% | #37 |
| 3 | Oakdale | 69 | B | B | B | $360,617 | 6.1% | #73 |
| 4 | Elk River | 68 | B | C | B | $402,011 | 6.1% | #85 |
| 5 | Shakopee | 66 | B | B | B | $409,969 | 5.2% | #116 |
| 6 | Savage | 65 | B | C | A | $432,260 | 5.5% | #145 |
| 7 | Rosemount | 65 | B | B | B | $438,376 | 5.6% | #157 |
| 8 | Chaska | 64 | C | B | A | $489,346 | 4.7% | #167 |
| 9 | Inver Grove Heights | 64 | B | C | A | $379,199 | 5.7% | #171 |
| 10 | Cottage Grove | 64 | B | C | B | $402,376 | 5.7% | #173 |
| 11 | Coon Rapids | 64 | B | C | A | $335,555 | 6.0% | #184 |
| 12 | Lino Lakes | 63 | A | C | B | $460,473 | 7.6% | #203 |
| 13 | Woodbury | 63 | B | C | C | $464,466 | 5.8% | #207 |
| 14 | Ramsey | 61 | B | C | C | $392,888 | 6.1% | #262 |
| 15 | Maple Grove | 61 | B | C | B | $430,006 | 6.2% | #274 |
| 16 | Columbia Heights | 60 | B | C | C | $303,089 | 6.3% | #309 |
| 17 | Lakeville | 60 | B | C | C | $491,340 | 5.1% | #324 |
| 18 | South St. Paul | 60 | B | C | A | $304,841 | 5.7% | #328 |
| 19 | Prior Lake | 59 | C | C | A | $534,270 | 4.3% | #339 |
| 20 | Austin | 58 | B | C | C | $193,110 | 6.5% | #389 |
| 21 | West St. Paul | 57 | C | C | B | $324,921 | 5.3% | #402 |
| 22 | Rochester | 57 | B | C | C | $347,877 | 5.8% | #415 |
| 23 med | Andover | 55 | B | C | C | $447,292 | 5.6% | #499 |
| 24 | Apple Valley | 55 | B | D | B | $381,926 | 6.0% | #506 |
| 25 | St. Cloud | 54 | B | C | B | $260,722 | 5.7% | #567 |
| 26 | Fridley | 53 | C | C | C | $326,803 | 5.2% | #621 |
| 27 | Hastings | 53 | C | C | B | $388,563 | 5.4% | #622 |
| 28 | Willmar | 51 | C | C | B | $247,902 | 4.7% | #712 |
| 29 | Northfield | 51 | C | C | B | $396,746 | 5.3% | #727 |
| 30 | Mankato | 51 | D | B | C | $308,167 | 4.7% | #731 |
| 31 | Eagan | 51 | C | D | B | $407,248 | 4.9% | #734 |
| 32 | Farmington | 50 | B | C | D | $405,299 | 5.8% | #752 |
| 33 | Brooklyn Park | 50 | C | D | B | $353,032 | 5.6% | #778 |
| 34 | Faribault | 49 | C | C | C | $307,876 | 5.6% | #810 |
| 35 | Duluth | 48 | C | D | B | $303,370 | 5.8% | #876 |
| 36 | Burnsville | 48 | C | D | B | $373,685 | 4.8% | #884 |
| 37 | Minneapolis | 47 | C | D | C | $338,118 | 5.9% | #950 |
| 38 | Forest Lake | 46 | D | C | C | $432,441 | 4.4% | #959 |
| 39 | Bloomington | 46 | C | D | B | $369,004 | 5.5% | #960 |
| 40 | St. Louis Park | 46 | C | D | C | $389,235 | 5.8% | #961 |
| 41 | Moorhead | 46 | C | C | C | $291,592 | 5.1% | #967 |
| 42 | Plymouth | 46 | C | D | B | $516,680 | 4.5% | #971 |
| 43 | Chanhassen | 46 | C | C | C | $567,149 | 4.6% | #991 |
| 44 | Shoreview | 46 | C | D | B | $420,432 | 5.3% | #1005 |
| 45 | Richfield | 44 | D | D | B | $352,629 | 4.8% | #1098 |
| 46 | Owatonna | 44 | C | D | B | $302,747 | 4.6% | #1099 |
| 47 | Champlin | 44 | B | D | C | $379,177 | 6.1% | #1120 |
| 48 | Brooklyn Center | 43 | C | D | B | $302,111 | 5.2% | #1164 |
| 49 | Crystal | 42 | C | D | C | $323,618 | 5.9% | #1195 |
| 50 | St. Paul | 41 | C | D | C | $299,582 | 6.0% | #1227 |
| 51 med | Winona | 41 | C | F | A | $263,864 | 5.2% | #1233 |
| 52 | Minnetonka | 40 | C | D | C | $493,096 | 4.5% | #1267 |
| 53 | Eden Prairie | 38 | C | D | C | $508,114 | 4.2% | #1349 |
| 54 | Maplewood | 36 | C | D | C | $350,789 | 5.2% | #1458 |
| 55 | New Hope | 35 | D | D | C | $356,089 | 4.8% | #1481 |
| 56 | Edina | 35 | D | D | C | $631,926 | 3.9% | #1512 |
| 57 | Roseville | 34 | D | D | C | $383,912 | 4.5% | #1533 |
| 58 | Golden Valley | 34 | C | F | C | $446,491 | 5.2% | #1551 |
| 59 | White Bear Lake | 34 | C | F | B | $364,439 | 5.8% | #1553 |
| 60 | New Brighton | 32 | D | F | B | $389,217 | 4.4% | #1597 |
Data as of: Zillow ZHVI/ZORI through the latest monthly release · Census ACS 5-yr 2019–2023 · Census PEP July 2024 · BLS LAUS county 2023 annual. Generated 2026-09-01. Methodology & limitations · underwrite any specific deal with the free calculators.
ZIP markets in Minnesota
880 Census ZIP Codes (ZCTAs) in Minnesota · 582 data-eligible for subscores. These are sub-city government areas ranked separately from the Minnesota city table. The overall Rental Investor ZIP Score leaderboard leads; the two component subscores (affordability, rental-market context) follow as independent percentiles. ZIP ranks are shown within the ZIP universe only, never mixed with, and not directly comparable to, city ranks. Vintage: the Key metric column is Census ACS 2020–2024 (5-year), a newer release than the ACS 2019–2023 figures the city table above uses; the same measure can legitimately disagree between the two.
Best overall ZIP Codes in Minnesota
Ranked by the overall Rental Investor ZIP Score. The # is each ZIP Code's canonical MN state rank; the smaller figure is its national rank. Separate from the Minnesota city table and not directly comparable to it.
| MN rank | ZIP Code | Overallgrade · national | Key metric |
|---|---|---|---|
| #1 | 55362Monticello | A 74#113 nat | 4.8%Survey yield |
| #2 | 55318Chaska | A 72#314 nat | 4.4%Survey yield |
| #3 | 55125Woodbury | A 71#374 nat | 5.4%Survey yield |
| #4 | 55379Shakopee | A 70#565 nat | 5.0%Survey yield |
| #5 | 55376St. Michael | A 69#724 nat | 4.6%Survey yield |
| #6 | 55434Blaine | A 68#821 nat | 6.9%Survey yield |
| #7 | 55449Blaine | A 68#845 nat | 4.7%Survey yield |
| #8 | 55008Cambridge | A 68#867 nat | 5.5%Survey yield |
| #9 | 55016Cottage Grove | A 68#889 nat | 5.7%Survey yield |
| #10 | 55328Delano | A 68#953 nat | 2.9%Survey yield |
| #11 | 55313Buffalo | A 68#972 nat | 4.3%Survey yield |
| #12 | 55330Elk River | A 67#1,053 nat | 4.3%Survey yield |
Top affordability ZIP Codes in Minnesota
State-scoped leaders on the affordability subscore only (national rank shown is within that subscore’s data-eligible universe). Substantially an inverse housing-cost signal: a component of the overall score, not a predicted return.
| # | ZIP Code | Affordability | Key metric |
|---|---|---|---|
| 1 | 55753Keewatin | 79#1,457 nat | 12.9%Survey yield |
| 2 | 56262Milan | 76#1,803 nat | 11.9%Survey yield |
| 3 | 56235Donnelly | 76#1,966 nat | 9.5%Survey yield |
| 4 | 55713Buhl | 75#1,976 nat | 9.7%Survey yield |
| 5 | 56676Shevlin | 73#2,382 nat | 6.4%Survey yield |
| 6 | 55614Silver Bay | 72#2,525 nat | 7.5%Survey yield |
| 7 | 55030Grasston | 72#2,582 nat | 10.7%Survey yield |
| 8 | 56144Jasper | 71#2,688 nat | 9.3%Survey yield |
| 9 | 56170Ruthton | 71#2,688 nat | 9.5%Survey yield |
| 10 | 55708Biwabik | 71#2,732 nat | 9.0%Survey yield |
| 11 | 56115Balaton | 71#2,780 nat | 6.7%Survey yield |
| 12 | 56292Seaforth | 71#2,793 nat | 10.4%Survey yield |
Deepest rental-market ZIP Codes in Minnesota
State-scoped leaders on the rental-market-context subscore only (national rank shown is within that subscore’s data-eligible universe). Rental depth/tightness: a separate component, never combined here with affordability.
| # | ZIP Code | Rental market | Key metric |
|---|---|---|---|
| 1 | 55802Duluth | 84#32 nat | 1.6%Survey yield |
| 2 | 55812Duluth | 79#299 nat | 4.3%Survey yield |
| 3 | 56267Morris | 78#407 nat | 4.9%Survey yield |
| 4 | 56304St. Cloud | 78#445 nat | 4.6%Survey yield |
| 5 | 55408Minneapolis | 78#518 nat | 4.1%Survey yield |
| 6 | 55120Mendota Heights | 76#779 nat | 3.8%Survey yield |
| 7 | 55077Inver Grove Heights | 76#803 nat | 3.3%Survey yield |
| 8 | 56387Waite Park | 76#803 nat | 5.8%Survey yield |
| 9 | 55806Duluth | 75#916 nat | 6.8%Survey yield |
| 10 | 56425Baxter | 75#976 nat | 4.2%Survey yield |
| 11 | 55121Eagan | 74#1,042 nat | 6.9%Survey yield |
| 12 | 55343Minnetonka | 74#1,125 nat | 4.9%Survey yield |