US county migration intelligence (annual)
IRS Statistics of Income county-to-county migration, tax years 2022->2023 (keyless official xlsx, U.S. public domain): per-county panel (~3,140 counties + DC) of official inflow/outflow/net migration of tax filers, individuals and AGI, non-migrant filer base, net migration rate per 1,000 filers, average AGI per return in vs out with a wealth-flow delta, foreign and disclosure-bundled "other" flow residuals, top-5 inflow/outflow corridors from disclosed (>=20-return) county pairs, inflow concentration (HHI), a documented 0-100 migration-magnet score with national rank and e1-e5 tiers, and wealth-gain / foreign-hub / high-churn flags. Identity-gated: official 96/000 totals reconcile to detail+other+foreign per county; suppressed (<20-return) flows are bundled by the publisher into "other" residuals, never zeroed. Sample use: order by magnet_rank for the strongest magnets, or filter state_abbr for within-state migration geography.
- Rows
- 3,087
- Columns
- 41
- Source cadence
- Yearly
- Last refreshed
- Sep 27, 2026
- Theme
- demographics
| Column | Type | Description |
|---|---|---|
| vintage | string | IRS SOI tax-year pair of the migration vintage. |
| county_fips | string | 5-digit FIPS county code (state + county). (unit: FIPS) |
| county_name | string | County name as published by IRS SOI. |
| state_fips | string | 2-digit state FIPS code. (unit: FIPS) |
| state_abbr | string | USPS state abbreviation. |
| state_name | string | State name. |
| country_code | string | ISO alpha-3 country code (USA for every row). (unit: ISO 3166-1 alpha-3) |
| inflow_returns | float | Official 96/000 total: matched returns that moved INTO the county. (unit: returns) |
| inflow_individuals | float | Official total individuals (exemptions) that moved into the county. (unit: individuals) |
| inflow_agi_k | float | Official total AGI of in-migrants. (unit: thousands of dollars) |
| outflow_returns | float | Official 96/000 total: matched returns that moved OUT of the county. (unit: returns) |
| outflow_individuals | float | Official total individuals that moved out of the county. (unit: individuals) |
| outflow_agi_k | float | Official total AGI of out-migrants. (unit: thousands of dollars) |
| net_returns | float | inflow_returns - outflow_returns. (unit: returns) |
| net_individuals | float | inflow_individuals - outflow_individuals. (unit: individuals) |
| net_agi_k | float | inflow_agi_k - outflow_agi_k. (unit: thousands of dollars) |
| gross_returns | float | inflow_returns + outflow_returns (total migrant returns touching the county). (unit: returns) |
| nonmig_returns | float | Matched returns that stayed in the county (non-migrants). (unit: returns) |
| nonmig_individuals | float | Individuals on non-migrant returns. (unit: individuals) |
| total_filers | float | nonmig_returns + outflow_returns: every 2022 filer in the county either stayed or left. (unit: returns) |
| net_rate_per_1k_filers | float | 1000 * net_returns / total_filers: net migration rate per 1,000 filers. (unit: per 1,000 filers) |
| avg_agi_per_return_inflow | float | inflow_agi_k*1000 / inflow_returns. (unit: dollars) |
| avg_agi_per_return_outflow | float | outflow_agi_k*1000 / outflow_returns. (unit: dollars) |
| agi_delta_per_return | float | avg_agi_per_return_inflow - avg_agi_per_return_outflow: positive = the county gains richer movers than it loses. (unit: dollars) |
| foreign_inflow_returns | float | Inflow residual from foreign pseudo-codes 57/001..009 (Overseas, Puerto Rico, APO/FPO, U.S. Virgin Islands, Other). (unit: returns) |
| foreign_outflow_returns | float | Outflow residual to foreign pseudo-codes 57/001..009. (unit: returns) |
| other_inflow_returns | float | "Other flows" residual: disclosure-suppressed (<20-return) domestic flows bundled by the publisher (58/000 same-state + 59/00x different-state). (unit: returns) |
| other_outflow_returns | float | "Other flows" residual for outflows (58/000 + 59/00x). (unit: returns) |
| detail_inflow_returns | float | Sum of disclosed (>=20-return) detail inflow pairs. (unit: returns) |
| detail_outflow_returns | float | Sum of disclosed (>=20-return) detail outflow pairs. (unit: returns) |
| top_inflow_corridors | string | Top-5 inflow corridors from disclosed detail pairs, '<fips>|<name>|<individuals>' joined by ';'. |
| top_outflow_corridors | string | Top-5 outflow corridors from disclosed detail pairs, '<fips>|<name>|<individuals>' joined by ';'. |
| inflow_hhi | float | Herfindahl-Hirschman concentration of detailed inflow individuals across origin counties (0-1). (unit: index 0-1) |
| migration_magnet_score | float | Documented 0-100 composite: 100 * min-max of the winsorized (p1/p99) net_rate_per_1k_filers panel. 100 = strongest magnet. (unit: score 0-100) |
| magnet_rank | integer | National rank by migration_magnet_score (1 = strongest magnet; ties broken by county_fips). (unit: rank) |
| magnet_tier | string | Score tier: e1 magnet (>=90), e2 attractor (75-90), e3 balanced (25-75), e4 drainer (10-25), e5 exodus (<10). |
| wealth_gain_flag | integer | 1 when agi_delta_per_return > 0 (county gains richer movers than it loses). (unit: 0/1) |
| foreign_hub_flag | integer | 1 when foreign inflow is >= 15% of official inflow. (unit: 0/1) |
| high_churn_flag | integer | 1 when gross_returns >= 50% of total_filers (very high turnover). (unit: 0/1) |
| row_hash | string | Deterministic 16-hex SHA-256 over county_fips + vintage + net/inflow/outflow returns + magnet score. |
| source_url | string | IRS SOI migration data landing page. (unit: URL) |
First 10 sample rows — a preview, not the complete dataset.
| vintage | county_fips | county_name | state_fips | state_abbr | state_name | country_code | inflow_returns | inflow_individuals | inflow_agi_k | outflow_returns | outflow_individuals | outflow_agi_k | net_returns | net_individuals | net_agi_k | gross_returns | nonmig_returns | nonmig_individuals | total_filers | net_rate_per_1k_filers | avg_agi_per_return_inflow | avg_agi_per_return_outflow | agi_delta_per_return | foreign_inflow_returns | foreign_outflow_returns | other_inflow_returns | other_outflow_returns | detail_inflow_returns | detail_outflow_returns | top_inflow_corridors | top_outflow_corridors | inflow_hhi | migration_magnet_score | magnet_rank | magnet_tier | wealth_gain_flag | foreign_hub_flag | high_churn_flag | row_hash | source_url |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2022-2023 | 02016 | Aleutians West Census Area | 02 | AK | Alaska | USA | 222 | 307 | 11,479 | 144 | 255 | 10,811 | 78 | 52 | 668 | 366 | 1,304 | 2,470 | 1,448 | 53.867 | 51,707.207 | 75,076.389 | -23,369.182 | 28 | 0 | 194 | 144 | 0 | 0 | — | — | — | 100 | 1 | e1 | 0 | 0 | 0 | 3480243128db35a5 | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 04021 | Pinal County | 04 | AZ | Arizona | USA | 20,538 | 38,712 | 1,442,283 | 13,796 | 25,012 | 822,920 | 6,742 | 13,700 | 619,363 | 34,334 | 154,470 | 327,262 | 168,266 | 40.068 | 70,225.095 | 59,649.174 | 10,575.921 | 51 | 79 | 4,112 | 4,210 | 16,375 | 9,507 | 04013|Maricopa County|20751;04019|Pima County|1428;06037|Los Angeles County|618;06073|San Diego County|505;06065|Riverside County|416 | 04013|Maricopa County|11753;04019|Pima County|1317;04017|Navajo County|309;04025|Yavapai County|262;04007|Gila County|220 | 0.446 | 100 | 2 | e1 | 1 | 0 | 0 | 1b8dc9ea51b26032 | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 08023 | Costilla County | 08 | CO | Colorado | USA | 135 | 240 | 5,661 | 87 | 155 | 3,783 | 48 | 85 | 1,878 | 222 | 1,228 | 2,365 | 1,315 | 36.502 | 41,933.333 | 43,482.759 | -1,549.425 | 0 | 0 | 113 | 66 | 22 | 21 | 08003|Alamosa County|33 | 08003|Alamosa County|34 | 1 | 100 | 3 | e1 | 0 | 0 | 0 | 96fadb34624e4937 | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 12029 | Dixie County | 12 | FL | Florida | USA | 517 | 1,002 | 23,767 | 317 | 614 | 12,373 | 200 | 388 | 11,394 | 834 | 4,421 | 9,103 | 4,738 | 42.212 | 45,970.986 | 39,031.546 | 6,939.441 | 0 | 0 | 362 | 182 | 155 | 135 | 12041|Gilchrist County|98;12075|Levy County|87;12001|Alachua County|70;12103|Pinellas County|39 | 12075|Levy County|115;12041|Gilchrist County|86;12001|Alachua County|53 | 0.273 | 100 | 4 | e1 | 1 | 0 | 0 | f7c0f8507cd41f20 | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 12035 | Flagler County | 12 | FL | Florida | USA | 6,323 | 11,393 | 581,642 | 4,228 | 7,038 | 263,089 | 2,095 | 4,355 | 318,553 | 10,551 | 51,817 | 97,336 | 56,045 | 37.381 | 91,988.297 | 62,225.402 | 29,762.895 | 39 | 36 | 2,725 | 2,004 | 3,559 | 2,188 | 12127|Volusia County|1699;12109|St. Johns County|703;12031|Duval County|435;12095|Orange County|228;12011|Broward County|218 | 12127|Volusia County|1396;12109|St. Johns County|579;12031|Duval County|324;12107|Putnam County|216;12095|Orange County|138 | 0.099 | 100 | 5 | e1 | 1 | 0 | 0 | 14ea5ced9877ecfe | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 12069 | Lake County | 12 | FL | Florida | USA | 19,416 | 35,508 | 1,567,080 | 13,236 | 22,653 | 785,502 | 6,180 | 12,855 | 781,578 | 32,652 | 154,677 | 299,791 | 167,913 | 36.805 | 80,710.754 | 59,345.875 | 21,364.879 | 126 | 119 | 4,859 | 4,379 | 14,431 | 8,738 | 12095|Orange County|8287;12117|Seminole County|1667;12097|Osceola County|1572;12105|Polk County|1569;12119|Sumter County|1329 | 12095|Orange County|3559;12083|Marion County|1723;12105|Polk County|1537;12119|Sumter County|1333;12097|Osceola County|859 | 0.119 | 100 | 6 | e1 | 1 | 0 | 0 | 68e45e1f01d59c23 | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 12083 | Marion County | 12 | FL | Florida | USA | 15,945 | 28,624 | 1,047,764 | 9,995 | 17,216 | 540,283 | 5,950 | 11,408 | 507,481 | 25,940 | 149,877 | 285,746 | 159,872 | 37.217 | 65,711.132 | 54,055.328 | 11,655.804 | 124 | 103 | 4,889 | 4,125 | 10,932 | 5,767 | 12069|Lake County|1723;12095|Orange County|1188;12086|Miami-Dade County|1075;12011|Broward County|1059;12119|Sumter County|931 | 12069|Lake County|1202;12017|Citrus County|947;12119|Sumter County|869;12001|Alachua County|842;12095|Orange County|495 | 0.032 | 100 | 7 | e1 | 1 | 0 | 0 | f8243f9261273afb | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 12101 | Pasco County | 12 | FL | Florida | USA | 28,441 | 52,217 | 2,175,331 | 19,430 | 33,787 | 1,208,149 | 9,011 | 18,430 | 967,182 | 47,871 | 224,110 | 444,574 | 243,540 | 37 | 76,485.742 | 62,179.568 | 14,306.175 | 187 | 162 | 5,129 | 5,558 | 23,125 | 13,710 | 12057|Hillsborough County|15086;12103|Pinellas County|6976;12053|Hernando County|2229;12105|Polk County|889;12086|Miami-Dade County|670 | 12057|Hillsborough County|6980;12053|Hernando County|3811;12103|Pinellas County|3407;12105|Polk County|899;12017|Citrus County|700 | 0.16 | 100 | 8 | e1 | 1 | 0 | 0 | 6d5a65a061d678ca | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 12119 | Sumter County | 12 | FL | Florida | USA | 8,047 | 13,656 | 853,671 | 5,035 | 8,313 | 451,951 | 3,012 | 5,343 | 401,720 | 13,082 | 63,440 | 109,189 | 68,475 | 43.987 | 106,085.622 | 89,761.867 | 16,323.755 | 38 | 37 | 3,675 | 2,420 | 4,334 | 2,578 | 12069|Lake County|1333;12083|Marion County|869;12095|Orange County|362;48373|Polk County|308;12101|Pasco County|295 | 12069|Lake County|1329;12083|Marion County|931;12017|Citrus County|263;12101|Pasco County|198;12057|Hillsborough County|165 | 0.061 | 100 | 9 | e1 | 1 | 0 | 0 | 4950a6ee4841ede6 | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
| 2022-2023 | 13085 | Dawson County | 13 | GA | Georgia | USA | 1,837 | 3,496 | 148,420 | 1,196 | 2,140 | 98,591 | 641 | 1,356 | 49,829 | 3,033 | 10,582 | 21,869 | 11,778 | 54.424 | 80,794.774 | 82,433.946 | -1,639.172 | 0 | 0 | 536 | 425 | 1,301 | 771 | 13117|Forsyth County|1111;13121|Fulton County|350;13187|Lumpkin County|319;13139|Hall County|229;13135|Gwinnett County|190 | 13117|Forsyth County|480;13187|Lumpkin County|321;13139|Hall County|200;13057|Cherokee County|113;13121|Fulton County|81 | 0.249 | 100 | 10 | e1 | 0 | 0 | 0 | 92ae428af300e6b0 | https://www.irs.gov/statistics/soi-tax-stats-migration-data-2022-2023 |
- Current
20260927T230509Z-51e0b008896f · sha256 51e0b008896f…
3,087 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/irs_county_migration_intel/us_county_migration_annual" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/irs_county_migration_intel/us_county_migration_annual").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/irs_county_migration_intel/us_county_migration_annual
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260927T230509Z-51e0b008896f and its content hash, so readers get exactly the data you used.
. (2026). US county migration intelligence (annual) [Data set, snapshot 20260927T230509Z-51e0b008896f, sha256 51e0b008896f]. Datazimuts. Retrieved 2026-09-28, from https://datazimuts.com/en/datasets/irs_county_migration_intel/us_county_migration_annual?snapshot=20260927T230509Z-51e0b008896f
@misc{dz_irs_county_migration_intel_us_county_mig_51e0b008,
title = {{US county migration intelligence (annual)}},
author = {{}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/irs_county_migration_intel/us_county_migration_annual?snapshot=20260927T230509Z-51e0b008896f}},
note = {Snapshot 20260927T230509Z-51e0b008896f, sha256 51e0b008896f7329bdf937640809eb641e0ae2adad62150108b4dd57a6e5b6bf; accessed 2026-09-28}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=irs_county_migration_intel%2Fus_county_migration_annual&lang=en&theme=auto&snapshot=20260927T230509Z-51e0b008896f&x=vintage&y=inflow_returns&agg=avg" title="US county migration intelligence (annual)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.