MoverScout

Who's moving to Minnesota

Where households are arriving from and leaving for, county by county — built on official federal tax-filer data, not marketing estimates.

-5,243 net households from other states
Arrived from other states
52,327
households, 2022-2023
Left for other states
57,570
households, 2022-2023
Moved within Minnesota
116,580
households changed county, stayed in state

-5,243 net households — Arrivals from other states and departures to them are close in volume — departures edge ahead by 5,243 households. That loss is deepening — up 92% on five years ago. Another 470 households arrived from abroad.

Moving in from another state? Your mover needs active interstate operating authority — most local companies don't hold one. See licensed movers in Minneapolis →
Net household change, five years
Every move in or out of Minnesota, including from abroad — so the latest bar can differ slightly from the state-to-state figure above.
-2,976
18–19
-6,192
19–20
-9,325
20–21
-8,253
21–22
-5,704
22–23
St. Paul · Ramsey County: +241 net from other states, 41,256 moved in or out Eagan · Dakota County: -551 net from other states, 28,314 moved in or out Coon Rapids · Anoka County: -435 net from other states, 23,011 moved in or out Woodbury · Washington County: -582 net from other states, 18,454 moved in or out Rochester · Olmsted County: +175 net from other states, 10,009 moved in or out Shakopee · Scott County: -264 net from other states, 9,814 moved in or out Saint Cloud · Stearns County: -82 net from other states, 9,174 moved in or out Saint Michael · Wright County: -115 net from other states, 8,836 moved in or out Duluth · St. Louis County: -37 net from other states, 8,748 moved in or out Chanhassen · Carver County: -343 net from other states, 7,025 moved in or out Elk River · Sherburne County: -156 net from other states, 6,920 moved in or out Mankato · Blue Earth County: -93 net from other states, 4,764 moved in or out Moorhead · Clay County: -8 net from other states, 4,122 moved in or out Brainerd · Crow Wing County: -83 net from other states, 3,615 moved in or out North Branch · Chisago County: -98 net from other states, 3,512 moved in or out Faribault · Rice County: -98 net from other states, 3,498 moved in or out Sauk Rapids · Benton County: -75 net from other states, 3,333 moved in or out Cambridge · Isanti County: -95 net from other states, 2,865 moved in or out Fergus Falls · Otter Tail County: -126 net from other states, 2,788 moved in or out North Mankato · Nicollet County: -47 net from other states, 2,519 moved in or out Red Wing · Goodhue County: -94 net from other states, 2,474 moved in or out Winona · Winona County: +1 net from other states, 2,316 moved in or out Bemidji · Beltrami County: -22 net from other states, 2,158 moved in or out Alexandria · Douglas County: -70 net from other states, 2,051 moved in or out Lake Shore · Cass County: -45 net from other states, 2,032 moved in or out Hutchinson · McLeod County: -28 net from other states, 1,954 moved in or out Willmar · Kandiyohi County: -66 net from other states, 1,912 moved in or out Owatonna · Steele County: -17 net from other states, 1,890 moved in or out Austin · Mower County: -51 net from other states, 1,796 moved in or out Detroit Lakes · Becker County: -14 net from other states, 1,751 moved in or out Grand Rapids · Itasca County: -17 net from other states, 1,744 moved in or out New Prague · Le Sueur County: -59 net from other states, 1,746 moved in or out Cloquet · Carlton County: -59 net from other states, 1,704 moved in or out Princeton · Mille Lacs County: -49 net from other states, 1,708 moved in or out Pine City · Pine County: -25 net from other states, 1,579 moved in or out Little Falls · Morrison County: -41 net from other states, 1,518 moved in or out East Grand Forks · Polk County: -125 net from other states, 1,495 moved in or out Long Prairie · Todd County: -6 net from other states, 1,355 moved in or out Park Rapids · Hubbard County: -43 net from other states, 1,338 moved in or out Albert Lea · Freeborn County: -66 net from other states, 1,276 moved in or out Marshall · Lyon County: -93 net from other states, 1,250 moved in or out Litchfield · Meeker County: -41 net from other states, 1,204 moved in or out Kasson · Dodge County: -64 net from other states, 1,173 moved in or out New Ulm · Brown County: -54 net from other states, 1,091 moved in or out Aitkin · Aitkin County: -45 net from other states, 1,053 moved in or out Lake City · Wabasha County: -44 net from other states, 983 moved in or out Waseca · Waseca County: -33 net from other states, 1,000 moved in or out Chatfield · Fillmore County: -44 net from other states, 936 moved in or out Mora · Kanabec County: -64 net from other states, 938 moved in or out Worthington · Nobles County: -135 net from other states, 934 moved in or out Wadena · Wadena County: -12 net from other states, 944 moved in or out La Crescent · Houston County: -20 net from other states, 909 moved in or out Fairmont · Martin County: -52 net from other states, 816 moved in or out Gaylord · Sibley County: -37 net from other states, 800 moved in or out Thief River Falls · Pennington County: -28 net from other states, 763 moved in or out Olivia · Renville County: -22 net from other states, 782 moved in or out Redwood Falls · Redwood County: -28 net from other states, 681 moved in or out Blue Earth · Faribault County: -3 net from other states, 648 moved in or out Windom · Cottonwood County: -51 net from other states, 639 moved in or out Roseau · Roseau County: -57 net from other states, 644 moved in or out Two Harbors · Lake County: -7 net from other states, 586 moved in or out Glenwood · Pope County: +20 net from other states, 589 moved in or out Montevideo · Chippewa County: -42 net from other states, 552 moved in or out Morris · Stevens County: -4 net from other states, 527 moved in or out Jackson · Jackson County: -3 net from other states, 464 moved in or out Saint James · Watonwan County: -43 net from other states, 458 moved in or out Grand Marais · Cook County: +1 net from other states, 434 moved in or out International Falls · Koochiching County: -32 net from other states, 429 moved in or out Granite Falls · Yellow Medicine County: -12 net from other states, 444 moved in or out Benson · Swift County: +8 net from other states, 411 moved in or out Pipestone · Pipestone County: -24 net from other states, 402 moved in or out Luverne · Rock County: +5 net from other states, 403 moved in or out Bagley · Clearwater County: +10 net from other states, 367 moved in or out Breckenridge · Wilkin County: -27 net from other states, 367 moved in or out Warren · Marshall County: -14 net from other states, 346 moved in or out Slayton · Murray County: -5 net from other states, 356 moved in or out Elbow Lake · Grant County: -6 net from other states, 336 moved in or out Madison · Lac qui Parle County: -10 net from other states, 287 moved in or out Tyler · Lincoln County: -16 net from other states, 246 moved in or out Ada · Norman County: +5 net from other states, 248 moved in or out Ortonville · Big Stone County: -4 net from other states, 183 moved in or out Baudette · Lake of the Woods County: -28 net from other states, 185 moved in or out Mahnomen · Mahnomen County: -21 net from other states, 184 moved in or out Wheaton · Traverse County: -28 net from other states, 181 moved in or out Red Lake Falls · Red Lake County: -22 net from other states, 164 moved in or out Hallock · Kittson County: -28 net from other states, 114 moved in or out Minneapolis · Hennepin County: -221 net from other states, 78,633 moved in or out
Every county at a glance.
Gained households from other states
Lost households to other states
Circle size — households that moved in or out.
Minneapolis · Hennepin County — the busiest moving market in Minnesota.
Where Minnesota is gaining from other states
Largest net state-to-state changes by county — same basis as the figures above, top eight only. Each city page adds the in-state picture.
St. Paul Ramsey County +241
#3,015 of 3,087 U.S. counties for total household growth
Rochester Olmsted County +175
#2,850 of 3,087 U.S. counties for total household growth
Glenwood Pope County +20
#1,186 of 3,087 U.S. counties for total household growth
Bagley Clearwater County +10
#1,993 of 3,087 U.S. counties for total household growth
Benson Swift County +8
#2,123 of 3,087 U.S. counties for total household growth
Ada Norman County +5
#1,597 of 3,087 U.S. counties for total household growth
Luverne Rock County +5
#1,668 of 3,087 U.S. counties for total household growth
Grand Marais Cook County +1
#1,941 of 3,087 U.S. counties for total household growth
Where Minnesota is losing to other states
Largest net state-to-state changes by county — same basis as the figures above, top eight only. Each city page adds the in-state picture.
Woodbury Washington County -582
Eagan Dakota County -551
Coon Rapids Anoka County -435
Chanhassen Carver County -343
Shakopee Scott County -264
Minneapolis Hennepin County -221
Elk River Sherburne County -156
Worthington Nobles County -135
Which states Minnesota trades households with
Each bar shows that state's in/out split — rows ranked by total volume. The IRS publishes only each county's largest partner states, so smaller streams are left out and these totals run below the headline figures.
Wisconsin +438
4,919 in
4,481 out
2,560 in
2,431 out
California -250
1,635 in
1,885 out
Arizona -699
1,324 in
2,023 out
Texas -956
1,034 in
1,990 out
Illinois -280
1,359 in
1,639 out

Households arriving in Minnesota from another state report $70,805 in average annual income; those leaving for another state report $89,961. Departures out-earn arrivals — Minnesota is losing its higher earners.

Arriving from another state$70,805
Leaving for another state$89,961
City-level breakdowns
Every city page has its own migration section — who's arriving, from how far, and what kind of mover that calls for.

How this works: IRS SOI County-to-County Migration Data, 2022-2023. The IRS compares the address on consecutive tax returns, so every move here is a real filed household. The headline figures and county lists count moves that crossed a state line; the five-year chart counts every move, including from abroad. The data publishes annually with about a two-year lag, misses people who don't file a return, and leaves 28% of moves unattributed to a specific county, because flows too small to publish are grouped into regional buckets. 87 of Minnesota's counties have published data.