MoverScout

Who's moving to Iowa

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

-2,381 net households from other states
Arrived from other states
32,117
households, 2022-2023
Left for other states
34,498
households, 2022-2023
Moved within Iowa
46,397
households changed county, stayed in state

-2,381 net households — Arrivals from other states and departures to them are close in volume — departures edge ahead by 2,381 households. That loss has narrowed by 42% over five years. Another 146 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 Des Moines →
Net household change, five years
Every move in or out of Iowa, including from abroad — so the latest bar can differ slightly from the state-to-state figure above.
-4,225
18–19
-2,565
19–20
-461
20–21
-4,742
21–22
-2,442
22–23
Iowa City · Johnson County: -608 net from other states, 10,362 moved in or out Cedar Rapids · Linn County: -317 net from other states, 9,959 moved in or out Waukee · Dallas County: +127 net from other states, 9,761 moved in or out Davenport · Scott County: +112 net from other states, 8,575 moved in or out Ames · Story County: -559 net from other states, 7,066 moved in or out Waterloo · Black Hawk County: -107 net from other states, 5,727 moved in or out Sioux City · Woodbury County: -136 net from other states, 4,642 moved in or out Council Bluffs · Pottawattamie County: +84 net from other states, 4,388 moved in or out Dubuque · Dubuque County: +54 net from other states, 3,885 moved in or out Indianola · Warren County: -39 net from other states, 3,342 moved in or out Mason City · Cerro Gordo County: -60 net from other states, 2,034 moved in or out Clinton · Clinton County: +4 net from other states, 1,921 moved in or out Newton · Jasper County: -7 net from other states, 1,931 moved in or out Muscatine · Muscatine County: -31 net from other states, 1,793 moved in or out Pella · Marion County: +5 net from other states, 1,710 moved in or out Marshalltown · Marshall County: +20 net from other states, 1,677 moved in or out Ottumwa · Wapello County: +42 net from other states, 1,655 moved in or out Burlington · Des Moines County: +34 net from other states, 1,604 moved in or out Fort Dodge · Webster County: -23 net from other states, 1,527 moved in or out Boone · Boone County: +1 net from other states, 1,429 moved in or out Waverly · Bremer County: +4 net from other states, 1,358 moved in or out Vinton · Benton County: -9 net from other states, 1,283 moved in or out Le Mars · Plymouth County: -67 net from other states, 1,252 moved in or out Sioux Center · Sioux County: -98 net from other states, 1,170 moved in or out Fort Madison · Lee County: -15 net from other states, 1,162 moved in or out Washington · Washington County: -23 net from other states, 1,131 moved in or out Tipton · Cedar County: +13 net from other states, 1,112 moved in or out Spirit Lake · Dickinson County: -31 net from other states, 1,119 moved in or out Storm Lake · Buena Vista County: -22 net from other states, 1,093 moved in or out Oskaloosa · Mahaska County: -31 net from other states, 1,058 moved in or out Grinnell · Poweshiek County: -73 net from other states, 998 moved in or out Mount Pleasant · Henry County: -33 net from other states, 926 moved in or out Independence · Buchanan County: +18 net from other states, 915 moved in or out Fairfield · Jefferson County: -48 net from other states, 903 moved in or out Anamosa · Jones County: -21 net from other states, 908 moved in or out Winterset · Madison County: -63 net from other states, 913 moved in or out Carroll · Carroll County: +20 net from other states, 871 moved in or out Maquoketa · Jackson County: +30 net from other states, 870 moved in or out Tama · Tama County: +8 net from other states, 877 moved in or out Spencer · Clay County: +18 net from other states, 851 moved in or out Oelwein · Fayette County: -6 net from other states, 828 moved in or out Charles City · Floyd County: +11 net from other states, 845 moved in or out Guttenberg · Clayton County: +0 net from other states, 824 moved in or out Iowa Falls · Hardin County: +41 net from other states, 823 moved in or out Williamsburg · Iowa County: -12 net from other states, 784 moved in or out Glenwood · Mills County: +39 net from other states, 783 moved in or out Decorah · Winneshiek County: -12 net from other states, 788 moved in or out Webster City · Hamilton County: +16 net from other states, 754 moved in or out Manchester · Delaware County: +17 net from other states, 737 moved in or out Denison · Crawford County: -24 net from other states, 684 moved in or out Sheldon · O'Brien County: -56 net from other states, 698 moved in or out Algona · Kossuth County: +8 net from other states, 628 moved in or out Parkersburg · Butler County: -3 net from other states, 619 moved in or out Atlantic · Cass County: +44 net from other states, 615 moved in or out Grundy Center · Grundy County: -11 net from other states, 609 moved in or out Guthrie Center · Guthrie County: -2 net from other states, 601 moved in or out Missouri Valley · Harrison County: +6 net from other states, 614 moved in or out Clarinda · Page County: +39 net from other states, 614 moved in or out Forest City · Winnebago County: -16 net from other states, 596 moved in or out Eagle Grove · Wright County: +8 net from other states, 578 moved in or out Wapello · Louisa County: -27 net from other states, 554 moved in or out Harlan · Shelby County: +18 net from other states, 562 moved in or out Osceola · Clarke County: +12 net from other states, 546 moved in or out Creston · Union County: -53 net from other states, 538 moved in or out Rockwell City · Calhoun County: +9 net from other states, 503 moved in or out Cherokee · Cherokee County: -20 net from other states, 516 moved in or out Garner · Hancock County: -26 net from other states, 502 moved in or out Red Oak · Montgomery County: +15 net from other states, 511 moved in or out New Hampton · Chickasaw County: +18 net from other states, 475 moved in or out Centerville · Appanoose County: -16 net from other states, 486 moved in or out Waukon · Allamakee County: -10 net from other states, 456 moved in or out Lamoni · Decatur County: -19 net from other states, 440 moved in or out Estherville · Emmet County: +21 net from other states, 442 moved in or out Jefferson · Greene County: +18 net from other states, 416 moved in or out Sigourney · Keokuk County: -25 net from other states, 410 moved in or out Rock Rapids · Lyon County: -15 net from other states, 416 moved in or out Sac City · Sac County: +0 net from other states, 426 moved in or out Osage · Mitchell County: +20 net from other states, 419 moved in or out Hampton · Franklin County: -9 net from other states, 397 moved in or out Greenfield · Adair County: +2 net from other states, 381 moved in or out Cresco · Howard County: -30 net from other states, 384 moved in or out Humboldt · Humboldt County: +5 net from other states, 372 moved in or out Emmetsburg · Palo Alto County: -18 net from other states, 383 moved in or out Northwood · Worth County: +4 net from other states, 366 moved in or out Chariton · Lucas County: -18 net from other states, 361 moved in or out Onawa · Monona County: -1 net from other states, 343 moved in or out Ida Grove · Ida County: -10 net from other states, 324 moved in or out Bloomfield · Davis County: -13 net from other states, 298 moved in or out Pocahontas · Pocahontas County: -27 net from other states, 291 moved in or out Hamburg · Fremont County: +13 net from other states, 300 moved in or out Albia · Monroe County: +0 net from other states, 286 moved in or out Keosauqua · Van Buren County: +3 net from other states, 279 moved in or out Corydon · Wayne County: -9 net from other states, 281 moved in or out Sibley · Osceola County: -4 net from other states, 248 moved in or out Bedford · Taylor County: +7 net from other states, 247 moved in or out Audubon · Audubon County: -6 net from other states, 221 moved in or out Mount Ayr · Ringgold County: -27 net from other states, 194 moved in or out Corning · Adams County: +0 net from other states, 156 moved in or out Des Moines · Polk County: -423 net from other states, 25,252 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.
Des Moines · Polk County — the busiest moving market in Iowa.
Where Iowa 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.
Waukee Dallas County +127
#117 of 3,087 U.S. counties for total household growth
Davenport Scott County +112
#520 of 3,087 U.S. counties for total household growth
Council Bluffs Pottawattamie County +84
#1,144 of 3,087 U.S. counties for total household growth
Dubuque Dubuque County +54
#1,991 of 3,087 U.S. counties for total household growth
Atlantic Cass County +44
#1,329 of 3,087 U.S. counties for total household growth
Ottumwa Wapello County +42
#2,094 of 3,087 U.S. counties for total household growth
Iowa Falls Hardin County +41
#2,326 of 3,087 U.S. counties for total household growth
Glenwood Mills County +39
#1,355 of 3,087 U.S. counties for total household growth
Where Iowa 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.
Iowa City Johnson County -608
Ames Story County -559
Des Moines Polk County -423
Cedar Rapids Linn County -317
Sioux City Woodbury County -136
Waterloo Black Hawk County -107
Sioux Center Sioux County -98
Grinnell Poweshiek County -73
Which states Iowa 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.
Illinois +143
2,932 in
2,789 out
Nebraska +20
1,929 in
1,909 out
Minnesota -472
365 in
837 out
Arizona -164
506 in
670 out
Texas -222
293 in
515 out
South Dakota -166
314 in
480 out

Households arriving in Iowa from another state report $61,810 in average annual income; those leaving for another state report $65,386. Departures out-earn arrivals — Iowa is losing its higher earners.

Arriving from another state$61,810
Leaving for another state$65,386
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 48% of moves unattributed to a specific county, because flows too small to publish are grouped into regional buckets. 99 of Iowa's counties have published data.