From charlesreid1

SOI Tax Stats: migration data: https://www.irs.gov/statistics/soi-tax-stats-migration-data

Referenced by the folks at CensusReporter.org

What is it?

The data that's given is migration data for individuals moving between states. There are data provided going back to 2011.

There is a detailed guide to this data set here: https://www.irs.gov/pub/irs-soi/1516inpublicmigdoc.pdf

Data Files

State to State Outflow

The data sets provide a CSV file for state to state outflow. The headers in these CSV files look like this:

$ head -n10 stateoutflow1516.csv
y1_statefips,y2_statefips,y2_state,y2_state_name,n1,n2,AGI
01,96,AL,AL Total Migration-US and Foreign,44461,89926,2507957
01,97,AL,AL Total Migration-US,43638,88139,2460974
01,98,AL,AL Total Migration-Foreign,823,1787,46982
01,97,AL,AL Total Migration-Same State,56323,115151,2486684
01,01,AL,AL Non-migrants,1586719,3527365,98693046
01,13,GA,Georgia,8103,16268,379251
01,12,FL,Florida,6493,12760,398129
01,47,TN,Tennessee,4043,7929,273599
01,48,TX,Texas,3602,7789,203940

The documentation section E1 covers this data set:


The state to state outflow migration files represent the migration flows from the origin state in year 1 to the destination state in year 2. There are 51 files for each state plus the D of C. Included inthe list of outflow states are the number of returns that migrated to a foreign location. Each file tabulates the number of returns, number of exemptions, and adjusted gross income (AGI).

Each state outflow records file contains five header records that show (1) the total US and foreign out-migration for that state, (2) the total US out-migration, (3) the total foreign out-migration, and (4) the total same state migration for that state, and (5) the total non-migrants.


Naming convention: stateoutflow1516.csv covers years 2015 and 2016.

Columns are as follows:

  • y1 state fips - state fips code of origin from year 1
  • y2 state fips - state fips code of destination from year 2
  • y2 state - state abbrev or postal code
  • y2 state name - name of state
  • n1 - number of returns
  • n2 - number of exemptions
  • agi - adjusted gross income


State to State Inflow

Similar to the outflow file - the inflow file shows data about inflow migration patterns into a given state.

Inflow record columns are as follows:

  • y2 state fips - state fips code of destination from year 2
  • y1 state fips - state fips code of origin from year 1
  • y1 state - abbreviation or postal code of origin from year 1
  • y1 state name - state name of origin from year 1
  • n1 - number of returns
  • n2 - number of exemptions
  • agi - adjusted gross income

County to County Outflow

County to county outflow data provides additional columns:

$ head -n5 countyoutflow1516.csv
y1_statefips,y1_countyfips,y2_statefips,y2_countyfips,y2_state,y2_countyname,n1,n2,agi
01,000,96,000,AL,Total Migration-US and Foreign,100784,205077,4994641
01,000,97,000,AL,Total Migration-US,99961,203290,4947658
01,000,97,001,AL,Total Migration-Same State,56323,115151,2486684
01,000,97,003,AL,Total Migration-Different State,43638,88139,2460974

The columns are:

  • y1 state fips - state fips code of origin from year 1
  • y1 county fips - county fips code of origin from year 1
  • y2 statefips - state fips code of destination from year 2
  • y2 county fips - county fips code of destination from year 2
  • y2 state - state abbreviation or postal code of destination from year 2
  • y2 county name - county name of destination from year 2
  • n1 - number of returns
  • n2 - number of exemptions
  • agi - adjusted gross income

Note that some of the county names (county code 000) will contain SUMMARIES.

Additionally, each county actually contains a breakdown into seven "Other flows" categories.

Other flow categories:

  • Total US and foreign out-migration for that state
  • Total US out-migration for that state
  • Total same state migration for that state
  • Total different-state out-migration for that state
  • Total foreign out-migraiton for that state

County to County Inflow Data

Example data for county to county inflow data:

y2_statefips,y2_countyfips,y1_statefips,y1_countyfips,y1_state,y1_countyname,n1,n2,agi
01,000,96,000,AL,Total Migration-US and Foreign,100390,207334,4835874
01,000,97,000,AL,Total Migration-US,99527,205203,4782089
01,000,97,001,AL,Total Migration-Same State,56323,115151,2486684
01,000,97,003,AL,Total Migration-Different State,43204,90052,2295405

...

01,003,12,113,FL,Santa Rosa County,70,132,3499
01,003,01,089,AL,Madison County,57,106,4331
01,003,01,081,AL,Lee County,55,94,2735
01,003,48,201,TX,Harris County,49,100,10215
01,003,28,059,MS,Jackson County,43,89,3302
01,003,01,025,AL,Clarke County,40,82,2580
01,003,47,157,TN,Shelby County,39,75,2252
01,003,28,047,MS,Harrison County,38,86,1885
01,003,12,091,FL,Okaloosa County,36,63,2048
01,003,01,069,AL,Houston County,35,74,1761
01,003,01,099,AL,Monroe County,34,62,1331
01,003,01,015,AL,Calhoun County,32,71,2013
01,003,01,051,AL,Elmore County,32,60,2198

The county to county inflow columns are:

  • y2 state fips - state fips code of destination from year 2
  • y2 county fips - county fips code of destination from year 2
  • y1 state fips - state fips code of origin from year 1
  • y1 county fips - county fips code of origin from year 1
  • y1 state - state abbrev or postal code of origin from year 1
  • y1 county name - county name of origin from year 1
  • for state total records - name is "Total Migration - (Topic)"
  • for county total records - name is "[State County Name] Total Migration - US and Foreign"
  • for foreign records - name is "Foreign - (Name of country)"
  • n1 - number of returns
  • n2 - number of exemptions
  • agi - adjusted gross income

Like the county to county outflow data, this inflow data is also divided into categories:

  • Total US and foreign out-migration for that state
  • Total US out-migration for that state
  • Total same state migration for that state
  • Total different state out-migration for that state
  • Total foreign out-migration for that state

Gross Migration File

The gross

The columns in the CSV files look like this:




Flags