Germany receives the most immigrants, but the count has been declining year over year. Spain’s numbers surged after 2020. Romania sends citizens to Germany, Spain, and Italy in large numbers despite being an EU member itself. And several countries function as both major destinations and significant sources simultaneously, a circular migration pattern that doesn’t show up in single-direction analysis. This EU migration data dashboard, sourced from EuroStat, separates internal EU migration from external immigration and tracks how both shifted before and after 2020.


The work behind this dashboard is what I do for companies.

This EU migration dashboard is a personal project, but the skill behind it is exactly what I do professionally: turning raw, scattered data into clear, interactive reporting a team can actually trust, for organizations up to $800M.

Clair Wyant Header Image

Clair Wyant

BI and Data Architecture Consultant


Analytical Insights

Immigration from Non-EU Countries

Top Destination: Germany, followed by Spain.

Top Origin: Ukraine, and the routing matters. The bulk of Ukrainian immigrants went to Germany, with Czechia a solid second. Excluding Ukrainian flows, Spain, Germany, and Italy have the most non-EU immigrants.

Post-2020 migration corridors:

Colombia to Spain is the most notable new flow that emerged after 2020. Morocco to Spain reflects geographic proximity, a long-standing corridor that intensified post-2020. Turkey to Germany is an established pathway that continued post-2020, with the Netherlands and Bulgaria as distant secondary destinations for Turkish immigrants. Syria to Germany continued to accelerate, representing sustained humanitarian migration through the study period.

Key Conclusion: Non-EU immigration to the EU is not evenly distributed. Germany and Spain absorb the majority, and the origin corridors are highly concentrated: a few country-pairs account for most of the volume. The Ukraine-to-Germany corridor dominates the post-2020 picture; excluding it reveals Spain gaining ground on Germany as the top non-EU destination.

Migration from EU Countries (Internal)

Top Destination: Germany, followed by Spain.

Top Origin: Romania, followed by Germany itself.

Post-2020 patterns:

Spain's surge is the headline internal EU story: a large increase after 2020, driven mainly by immigrants from Romania, Italy, Germany, and France. Germany's trend runs in the opposite direction: despite receiving the most EU internal migrants every year across the study period, the volume has been declining annually.

Circular migration patterns:

Germany functions simultaneously as the top destination for EU internal migrants and as a significant source of emigration, with increased emigration to Spain and Austria post-2020. Spain shows a similar circular pattern in reverse: large inflows from Romania, France, and Germany, while simultaneously sending emigrants back to Romania, France, and Germany. Romania's labor mobility is the clearest single-country story: the primary source of emigrants going to Germany, Spain, and Italy, with the flows documented consistently across the dataset.

Key Conclusion: The internal EU migration picture isn't a simple hub-and-spoke model with one country at the center. Germany leads on arrivals but is losing its margin as its inflow declines and Spain's surges. The circular patterns suggest that migration within the EU reflects labor market conditions rather than permanent relocation: people moving to where opportunities exist and returning when conditions change.

Project Details

Tools UsedTableau Public, Microsoft Excel, ChatGPT
Data SourceEuroStat (European Statistical Office), CSV exports
Dashboard StructureDual dashboard: Panel 1 (non-EU immigration), Panel 2 (EU internal migration)
Data PeriodPre-2020 and post-2020 (exact years per EuroStat release)
Countries CoveredAll 27 EU member states (receiving countries); multiple origin countries
Project TypePersonal Research Project

Project Motivation

Migration is one of the most politically discussed topics in both the US and EU, and one of the least examined with actual data. The EU's freedom of movement among member countries creates patterns that don't map to the standard immigration narrative: countries like Germany and Spain are simultaneously major destinations and significant sources of emigration, and EU citizens moving between member states operate under entirely different rules than non-EU citizens entering from outside.

This project separates those two flows, EU internal migration and non-EU external immigration, and uses 2020 as an inflection point to track what changed in both. The question wasn't whether migration increased or decreased overall; it was where the shifts happened, between which countries, and whether the post-2020 patterns look different from what came before.

Data Preparation

EuroStat publishes migration statistics as CSV exports, one file per year and category. Multiple annual files were consolidated into a single Excel workbook using ChatGPT, which handled the multi-file merging and added a metadata column tracking each record's source file for data lineage. Calculated fields in Tableau handle the categorization work: a country classification field designates each origin country as EU or non-EU, a time period field groups records as pre-2020 or post-2020, and a ranking calculation orders countries by immigrant volume within any given filter selection. The single consolidated dataset drives both dashboard panels.

Dashboard Features

Two panels in one dashboard, each filterable by receiving EU country, origin country, and time period (pre-2020 or post-2020).

Panel 1, Immigration from Non-EU Countries: Shows which non-EU countries send the most immigrants to each EU member state. A bar chart ranks origin countries by volume; a map plots the flows geographically. Switch between receiving countries to see how the origin mix changes: the corridor patterns (Turkey to Germany, Morocco to Spain, Ukraine to Germany and Czechia) are immediately visible.

Panel 2, Migration from EU Countries (Internal): The same structure applied to intra-EU movement. Ranks EU member states by how many of their citizens migrate to each receiving country. The circular migration patterns, with Germany and Spain both appearing as top origins and top destinations, show up clearly when switching between receiving countries.

