State rental market analysis · MN
Minnesota rental markets
150 tracked cities over 5,000 population, 150 ranked and summarized by their median Overall; 1 of 150 evaluable cities pass the modeled Buy & Hold screen. Every number traces to Census, Zillow and BLS. Compare state coverage and results →
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 #19 of 37 coverage-eligible states for rental investing, with a median Overall of 47.8/100 across its ranked cities, above the national median. 150 ranked cities roll up into this grade. Its strongest factor is affordability (price-to-income): 3.9×, 16th of 51.
The biggest drag is income growth: 4.5%, 40th of 51. 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 150 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% | #33 of 51 |
| Rent growth | Growth | 4.2% | #23 of 51 |
| Home value growth | Growth | 3.3% | #38 of 51 |
| Population growth | Growth | 0.6% | #23 of 51 |
| Job growth | Growth | 0.4% | #34 of 51 |
| Price-to-income | Cash Flow | 3.9× | #16 of 51 |
| Unemployment | Stability | 3.7% | #20 of 51 |
| Rental demand | Stability | 32% renters · 5.2% vacancy | two-part measure |
| Income growth | Growth | 4.5% | #40 of 51 |
Every city in Minnesota, ranked
Led by Blaine at 71/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 | 71 | B | C | A | $381,495 | 6.5% | #110 |
| 2 | Rosemount | 70 | B | B | B | $430,516 | 5.8% | #141 |
| 3 | Albertville | 70 | A | A | D | $381,884 | 11.1% | #152 |
| 4 | Elk River | 69 | B | B | B | $399,244 | 6.2% | #164 |
| 5 med | Otsego | 69 | B | B | B | $427,788 | 5.3% | #177 |
| 6 | Andover | 68 | A | C | B | $442,081 | 7.7% | #207 |
| 7 | Victoria | 68 | B | B | B | $618,938 | 4.8% | #224 |
| 8 | Ramsey | 67 | B | C | B | $388,691 | 6.1% | #245 |
| 9 | Monticello | 67 | B | B | B | $331,545 | 6.0% | #266 |
| 10 med | Elko New Market | 66 | B | B | C | $476,560 | 6.1% | #318 |
| 11 | Woodbury | 65 | B | B | B | $462,126 | 5.7% | #361 |
| 12 | Big Lake | 64 | C | A | C | $376,679 | 4.7% | #383 |
| 13 | Cottage Grove | 64 | B | B | B | $398,619 | 5.7% | #400 |
| 14 | Savage | 64 | B | C | A | $427,936 | 5.6% | #416 |
| 15 | Maple Grove | 63 | B | C | B | $424,047 | 6.4% | #445 |
| 16 | Lakeville | 63 | B | C | B | $485,324 | 5.3% | #450 |
| 17 med | Spring Lake Park | 63 | B | C | B | $321,362 | 5.8% | #500 |
| 18 med | Oak Grove | 62 | B | C | B | $469,108 | 5.8% | #505 |
| 19 | Chaska | 62 | C | B | B | $481,370 | 4.8% | #542 |
| 20 | Shakopee | 62 | C | B | B | $404,615 | 5.3% | #575 |
| 21 med | Lino Lakes | 61 | B | C | B | $455,684 | 5.5% | #589 |
| 22 | Oakdale | 61 | B | B | C | $357,984 | 6.3% | #622 |
| 23 med | East Bethel | 61 | B | C | B | $419,337 | 5.6% | #624 |
| 24 | Waconia | 61 | C | B | B | $463,746 | 5.1% | #628 |
| 25 | St. Michael | 61 | C | B | C | $434,728 | 4.9% | #645 |
| 26 | Inver Grove Heights | 61 | B | C | B | $374,728 | 5.8% | #659 |
| 27 | Farmington | 60 | B | C | B | $399,671 | 5.6% | #670 |
| 28 med | St. Francis | 60 | C | B | B | $350,303 | 4.7% | #688 |
| 29 med | St. Paul Park | 60 | A | C | C | $318,580 | 9.9% | #707 |
| 30 | South St. Paul | 59 | B | C | B | $299,854 | 6.2% | #781 |
| 31 | Prior Lake | 59 | C | C | B | $530,206 | 4.6% | #831 |
| 32 | Coon Rapids | 59 | B | C | B | $330,973 | 5.8% | #837 |
| 33 med | Hugo | 58 | B | B | C | $437,499 | 5.5% | #874 |
| 34 med | Zimmerman | 58 | C | B | C | $336,797 | 5.2% | #879 |
| 35 med | Cambridge | 58 | C | B | C | $330,539 | 6.2% | #890 |
| 36 | Austin | 58 | B | B | C | $190,664 | 6.5% | #909 |
| 37 | Rogers | 57 | B | C | C | $464,314 | 5.7% | #975 |
| 38 med | North Branch | 57 | C | C | B | $355,754 | 4.9% | #1044 |
| 39 | Anoka | 56 | C | C | B | $333,172 | 5.1% | #1178 |
| 40 | Columbia Heights | 56 | B | C | C | $298,962 | 6.5% | #1180 |
| 41 med | Carver | 55 | C | B | C | $498,356 | 3.7% | #1215 |
| 42 | Isanti | 55 | C | B | C | $334,811 | 5.1% | #1244 |
| 43 | Waite Park | 55 | C | C | B | $251,127 | 5.6% | #1248 |
| 44 | Rochester | 55 | C | C | C | $342,187 | 5.8% | #1259 |
| 45 med | Belle Plaine | 55 | C | B | C | $351,027 | 5.1% | #1298 |
| 46 | Hopkins | 55 | C | C | B | $332,268 | 5.7% | #1322 |
| 47 | Sartell | 54 | C | C | B | $336,145 | 5.5% | #1345 |
| 48 med | Dayton | 54 | C | B | C | $514,425 | 3.9% | #1384 |
| 49 med | Jordan | 54 | C | B | C | $439,887 | 4.3% | #1400 |
| 50 | Bemidji | 54 | B | C | C | $219,753 | 6.6% | #1405 |
| 51 | Stillwater | 54 | C | C | B | $454,751 | 6.3% | #1417 |
| 52 | Chanhassen | 54 | C | C | B | $561,960 | 4.8% | #1431 |
| 53 | Robbinsdale | 53 | B | D | B | $315,193 | 6.7% | #1459 |
| 54 med | New Prague | 53 | C | C | C | $354,219 | 4.8% | #1489 |
| 55 | Buffalo | 52 | C | B | C | $379,435 | 5.1% | #1580 |
| 56 | St. Anthony | 52 | C | C | C | $399,650 | 6.9% | #1589 |
| 57 med | Montevideo | 52 | B | D | C | $212,393 | 7.2% | #1673 |
| 58 med | Byron | 52 | C | B | C | $402,530 | 3.9% | #1717 |
| 59 med | Lake Elmo | 51 | C | B | C | $638,544 | 4.8% | #1755 |
| 60 | Hastings | 51 | C | C | B | $382,842 | 5.1% | #1812 |
| 61 med | Becker | 51 | D | B | B | $382,233 | 3.9% | #1852 |
| 62 | Burnsville | 51 | C | C | B | $368,875 | 4.8% | #1880 |
| 63 | Apple Valley | 50 | B | D | C | $376,085 | 6.2% | #1895 |
| 64 | Forest Lake | 50 | D | C | B | $429,007 | 4.3% | #1910 |
| 65 | Eagan | 50 | C | D | B | $401,493 | 5.1% | #1935 |
| 66 | Albert Lea | 50 | A | D | C | $182,805 | 7.5% | #1948 |
| 67 | Mahtomedi | 50 | B | C | C | $487,826 | 6.2% | #1962 |
| 68 med | Morris | 50 | B | D | C | $214,600 | 5.4% | #1987 |
| 69 med | Worthington | 49 | C | D | B | $248,985 | 5.4% | #2056 |
| 70 | Kasson | 48 | D | B | C | $332,842 | 3.9% | #2222 |
| 71 | Plymouth | 48 | C | D | B | $509,531 | 4.5% | #2224 |
| 72 | Red Wing | 48 | C | D | B | $284,314 | 5.7% | #2230 |
| 73 | Sauk Rapids | 48 | D | C | B | $303,905 | 4.3% | #2257 |
| 74 | West St. Paul | 48 | C | C | C | $320,501 | 5.4% | #2278 |
| 75 | St. Louis Park | 48 | C | D | C | $380,129 | 5.9% | #2291 |
| 76 | Thief River Falls | 48 | A | D | C | $185,981 | 7.9% | #2296 |
| 77 | Vadnais Heights | 48 | B | D | C | $371,997 | 7.0% | #2333 |
| 78 | Champlin | 47 | B | D | B | $372,801 | 6.0% | #2349 |
| 79 | St. Cloud | 47 | C | C | D | $257,776 | 5.8% | #2372 |
| 80 | Virginia | 47 | A | D | C | $131,095 | 9.6% | #2391 |
| 81 med | Glencoe | 47 | C | D | C | $258,689 | 5.8% | #2400 |
| 82 med | Princeton | 47 | D | B | C | $377,536 | 5.4% | #2415 |
| 83 | Minnetrista | 47 | D | C | C | $684,700 | 4.2% | #2422 |
| 84 | Brooklyn Park | 47 | C | C | C | $347,941 | 5.5% | #2433 |
| 85 med | New Ulm | 47 | C | D | B | $254,537 | 5.7% | #2437 |
| 86 | Fergus Falls | 47 | C | C | C | $205,415 | 5.3% | #2457 |
| 87 | Mankato | 46 | D | B | C | $305,115 | 4.7% | #2550 |
| 88 | Shoreview | 46 | C | D | B | $412,359 | 5.6% | #2572 |
| 89 med | St. Joseph | 45 | C | D | C | $334,548 | 5.7% | #2718 |
| 90 med | Medina | 45 | D | B | C | $841,104 | 2.3% | #2717 |
| 91 | North Mankato | 45 | C | D | B | $313,736 | 4.8% | #2726 |
| 92 | Northfield | 45 | D | C | C | $392,562 | 5.3% | #2744 |
| 93 med | Delano | 45 | D | B | C | $436,921 | 3.1% | #2758 |
| 94 | Faribault | 45 | C | C | C | $305,393 | 5.3% | #2763 |
| 95 med | Hibbing | 45 | A | D | C | $164,731 | 7.7% | #2767 |
| 96 | Willmar | 44 | C | C | C | $243,378 | 4.6% | #2798 |
| 97 med | Ham Lake | 44 | D | C | B | $502,915 | 3.2% | #2805 |
| 98 | Moorhead | 44 | C | C | C | $288,806 | 4.8% | #2814 |
| 99 med | Stewartville | 44 | D | C | C | $337,255 | 4.8% | #2823 |
| 100 | Mendota Heights | 44 | D | D | B | $572,103 | 4.3% | #2876 |
| 101 | Bloomington | 44 | C | D | C | $362,340 | 5.6% | #2884 |
| 102 | North St. Paul | 44 | C | C | C | $327,069 | 5.2% | #2905 |
| 103 med | St. Peter | 44 | D | D | A | $300,004 | 4.6% | #2926 |
| 104 | Duluth | 43 | C | D | C | $298,068 | 5.8% | #2941 |
| 105 | Minnetonka | 43 | D | D | C | $485,327 | 4.5% | #2956 |
| 106 med | Wyoming | 43 | D | C | C | $394,982 | 3.8% | #2976 |
| 107 med | Marshall | 43 | D | D | B | $242,209 | 4.4% | #2985 |
| 108 med | Cloquet | 43 | C | D | B | $266,092 | 5.8% | #2988 |
| 109 | Mound | 43 | B | D | C | $381,471 | 7.9% | #3004 |
| 110 | Fridley | 43 | C | C | D | $322,440 | 5.3% | #3028 |
| 111 med | Chisago City | 42 | D | B | C | $443,258 | 3.8% | #3125 |
| 112 med | Detroit Lakes | 42 | D | C | B | $375,255 | 4.3% | #3128 |
| 113 med | North Oaks | 42 | C | D | D | $958,858 | 5.1% | #3132 |
| 114 med | Waseca | 42 | C | D | C | $250,690 | 5.7% | #3154 |
| 115 | Eden Prairie | 42 | D | D | B | $502,326 | 4.3% | #3211 |
| 116 med | Alexandria | 41 | D | C | C | $297,583 | 4.1% | #3291 |
| 117 | Crystal | 41 | C | D | C | $317,553 | 5.7% | #3300 |
| 118 med | Baxter | 41 | D | C | D | $369,294 | 4.3% | #3349 |
| 119 med | Redwood Falls | 40 | B | D | C | $173,309 | 6.2% | #3422 |
| 120 | Richfield | 40 | D | D | C | $346,827 | 4.8% | #3435 |
| 121 | White Bear Lake | 40 | C | F | B | $358,126 | 5.9% | #3453 |
| 122 | Brainerd | 40 | F | B | B | $315,174 | 3.7% | #3464 |
| 123 med | International Falls | 40 | B | F | B | $156,848 | 6.4% | #3484 |
| 124 med | Hermantown | 39 | D | D | C | $432,848 | 4.6% | #3519 |
| 125 | Owatonna | 39 | D | D | C | $298,885 | 4.6% | #3526 |
| 126 med | Lake City | 39 | D | C | C | $322,021 | 4.4% | #3546 |
| 127 med | Arden Hills | 39 | C | D | C | $479,132 | 4.6% | #3571 |
| 128 | Golden Valley | 38 | C | D | B | $437,635 | 5.4% | #3619 |
| 129 | Hutchinson | 38 | D | D | D | $299,894 | 4.7% | #3628 |
| 130 | Minneapolis | 38 | C | D | D | $328,529 | 6.1% | #3637 |
| 131 med | Fairmont | 37 | C | D | C | $170,959 | 5.2% | #3764 |
| 132 | Edina | 37 | D | C | B | $626,258 | 3.9% | #3768 |
| 133 | Winona | 36 | D | D | B | $262,085 | 4.7% | #3810 |
| 134 | New Hope | 36 | D | D | B | $349,790 | 4.7% | #3822 |
| 135 | St. Paul | 36 | C | D | D | $294,297 | 6.1% | #3830 |
| 136 | Brooklyn Center | 36 | C | D | D | $297,804 | 5.5% | #3865 |
| 137 med | Grand Rapids | 36 | C | D | D | $282,918 | 6.1% | #3875 |
| 138 med | Litchfield | 36 | C | D | C | $257,886 | 6.3% | #3885 |
| 139 | New Brighton | 34 | D | D | B | $382,053 | 4.3% | #4047 |
| 140 | Maplewood | 34 | C | D | D | $344,565 | 5.3% | #4061 |
| 141 med | Mounds View | 33 | D | D | D | $343,011 | 4.6% | #4097 |
| 142 | Roseville | 33 | D | D | C | $376,637 | 4.7% | #4143 |
| 143 med | Little Falls | 32 | F | C | D | $281,100 | 4.4% | #4200 |
| 144 med | Shorewood | 31 | F | D | B | $828,641 | 2.7% | #4268 |
| 145 | Little Canada | 30 | D | D | D | $363,005 | 4.5% | #4277 |
| 146 med | La Crescent | 30 | D | D | D | $361,569 | 3.9% | #4281 |
| 147 med | East Grand Forks | 28 | D | D | D | $297,460 | 4.2% | #4417 |
| 148 med | Crookston | 27 | C | F | D | $190,266 | 5.5% | #4488 |
| 149 | Falcon Heights | 26 | D | D | C | $413,839 | 3.8% | #4494 |
| 150 med | Orono | 23 | F | D | C | $1,154,275 | 2.2% | #4626 |
Data as of: Zillow ZHVI/ZORI through the latest monthly release · Census ACS 5-yr 2020–2024 · Census PEP July 2025 · BLS LAUS county 2025 annual (11-month average). Generated 2026-10-06. 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), the same release the city table above uses; the geographies differ, so the same measure can still 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 | 55125Woodbury | A 72#236 nat | 5.4%Survey yield |
| #2 | 55318Chaska | A 72#319 nat | 4.4%Survey yield |
| #3 | 55362Monticello | A 71#408 nat | 4.8%Survey yield |
| #4 | 55309Big Lake | A 69#610 nat | 4.7%Survey yield |
| #5 | 55434Blaine | A 69#660 nat | 6.9%Survey yield |
| #6 | 55379Shakopee | A 69#678 nat | 5.0%Survey yield |
| #7 | 55330Elk River | A 68#771 nat | 4.3%Survey yield |
| #8 | 55016Cottage Grove | A 68#812 nat | 5.7%Survey yield |
| #9 | 55008Cambridge | A 68#893 nat | 5.5%Survey yield |
| #9 | 55303Ramsey | A 68#893 nat | 4.9%Survey yield |
| #9 | 55449Blaine | A 68#893 nat | 4.7%Survey yield |
| #12 | 56401Brainerd | A 67#1,187 nat | 4.0%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 |