Back to the explorer
Sources and methods
# Projection inputs and calculation audit
Checked 6 September 2026.
## Sources and coverage
- [Eurostat EUROPOP2025 national baseline](https://ec.europa.eu/eurostat/cache/metadata/en/proj_25n_esms.htm), dataset `proj_25ndbi`: annual births, deaths and net migration. Covers 26 European countries (EU member states in the dashboard, Norway and Switzerland).
- [Eurostat EUROPOP2025 regional baseline](https://ec.europa.eu/eurostat/cache/metadata/en/proj_25r_esms.htm), dataset `proj_25rdbal`: aggregates 1,165 NUTS 2024 subregions into 288 first-level administrative divisions (ADM1) across 21 European countries (France, Germany, Spain, Italy, Austria, Belgium, Netherlands, Poland, Sweden, Czechia, Denmark, Finland, Slovakia, Croatia, Bulgaria, Romania, Hungary, Lithuania, Slovenia, Ireland, Portugal). The stored `geos` lists identify all NUTS 3 territories aggregated into each region.
- [UK Office for National Statistics (ONS) 2022-based principal projections](https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationprojections): annual births, deaths, and net international/cross-border migration for the United Kingdom and its 4 constituent countries (England, Wales, Scotland, Northern Ireland).
- [United Nations World Population Prospects (WPP 2024 Revision)](https://population.un.org/wpp/), Medium variant baseline: annual births, deaths, net migration and population for 8 non-Eurostat European countries in the dashboard (Albania, Bosnia & Herzegovina, Belarus, Moldova, Russia, Serbia, Türkiye, Ukraine). Together with Eurostat and ONS, this brings official national net migration coverage to all 35 dashboard countries.
- [INSEE Flash Île-de-France 111, April 2026](https://www.insee.fr/fr/statistiques/8970303): revised 2025 baseline for Île-de-France. Population at 1 January: 12,549,300; births: 148,300; deaths: 79,300; natural balance: +69,000; apparent net migration: −23,800; fertility: 1.63. These are the publication's provisional, rounded figures.
Cities and uncovered non-EU subregions retain illustrative trajectories. Historical values remain illustrative backward calculations, not an imported historical series.
## Units and trajectory construction
The checked-in source extract stores **persons**, with column names in its metadata. National flows and UK constituent country flows are annual. Eurostat regional flows labeled 2030 cover **2030–2034**: divide each by five to obtain the annual average, reused for each year in that interval. Do not interpret them as annual totals or interpolate the five-year totals as annual observations.
Natural balance is `(births - deaths) / 1000`, rounded once to thousands. Net migration is separately rounded to thousands. Population starts from the dashboard's 2025 estimate and evolves by `population[y+1] = population[y] + (natural[y] + migration[y]) / 1000`, where population is in millions. Official components start in 2026; 2025 retains the dashboard's baseline. Thus the resulting population trajectory is **rebased**, not the exact published Eurostat population path. Rounding and the retained 2025 flow create small additional differences. No future national/regional reconciliation is imposed across the differing baselines and geographic scopes.
For Île-de-France, the old +74k was consistent with the original **2024** provisional estimate (152,700 − 79,200 = 73,500), but was mislabeled as 2025. The newer 2025 balance is 148,300 − 79,300 = 69,000. It is plausible for a relatively young region to have a positive natural balance when the national balance is negative. Its updated net migration displays as −24k and combined change as +45k; INSEE's unrounded-to-thousands combined change is +45,200.
The EUROPOP2025 regional baseline is a distinct scenario from national scenarios. Assumptions about fertility and migration are demographic scenarios, not forecasts of policy or future shocks.
Gross immigration and emigration cannot be recovered from net migration alone. They are left unavailable (`—`) for sourced records.
## Refresh
Download the Eurostat, UN WPP, and ONS projection extracts:
```sh
curl -fsS 'https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/proj_25ndbi?lang=EN&projection=BSL&indic_de=NMIGRAT&indic_de=LBIRTH&indic_de=DEATH&indic_de=JAN&sinceTimePeriod=2025&untilTimePeriod=2051' -o /tmp/national-projections.json
curl -fsS 'https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/proj_25rdbal?lang=EN&projection=BSL&sinceTimePeriod=2025&untilTimePeriod=2055' -o /tmp/all-regional-projections.json
curl -fsSL 'https://population.un.org/wpp/assets/Excel%20Files/1_Indicator%20(Standard)/EXCEL_FILES/1_General/WPP2024_GEN_F01_DEMOGRAPHIC_INDICATORS_COMPACT.xlsx' -o /tmp/WPP2024_compact.xlsx
curl -fsSL 'https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/populationandmigration/populationprojections/datasets/tablea11principalprojectionuksummary/2022based/ukpppsummary.xlsx' -o /tmp/ukpppsummary.xlsx
curl -fsSL 'https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/populationandmigration/populationprojections/datasets/tablea14principalprojectionenglandsummary/2022based/enpppsummary.xlsx' -o /tmp/enpppsummary.xlsx
curl -fsSL 'https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/populationandmigration/populationprojections/datasets/tablea15principalprojectionwalessummary/2022based/wapppsummary.xlsx' -o /tmp/wapppsummary.xlsx
curl -fsSL 'https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/populationandmigration/populationprojections/datasets/tablea16principalprojectionscotlandsummary/2022based/scpppsummary.xlsx' -o /tmp/scpppsummary.xlsx
curl -fsSL 'https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/populationandmigration/populationprojections/datasets/tablea17principalprojectionnorthernirelandsummary/2022based/nipppsummary.xlsx' -o /tmp/nipppsummary.xlsx
python scripts/build-projections.py /tmp/national-projections.json /tmp/all-regional-projections.json /tmp/WPP2024_compact.xlsx /tmp
```
Review vintage and retrieval date when refreshing. The app reads the committed extract offline. Smoke checks cover source-specific values, annualization, source labels, missing gross flows, annual accounting identities and browser interactions.