Income tax changes barely move the overall population — but noticeably shift where the top earners live
Synthesis of peer-reviewed migration-elasticity studies plus IRS SOI county-to-county migration data, 2012-2022
Summary
For the population as a whole, a state income tax change has a small, mostly undetectable effect on migration — general-population studies find semi-elasticities well under 1 (i.e., a several-point tax change shifts a tiny fraction of a percent of residents). The effect concentrates almost entirely among the top of the income distribution: millionaires and above show a real but still modest response, and the very top (0.1%) shows the clearest, statistically significant response. The best-identified single case — California's 2012 Proposition 30, a 3-percentage-point increase on the top bracket — raised the annual out-migration rate of newly top-bracketed filers from about 1.5% to about 2.3% (a 53% relative increase), still leaving the overwhelming majority of those taxpayers in place. A landmark New Jersey "millionaire tax" natural experiment found migration among the top 0.1% of earners rose by about 27 per 1,000 (statistically significant) versus about 6 per 1,000 among millionaires overall (not statistically significant). Descriptive data from this corpus on Kansas's 2012-13 tax cut and North Carolina's 2014 tax cut show no sharp discontinuity in total (all-income) net migration around either policy date — consistent with the literature's finding that broad-based migration responses are small and other forces (jobs, housing costs, climate, family ties) dominate for most movers.
What the peer-reviewed literature finds
- General population: Cristobal Young's body of work (the foundational "millionaire tax flight" research program) repeatedly finds population-wide migration elasticities with respect to top tax rates below 0.1-0.25 — meaning even large rate changes move only a sliver of the overall population. His summary judgment, echoed across several studies: "there is limited evidence of millionaire tax flight in the U.S."
- Millionaires/top earners as a group: Young, Varner, Lurie & Prisinzano (2016, American Sociological Review), using a New Jersey millionaire-tax natural experiment and IRS administrative data, estimated the tax raised migration by 6.4 per 1,000 among millionaires overall (semi-elasticity 0.64, not statistically significant) and by 27.4 per 1,000 among the top 0.1% of earners (semi-elasticity 1.17, statistically significant) — the effect is real but concentrated at the very top and small in absolute terms even there.
- California Proposition 30 (2012), the most granular recent case study: Rauh & Shyu (2024, American Economic Journal: Economic Policy) found the 3-percentage-point top-rate increase raised the departure rate of newly top-bracketed taxpayers from an average baseline of about 1.5% per year to about 2.3% in 2013 — a 53% relative jump, but on a base that leaves ~97-98% of the affected group in place. The bigger revenue effect they document came from taxable-income shrinkage among stayers (an elasticity of 2.5-3.2 with respect to the net-of-tax rate), not from people leaving.
- Long-run, structural change (not a marginal rate tweak): Cassidy, Dincecco & Troiano (2024, AEJ:Policy), using a 1900-2010 panel of the actual introduction of state income taxes, found that states introducing an income tax after WWII lost more than 16% of their population within 20-30 years relative to what they would otherwise have had — but this is the effect of creating a brand-new tax where none existed, over decades, not a comparable magnitude to a marginal rate cut or hike in an existing system.
- Work location vs. residence: Agrawal & Tester (2024, AEJ:Policy), studying professional golfers as a clean case of location choice, found major state income tax increases (>=1 percentage point) significantly reduce participation by high earners in that state — evidence that even short of moving residence, high earners respond to tax changes by redirecting where they generate income.
What this corpus adds: descriptive case checks for two real tax-change states
IRS Statistics of Income county-to-county migration data (fiscal.county_migration_flows, all filers, 2012-2022) was aggregated to net in-minus-out migration per 1,000 residents for three states: Kansas (state FIPS 20), North Carolina (FIPS 37), and California (FIPS 06, used only to sanity-check the Prop 30 literature figures above, not charted). Each of the three queries excludes same-state moves from both sides of the count — for Kansas, rows where both origin_state_fips and dest_state_fips equal '20' are excluded (predicates origin_state_fips<>'20' AND dest_state_fips<>'20'); for North Carolina, rows where both equal '37' are excluded (origin_state_fips<>'37' AND dest_state_fips<>'37'); for California, rows where both equal '06' are excluded (origin_state_fips<>'06' AND dest_state_fips<>'06'). This is a definitional filter, not a data-quality judgment call: a Wichita-to-Topeka move is not interstate migration and, left in, would add the identical count to both in_ks and out_ks, leaving net_mig — the only figure charted — completely unchanged. Re-running each query without that filter confirms this: it adds roughly 25,000-40,000/year to both the in- and out-flow totals for Kansas (and comparable amounts for North Carolina and California) but changes not a single one of the net-migration-per-1,000 values charted above, since an intra-state move inflates both sides equally.
Kansas cut income tax rates sharply starting tax year 2013 (the Brownback tax cuts, including a pass-through business income exemption) and mostly repealed the cuts in 2017. Kansas ran a small net out-migration (roughly -0.8 to -2.8 per 1,000 residents/year) in every single year 2012-2022, with no visible break at either the 2013 cut or the 2017 repeal.
North Carolina replaced its progressive income tax (top rate 7.75%) with a flat rate starting tax year 2014, cutting further in subsequent years. NC was already running net in-migration (about +2/1,000) before the cut, dipped in 2014-2015, then rose gradually to over +4.6/1,000 by 2022 — a real acceleration, but gradual over years, not a step change coincident with the 2014 cut, and North Carolina's Research Triangle jobs boom and Sun Belt population growth generally are the more obvious candidate explanations.
This descriptive check is consistent with — not independent proof against — the literature: total-filer migration data cannot isolate the income level of movers, so it necessarily understates any effect concentrated in the top 0.1-1% of earners, which is exactly where the peer-reviewed studies above find the real (if still modest) response.
Bottom line and caveats
How much does a state income tax cut or hike actually change migration? For the state's population as a whole: very little — on the order of a small fraction of a percent of residents, often not statistically distinguishable from zero in rigorous studies. For high earners specifically (roughly the top 1%, and especially the top 0.1%): a real, measurable effect exists, on the order of a 50%-plus relative increase in the already-small annual departure rate following a several-percentage-point tax hike (Prop 30), or on the order of 1-3 extra migrants per 1,000 top-bracket filers per year (NJ). Even at the top, the large majority of affected taxpayers stay — the dominant revenue response to a state tax hike on high earners is income/avoidance adjustment by people who remain, not people leaving.
Caveats: (1) This corpus's IRS SOI migration table has no income breakdown, so the Kansas/NC checks here are population-wide proxies, not the top-earner-specific test the literature actually runs — a real effect concentrated in the top 1% could exist underneath a flat aggregate line. (2) Row counts per filing year in that table vary roughly 2.5x (36,000 to 91,000 rows/year), a known IRS-file completeness issue that makes year-to-year swings in the raw series (not the multi-year direction) less trustworthy. (3) None of the studies above isolate a tax change from simultaneous confounds (job growth, housing costs, remote-work shifts, SALT-cap changes) — the Rauh & Shyu and Agrawal & Tester designs are the most causally careful (using matched control groups and a location-choice natural experiment, respectively) and are weighted accordingly above.
Every query behind this report
5 warehouse calls ran in this session, in order. Each is reproducible against the same snapshot.
query — 11 rows — 2649 ms
SELECT year,
SUM(CASE WHEN dest_state_fips='20' AND origin_state_fips<>'20' THEN num_individuals ELSE 0 END) AS in_ks,
SUM(CASE WHEN origin_state_fips='20' AND dest_state_fips<>'20' THEN num_individuals ELSE 0 END) AS out_ks
FROM fiscal.county_migration_flows
WHERE dest_state_fips='20' OR origin_state_fips='20'
GROUP BY year ORDER BY yearquery — 11 rows — 2084 ms
SELECT year,
SUM(CASE WHEN dest_state_fips='06' AND origin_state_fips<>'06' THEN num_individuals ELSE 0 END) AS in_ca,
SUM(CASE WHEN origin_state_fips='06' AND dest_state_fips<>'06' THEN num_individuals ELSE 0 END) AS out_ca
FROM fiscal.county_migration_flows
WHERE dest_state_fips='06' OR origin_state_fips='06'
GROUP BY year ORDER BY yearquery — 11 rows — 2258 ms
SELECT year,
SUM(CASE WHEN dest_state_fips='37' AND origin_state_fips<>'37' THEN num_individuals ELSE 0 END) AS in_nc,
SUM(CASE WHEN origin_state_fips='37' AND dest_state_fips<>'37' THEN num_individuals ELSE 0 END) AS out_nc
FROM fiscal.county_migration_flows
WHERE dest_state_fips='37' OR origin_state_fips='37'
GROUP BY year ORDER BY yearper_capita — 9532 ms
SELECT year,
SUM(CASE WHEN dest_state_fips='20' AND origin_state_fips<>'20' THEN num_individuals ELSE 0 END)
- SUM(CASE WHEN origin_state_fips='20' AND dest_state_fips<>'20' THEN num_individuals ELSE 0 END) AS net_mig,
'20' AS state_fips
FROM fiscal.county_migration_flows
WHERE dest_state_fips='20' OR origin_state_fips='20'
GROUP BY year ORDER BY yearper_capita — 6696 ms
SELECT year,
SUM(CASE WHEN dest_state_fips='37' AND origin_state_fips<>'37' THEN num_individuals ELSE 0 END)
- SUM(CASE WHEN origin_state_fips='37' AND dest_state_fips<>'37' THEN num_individuals ELSE 0 END) AS net_mig,
'37' AS state_fips
FROM fiscal.county_migration_flows
WHERE dest_state_fips='37' OR origin_state_fips='37'
GROUP BY year ORDER BY yearSources
- Rauh & Shyu (2024), "Behavioral Responses to State Income Taxation of High Earners: Evidence from California", AEJ:Economic Policy 16(1):34-86
- Young, Varner, Lurie & Prisinzano (2016), "Millionaire Migration and Taxation of the Elite", American Sociological Review
- Cassidy, Dincecco & Troiano (2024), "The Introduction of the Income Tax, Fiscal Capacity, and Migration: Evidence from US States", AEJ:Economic Policy
- Agrawal & Tester (2024), "State Taxation of Nonresident Income and the Location of Work", AEJ:Economic Policy
- Tax Foundation summary of the three 2024 AEJ:Policy migration studies
- ScienceDaily / UC Riverside coverage of Cassidy-Dincecco-Troiano study
- Kansas net domestic migration per 1,000 residents, 2012-2022
Show SQL
SELECT year, SUM(CASE WHEN dest_state_fips='20' AND origin_state_fips<>'20' THEN num_individuals ELSE 0 END) - SUM(CASE WHEN origin_state_fips='20' AND dest_state_fips<>'20' THEN num_individuals ELSE 0 END) AS net_mig FROM fiscal.county_migration_flows WHERE dest_state_fips='20' OR origin_state_fips='20' GROUP BY year ORDER BY year - North Carolina net domestic migration per 1,000 residents, 2012-2022
Show SQL
SELECT year, SUM(CASE WHEN dest_state_fips='37' AND origin_state_fips<>'37' THEN num_individuals ELSE 0 END) - SUM(CASE WHEN origin_state_fips='37' AND dest_state_fips<>'37' THEN num_individuals ELSE 0 END) AS net_mig FROM fiscal.county_migration_flows WHERE dest_state_fips='37' OR origin_state_fips='37' GROUP BY year ORDER BY year