MoverScout

Who's moving to North Carolina

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

+39,476 net households from other states · #3 of 51 states
Arrived from other states
170,118
households, 2022-2023
Left for other states
130,642
households, 2022-2023
Moved within North Carolina
183,539
households changed county, stayed in state

+39,476 net households — For every 100 households that left North Carolina for another state, about 130 arrived. North Carolina is a net gainer. That lead is growing — up 53% on five years ago. Another 2,430 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 Charlotte →
Net household change, five years
Every move in or out of North Carolina, including from abroad — so the latest bar can differ slightly from the state-to-state figure above.
+25,585
18–19
+36,985
19–20
+41,485
20–21
+44,479
21–22
+39,207
22–23
Raleigh · Wake County: +7,133 net from other states, 75,813 moved in or out Durham · Durham County: +1,411 net from other states, 30,325 moved in or out Greensboro · Guilford County: +1,105 net from other states, 29,868 moved in or out Fayetteville · Cumberland County: +338 net from other states, 27,994 moved in or out Jacksonville · Onslow County: +967 net from other states, 21,545 moved in or out Winston-Salem · Forsyth County: +1,114 net from other states, 21,422 moved in or out Asheville · Buncombe County: +1,702 net from other states, 18,829 moved in or out Wilmington · New Hanover County: +1,709 net from other states, 17,489 moved in or out Concord · Cabarrus County: +815 net from other states, 16,714 moved in or out Clayton · Johnston County: +916 net from other states, 14,898 moved in or out Monroe · Union County: +792 net from other states, 14,270 moved in or out Gastonia · Gaston County: +494 net from other states, 13,987 moved in or out Mooresville · Iredell County: +1,137 net from other states, 12,801 moved in or out Leland · Brunswick County: +2,099 net from other states, 12,474 moved in or out Chapel Hill · Orange County: +10 net from other states, 12,488 moved in or out Dunn · Harnett County: +378 net from other states, 11,893 moved in or out Greenville · Pitt County: +277 net from other states, 10,160 moved in or out Burlington · Alamance County: +483 net from other states, 10,061 moved in or out Hickory · Catawba County: +430 net from other states, 9,169 moved in or out Thomasville · Davidson County: +427 net from other states, 9,038 moved in or out Salisbury · Rowan County: +160 net from other states, 7,827 moved in or out New Bern · Craven County: +496 net from other states, 7,637 moved in or out Hendersonville · Henderson County: +213 net from other states, 7,226 moved in or out Pinehurst · Moore County: +446 net from other states, 6,924 moved in or out Goldsboro · Wayne County: +183 net from other states, 6,529 moved in or out Asheboro · Randolph County: +170 net from other states, 6,247 moved in or out Lincolnton · Lincoln County: +285 net from other states, 6,010 moved in or out Siler City · Chatham County: +284 net from other states, 5,254 moved in or out Rocky Mount · Nash County: +89 net from other states, 5,249 moved in or out Louisburg · Franklin County: +238 net from other states, 5,195 moved in or out Burgaw · Pender County: +425 net from other states, 5,031 moved in or out Raeford · Hoke County: +247 net from other states, 5,029 moved in or out Shelby · Cleveland County: +61 net from other states, 4,692 moved in or out Sanford · Lee County: +226 net from other states, 4,509 moved in or out Morehead City · Carteret County: +156 net from other states, 4,379 moved in or out Morganton · Burke County: +63 net from other states, 4,049 moved in or out Lumberton · Robeson County: +126 net from other states, 4,078 moved in or out Eden · Rockingham County: +145 net from other states, 3,952 moved in or out Wilson · Wilson County: +126 net from other states, 3,761 moved in or out Boone · Watauga County: -68 net from other states, 3,589 moved in or out Waynesville · Haywood County: +219 net from other states, 3,392 moved in or out Lenoir · Caldwell County: +207 net from other states, 3,396 moved in or out Oxford · Granville County: +28 net from other states, 3,239 moved in or out Albemarle · Stanly County: +111 net from other states, 3,089 moved in or out Mount Airy · Surry County: +31 net from other states, 2,755 moved in or out Cullowhee · Jackson County: +102 net from other states, 2,731 moved in or out Mocksville · Davie County: +70 net from other states, 2,649 moved in or out Tarboro · Edgecombe County: +17 net from other states, 2,699 moved in or out Kinston · Lenoir County: +118 net from other states, 2,635 moved in or out Forest City · Rutherford County: +90 net from other states, 2,630 moved in or out Elizabeth City · Pasquotank County: +158 net from other states, 2,584 moved in or out Clinton · Sampson County: +95 net from other states, 2,541 moved in or out Kill Devil Hills · Dare County: +155 net from other states, 2,522 moved in or out Washington · Beaufort County: +87 net from other states, 2,265 moved in or out King · Stokes County: +73 net from other states, 2,300 moved in or out Moyock · Currituck County: +273 net from other states, 2,119 moved in or out Wallace · Duplin County: +79 net from other states, 2,134 moved in or out North Wilkesboro · Wilkes County: +59 net from other states, 2,066 moved in or out Marion · McDowell County: +87 net from other states, 1,990 moved in or out Franklin · Macon County: +219 net from other states, 2,017 moved in or out Henderson · Vance County: -2 net from other states, 1,985 moved in or out Roanoke Rapids · Halifax County: +47 net from other states, 1,929 moved in or out Whiteville · Columbus County: +49 net from other states, 1,863 moved in or out Brevard · Transylvania County: +117 net from other states, 1,832 moved in or out Andrews · Cherokee County: +227 net from other states, 1,657 moved in or out Roxboro · Person County: +37 net from other states, 1,630 moved in or out Bethlehem · Alexander County: +84 net from other states, 1,565 moved in or out Yadkinville · Yadkin County: +24 net from other states, 1,601 moved in or out Rockingham · Richmond County: +33 net from other states, 1,483 moved in or out Laurinburg · Scotland County: +96 net from other states, 1,469 moved in or out Tryon · Polk County: +97 net from other states, 1,407 moved in or out Elizabethtown · Bladen County: +89 net from other states, 1,330 moved in or out Mars Hill · Madison County: +31 net from other states, 1,304 moved in or out Jefferson · Ashe County: +30 net from other states, 1,197 moved in or out Troy · Montgomery County: +41 net from other states, 1,164 moved in or out Yanceyville · Caswell County: -7 net from other states, 1,079 moved in or out Banner Elk · Avery County: +19 net from other states, 948 moved in or out Maury · Greene County: +51 net from other states, 977 moved in or out Norlina · Warren County: +61 net from other states, 973 moved in or out Wadesboro · Anson County: -21 net from other states, 921 moved in or out Williamston · Martin County: +55 net from other states, 907 moved in or out Gaston · Northampton County: +39 net from other states, 870 moved in or out Ahoskie · Hertford County: +15 net from other states, 857 moved in or out Hertford · Perquimans County: +105 net from other states, 833 moved in or out Cherokee · Swain County: +97 net from other states, 841 moved in or out Burnsville · Yancey County: +94 net from other states, 824 moved in or out Hayesville · Clay County: +147 net from other states, 783 moved in or out Bayboro · Pamlico County: +85 net from other states, 747 moved in or out Windsor · Bertie County: +43 net from other states, 695 moved in or out Camden · Camden County: +25 net from other states, 666 moved in or out Edenton · Chowan County: +58 net from other states, 680 moved in or out Spruce Pine · Mitchell County: +8 net from other states, 672 moved in or out Maysville · Jones County: +12 net from other states, 511 moved in or out Sparta · Alleghany County: +1 net from other states, 482 moved in or out Plymouth · Washington County: +2 net from other states, 467 moved in or out Gatesville · Gates County: +31 net from other states, 440 moved in or out Robbinsville · Graham County: +25 net from other states, 260 moved in or out Ocracoke · Hyde County: +0 net from other states, 143 moved in or out Columbia · Tyrrell County: +0 net from other states, 139 moved in or out Charlotte · Mecklenburg County: +7,445 net from other states, 82,678 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.
Charlotte · Mecklenburg County — the busiest moving market in North Carolina.
Where North Carolina 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.
Charlotte Mecklenburg County +7,445
#19 of 3,087 U.S. counties for total household growth
Raleigh Wake County +7,133
#18 of 3,087 U.S. counties for total household growth
Leland Brunswick County +2,099
#20 of 3,087 U.S. counties for total household growth
Wilmington New Hanover County +1,709
#88 of 3,087 U.S. counties for total household growth
Asheville Buncombe County +1,702
#111 of 3,087 U.S. counties for total household growth
Durham Durham County +1,411
#231 of 3,087 U.S. counties for total household growth
Mooresville Iredell County +1,137
#80 of 3,087 U.S. counties for total household growth
Winston-Salem Forsyth County +1,114
#214 of 3,087 U.S. counties for total household growth
Where North Carolina 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.
Boone Watauga County -68
Wadesboro Anson County -21
Yanceyville Caswell County -7
Henderson Vance County -2
Which states North Carolina 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.
South Carolina -2,706
9,730 in
12,436 out
Florida +4,463
10,757 in
6,294 out
New York +4,833
8,095 in
3,262 out
Virginia +2,162
6,306 in
4,144 out
California +1,989
5,491 in
3,502 out
Texas -68
3,891 in
3,959 out

Households arriving in North Carolina from another state report $80,230 in average annual income; those leaving for another state report $74,476. Arrivals out-earn departures — North Carolina is trading up.

Arriving from another state$80,230
Leaving for another state$74,476
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 33% of moves unattributed to a specific county, because flows too small to publish are grouped into regional buckets. 100 of North Carolina's counties have published data.