Interactive capabilities: Filter by receiving country, origin country, or time period across both panels. A "Show Top 10" toggle narrows the charts to the ten largest origin countries for any given selection. Hover tooltips show exact immigrant counts per country-pair.

Skills Enhanced

Multi-file EuroStat CSV consolidation using ChatGPT to merge annual exports into a single workbook, including metadata column creation for source tracking, a data lineage practice that makes the dataset auditable after consolidation.

EU/non-EU classification as a calculated field in Tableau, enabling the dashboard to separate internal EU migration from external immigration dynamically rather than requiring separate data tables for each view.

Dual-panel dashboard design where both panels share filter logic: selecting a receiving country or time period updates both the non-EU and EU internal views simultaneously, so the comparison between the two migration types is always on the same terms.

Ranking calculations using Tableau's RANK() function within a filtered context, so the top-10 origins reorder correctly when a receiving country filter is applied rather than showing global ranks that don't reflect the selected country's actual migration picture.

Pre/post 2020 period toggle as a parameter-driven filter, allowing direct before/after comparison within the same dashboard without rebuilding the view.

Frequently Asked Questions

Which EU country receives the most immigrants?

Germany leads across both EU internal migration and non-EU immigration in this dataset. Spain is a strong second on both measures, and its post-2020 inflows surged while Germany's have been declining year over year. Italy is third for non-EU immigration.

Where do most non-EU immigrants to EU countries come from?

Ukraine is the top non-EU origin country by volume in this dataset, with the majority going to Germany and Czechia. Excluding Ukrainian flows, Morocco, Turkey, Syria, and Colombia are among the top origin countries, though the ranking varies significantly by which EU receiving country is selected. Morocco and Colombia flow primarily to Spain; Turkey and Syria flow primarily to Germany.

How did EU migration change after 2020?

Two clear shifts: Spain's inflows surged while Germany's declined, narrowing the gap between the two top destinations. New corridors emerged post-2020, most notably Colombia to Spain. The Ukraine-to-Germany corridor became dominant for non-EU immigration. For EU internal migration, Germany's outflows to Spain and Austria increased, contributing to the circular pattern that makes Germany simultaneously the top destination and a growing source of emigration.

What is circular migration in the EU?

It refers to countries that appear as both major destinations and significant sources of emigration. Germany receives more EU migrants than any other country but also sends meaningful emigrant flows to Spain and Austria. Spain receives large inflows from Romania, France, and Germany while sending emigrants back to those same countries. Romania is the clearest single-country example on the source side: a top-3 origin country for emigrants going to Germany, Spain, and Italy.

What is the difference between EU internal migration and external immigration in this dashboard?

EU internal migration covers citizens of EU member states moving between member countries, governed by the EU's freedom of movement rules, which allow EU citizens to live and work in any member state without a visa. External immigration covers non-EU citizens arriving from outside the EU, which involves each member state's own immigration policies. The dashboard treats these as two separate panels because the rules, push factors, and migration patterns are fundamentally different.

Why is Romania both a top origin and a destination for EU internal migration?

Romania is the largest source of EU internal emigrants in this dataset, sending large numbers to Germany, Spain, and Italy. But Romania also receives return migration and some intra-EU inflows from other member states. The net emigration from Romania is large, but the gross figures show movement in both directions. Romania's labor mobility pattern is driven by wage differentials between Romania and Western European labor markets, one of the clearest economic migration stories in the EU internal dataset.

What does EU migration data show about immigration patterns?

EU migration data from EuroStat shows that migration flows are highly concentrated: a small number of country corridors account for most of the volume. The Ukraine-to-Germany corridor dominates non-EU immigration post-2020. Within the EU, Germany and Spain receive the most internal migrants, but Germany's inflows are declining while Spain's are surging. The EU migration data distinguishes external immigration (non-EU citizens arriving) from internal EU migration (EU citizens moving between member states), two very different flows with different drivers and legal frameworks. EuroStat records origin country and destination, not migration motivation, so the data describes flows rather than causes.

Where does the EU migration data come from?

EuroStat, the statistical office of the European Union. EuroStat collects migration data from all 27 member states and publishes it as annual CSV exports. Multiple annual files were consolidated for this dashboard. EuroStat's migration figures are administrative records (based on residence registrations), not survey estimates.


Curious what goes into building one of these?

Everything here started as raw, messy data. If your reporting could use the same clarity, let’s talk.

You’ll be talking to me, not a sales team

Clair Wyant, BI and Data Architecture Consultant

Clair Wyant

BI & Data Architecture Consultant, San Diego + remote

7+ years building executive reporting · $800M+ in decisions the dashboards supported · Salesforce Certified Tableau Desktop Foundations · You work directly with me, start to finish.

Hi, I’m Clair. Let’s find your fastest reporting wins.

Tell me where the reporting hurts. The first call is a relaxed intro call: what's getting in the way, how I might help, and whether we're a fit. Nothing to share to start, nothing to prepare. You work directly with me, the same senior consultant leadership has trusted on decisions worth more than $800 million. No junior handoffs, no sales reps, and no pressure.

Book your free intro call