Total Population
Births and Deaths
TFR and Survival-Adjusted TFR
Life Expectancy
Growth Rate
Absolute Growth
Net Migration
Migration Per Mille
Death Curve by Age
Population Pyramid
Feel-Age Comparison
Selected Age Share
Median / Percentile Age
Health / Feel Age

Methodology, concepts, and reading guide

How the Population Visualizer works

Population is not a single line moving through time. It is a living stock shaped by births, deaths, migration, and the age structure inherited from every earlier year. This visualizer makes those moving parts visible, then lets you change their assumptions and follow the consequences.

Historical anchor2022

Later years are simulated so inconsistent 2023-2025 source series are not mixed into the baseline.

Core engineOne-year cohorts

People age, die, migrate, and give rise to new cohorts one simulated year at a time.

Proper useExplore assumptions

The result is a transparent scenario, not a claim about what must happen.

Why this exists

Population discussions often hide the mechanism. A total may keep growing after fertility falls, deaths may rise while health improves, and a small migration rate may become a large absolute flow. These are not contradictions. They are consequences of age structure, scale, and timing.

The visualizer is built for demographic literacy: to show why population momentum matters, why births and TFR are different quantities, why life expectancy is a summary of an entire mortality schedule, and why the same population total can conceal radically different futures.

The governing question is: "What follows if these assumptions hold?"

Use the simulator to compare internally consistent worlds. Do not read any single path as a forecast, promise, or policy recommendation.

Population next year=Population this year+Births-Deaths+Net migration

A short orientation

Start here

  1. Choose a place and time window. World, continents, selected regions, and countries are available. The default view spans 1950-2100 so the historical handoff and simulated future can be seen together.
  2. Begin with a preset. Fertility and life-expectancy presets alter only their own checkpoint values. Migration and caution remain as you set them.
  3. Edit the checkpoints. Each line is a year with TFR, life expectancy, migration per 1,000 people, and caution. Values are linearly interpolated from the observed 2022 baseline.
  4. Choose how changes apply. Dynamic mode recomputes as you edit. Turn it off to stage several changes and press Update once.
  5. Read more than one panel. A population total makes more sense beside births, deaths, age structure, and absolute growth.
QuestionChangePanels to compare
Why can population grow below replacement fertility?Lower TFR while holding longevity and migration still.TFR, Births and Deaths, Population Pyramid, Total Population
What does radical longevity change first?Compare Halt with Medium or Fast LEV.Death Curve, Median Age, Age Share, Absolute Growth
Can migration offset natural decline?Increase migration per mille gradually.Net Migration, Migration Per Mille, Births and Deaths, Total Population

What is measured and what is reconstructed

The historical foundation

Long-run pastPopulation series can extend to year 1. Births, deaths, TFR, life expectancy, and age structure are reconstructed where direct series do not exist.
1950-2022The strongest common coverage. Direct international estimates are preferred and the 2022 age structure anchors the simulation.
2023 onwardEvery value is produced by the visualizer from the selected assumptions and inherited cohorts.

Source coverage differs by place and year. The app therefore uses an explicit fallback order instead of pretending every historical point has the same evidential status.

Population
Use the long-run population series first, with the historical population series as a fallback.
Births
Prefer direct annual counts, then regional counts, then a crude birth rate multiplied by population, then a stable-population estimate. When overlapping loaded birth series disagree, the lower finite value is selected by default. Counts are bounded to plausible annual rates to suppress isolated source glitches.
Deaths
Prefer direct annual counts, then regional counts. Where those are absent, infer deaths from births minus population change; a life-expectancy-based stable mortality estimate is the final fallback. Historical counts are also bounded to plausible annual rates.
TFR
Prefer the lower of the two loaded fertility series. Before observed TFR begins, infer it from births, population, estimated reproductive exposure, growth, and survival, then smoothly calibrate toward the first observed TFR for that place.
Life expectancy
Use direct annual values where available and interpolate gaps. Earlier values are cautiously extrapolated downward with a floor; the forward simulation replaces source projections with user checkpoints.
Age structure
Convert five-year age groups to single-year cohorts with interpolation, extend the open 100+ group with a declining tail, and rescale the result to the total population. Where no age groups exist, construct a stable age distribution from growth and mortality.
Historical does not always mean observed.

Before 1950, and for sparse country-years, some smooth curves are model-assisted reconstructions. They are useful for broad trajectories, not for fine annual claims.

The annual cohort ledger

How the simulation advances

The engine uses a cohort-component approach: a standard demographic idea implemented here in single-year ages. Each simulated year follows the same sequence.

  1. 1
    Start with one-year cohorts.

    The 2022 distribution is smoothed from source age groups and scaled to the observed population.

  2. 2
    Calculate births.

    Women are approximated as half of each cohort from ages 15-49. A fixed fertility-by-age profile converts TFR into annual births.

  3. 3
    Apply mortality by age.

    Each cohort is multiplied by that year's annual probability of death at its age. Deaths are summed across all ages.

  4. 4
    Age the survivors.

    Survivors move forward exactly one age. Births enter age zero.

  5. 5
    Apply net migration.

    The per-mille assumption becomes an absolute total and is distributed with a generic profile weighted toward working ages and children.

  6. 6
    Repeat.

    The resulting age structure becomes the starting point for the next year, preserving demographic momentum.

At the 2022 handoff, the modeled deaths by age are proportionally adjusted to reproduce the observed total deaths while retaining the curve's age pattern. From 2023 onward, total deaths emerge directly from the selected mortality curve and the evolving cohorts.

Technical assumptions in the cohort engine

The fertility profile is fixed across places and future years, centered in the late twenties with a smaller later-age component. The sex split is fixed at 50/50. Migration uses the same age profile everywhere. The oldest modeled age is 500, which is a finite computational guardrail rather than a claim about a biological maximum.

Negative cohort values are not allowed. Annual death probabilities are constrained between zero and 0.999999 after caution is applied.

Births are a flow; fertility is a rate

Fertility and the scenario presets

Total fertility rate is a period measure: the number of births a woman would have if she experienced that year's age-specific fertility rates throughout her reproductive life. It is not the number of births in that year. Annual births also depend on how many people are currently at childbearing ages.

This distinction explains population momentum. A large young generation can produce many births even at a low TFR; a small generation can produce few births even when TFR rises.

Fertility presetCheckpoint pathQuestion it explores
2.1 forever2.1 in 2030 and thereafterApproximate long-run replacement without migration, after age structure settles.
UN median2.1 in 2030, 2.0 in 2050, 1.8 in 2100A slow global decline around conventional projection territory.
Recent trend2.0 in 2030, 1.75 in 2040, 1.6 in 2050, 1.5 in 2100The default lower-fertility path.
Floor of 12.0 in 2030, 1.75 in 2040, 1.5 in 2050, 1.0 from 2070A steep decline that eventually stabilizes at one child per woman.
No social rules2.0 in 2030, 1.9 in 2035, 1.6 in 2040, 1.2 in 2050, 0.9 from 2070An intentionally extreme low-fertility sensitivity test.

Presets are starting points, not locked narratives. Selecting one creates or updates the necessary checkpoints; every number can then be edited. Scenario names are shorthand: "UN median" is a hand-set path in this visualizer, not a live import of the current UN medium variant.

A life expectancy implies an entire curve

Mortality and longevity

Period life expectancy summarizes the age-specific death rates of one year. It asks how long a newborn would live if that year's mortality rates remained unchanged throughout life. It is not the predicted lifespan of a real newborn whose conditions will continue to change.

To turn a chosen life expectancy into annual deaths, the visualizer constructs a generalized mortality curve. Adult disease mortality follows a Gompertz-Makeham shape: a low background risk plus a risk that rises exponentially with age. Infant, childhood, young-adult external, and late-life components are added. The adult curve is shifted until the life table generated by all age-specific rates matches the requested life expectancy.

Generalized curve

Includes disease mortality plus modeled infant, childhood, external, and other-age effects. It drives deaths, survival to age 15, and population simulation.

Disease-only curve

Retains the adult disease shape and removes the external component. It is used only for mortality-equivalent age so accidents and early-life conditions do not masquerade as aging.

The death-curve panel uses a hybrid vertical scale. Rates from 0 to 0.1 deaths per 1,000 are linear and receive one band of space; rates from 0.1 to 1,000 are logarithmic. This keeps tiny improvements visible without flattening the steep old-age rise. The horizontal range ends when all displayed curves reach 995 deaths per 1,000, subject to the age-500 guardrail.

What the life-expectancy presets mean
Halt
Hold 2022 period life expectancy constant.
0.25 forever
Add 0.25 years of life expectancy per calendar year.
Approaching 95
Add 0.25 per year until 85, then 0.1 per year until 95, then stop.
Slow LEV
Annual gains step from 0.25 to 0.4, 0.8, and then 1.2 years.
Medium LEV
The default: annual gains step from 0.25 to 0.5, 1.0, and then 1.5 years.
Fast LEV
Accelerates rapidly, reaches life expectancy 150 in 2050 and 225 in 2100, then interpolates toward the age-500 model cap in 2400.

LEV means longevity escape velocity in this interface. It is used as a scenario label, not as an empirical claim that such a threshold has been reached.

Extreme longevity is deliberate extrapolation.

Curves for life expectancy 120, 150, 200, or higher extend a smooth mortality relationship far outside modern observations. They are a way to make assumptions mathematically usable, not evidence that those lifespans are attainable.

Exploratory measures introduced here

Survival-adjusted fertility and feel age

Two measures in this visualizer are interpretive tools rather than standard official indicators. They are designed to expose relationships that ordinary TFR and chronological age leave implicit.

01

Under-15 survival-adjusted TFR

The measure discounts TFR by the probability that a newborn survives to age 15 under the generalized mortality curve for that place and year.

Survival-adjusted TFR = TFR x probability of surviving to age 15

Its purpose is to distinguish births from the number of children who reach the threshold of reproductive age. It is especially informative in the high-child-mortality past.

It is not a replacement fertility rate. It does not model sex-specific survival, future fertility of the survivors, maternal mortality, infertility, or the full generation interval.

02

Mortality-equivalent, or "feel," age

For an actual age under the selected life expectancy, the model finds the age on a life-expectancy-75 disease-only curve with the same annual mortality rate. If an age-78 person in one curve has the disease mortality of an age-70 person on the baseline, the visualizer reports a feel age of about 70.

The comparison begins at age 20. People younger than 20 remain at their chronological ages. If extreme longevity maps many adults to the age-20 floor, their distribution is spread from 20 to 40 with a five-year half-life, making age 20 twice as likely as 25, 25 twice as likely as 30, and so on. Linear interpolation between ages prevents whole cohorts from being dumped into a single year, and the total population is preserved.

This is not subjective wellbeing, disability-free life expectancy, biological age, or a clinical health score. It is only an equivalence between modeled disease mortality rates.

In the comparison pyramid, the actual and feel-age halves are normalized independently to occupy the same width. That makes their shapes legible even when one distribution is concentrated into a narrower age range. Hover values remain real people counts, but bar width should not be used to compare absolute totals across the two halves.

The remaining assumptions

Migration, caution, and interpolation

Historical migration
Calculated as the residual of population change minus births plus deaths. Because the world has no external migration, world historical migration is fixed at zero.
Future migration
Entered as net migrants per 1,000 residents each year, converted to an absolute total, then distributed across ages with a common working-age and family profile. World migration remains editable only as a hypothetical sensitivity test.
Caution
A value from 0 to 1 subtracts that many deaths per 1,000 from every age-specific annual death probability after the curve has been calibrated to the chosen life expectancy. Values floor at zero. This raises realized survival beyond the life-expectancy checkpoint and is best understood as a uniform mortality-improvement stress test.
Interpolation
The observed 2022 value is always the baseline. Between checkpoints, TFR, life expectancy, migration, and caution change linearly. After the final checkpoint, the final value is held constant.
Checkpoint precision
Life expectancy is displayed and stored to the nearest half year when presets are applied. The annual interpolation and mortality calibration still use numeric precision internally.

What each view is actually saying

Reading the panels

PanelWhat it answersInterpretation note
Total PopulationHow many people are alive?Line color encodes annual growth: warm colors mark fast growth, greens slow growth, cyan near-zero change, and blue through magenta decline. Expand the key for exact bands.
Births and DeathsWhat are the two main natural flows?The gap is natural increase or decrease, not total growth unless migration is zero.
TFRWhat fertility regime produces births?The adjusted line discounts for modeled mortality before age 15; it is not an official TFR series.
Life ExpectancyHow is the mortality schedule shifting?Color encodes annual change, from red for decline through yellow and green to blue for the fastest gains.
Growth RateHow fast is population changing relative to its size?A percentage can shrink while absolute growth remains large.
Absolute GrowthHow many people are added or lost each year?This is population change, combining natural change and migration.
Net MigrationHow many net migrants are added or removed?Historical values are residual estimates; future values come from the per-mille assumption.
Migration Per MilleHow large is migration relative to population?One per mille means one net migrant per 1,000 residents in that year.
Death CurveAt what ages is annual mortality concentrated?Add up to ten years or life expectancies. Curves include caution for simulated years.
Population PyramidWhat is the age structure?The source cohorts are not sex-specific here; each age is split equally into female and male halves.
Feel-Age ComparisonHow does chronological age structure differ from mortality-equivalent age?Starts at age 20 and independently scales the two sides for shape comparison.
Selected Age ShareWhat percentage lies within an age interval?Edit both ages inside the panel. Historical values use the best available cohort reconstruction.
Median / Percentile AgeAt what age is a chosen cumulative share reached?At 50%, this is the median. The adjusted line applies the feel-age transformation first.
Health / Feel AgeHow does actual age map onto the LE-75 mortality baseline?Uses disease-only curves; it is a model relationship, not a medical assessment.

Drag across a chart to zoom its x-axis. Double-click a chart or use Reset zoom on all graphs to return. "Y starts at 0" trades local detail for an honest view of absolute scale. Panels can be moved, resized, minimized, enabled, or disabled; Reset graphs restores a clean packing without resetting the demographic assumptions.

Dynamic pyramid height uses the 99.9th age percentile plus five years, rounded, so the axis follows the meaningful population rather than a fixed maximum.

World, regions, and countries

How places are assembled

The place menu is ordered from World to continents, then custom and UN-style regions, then countries. The European Union and ASEAN are explicit groups. The UN geoscheme-inspired Asian grouping places Iran and Afghanistan in Central Asia, as requested; European and Oceanian subregions are omitted.

Group population, births, deaths, cohorts, and migration are assembled from their available members. Group life expectancy is population-weighted. Where a custom group has no direct fertility series, its TFR is inferred from aggregate births, population, growth, survival, and reproductive exposure rather than averaged country by country.

Membership is fixed in the code and does not change historically. Territorial definitions, missing member series, and name mismatches can therefore create differences from official aggregates.

Responsible interpretation

What the model cannot know

  • It is deterministic. It does not attach probabilities or uncertainty intervals to a path.
  • It does not forecast shocks. Wars, pandemics, famines, policy changes, climate events, and migration crises appear only if their effects are entered manually.
  • Mortality is generalized. One life expectancy can correspond to many real age-specific mortality schedules. The visualizer chooses one smooth family so a complete curve always exists.
  • Very high life expectancy is out of sample. Extrapolated curves become increasingly speculative as they leave observed human experience.
  • Fertility timing is fixed. The age pattern of births does not shift by country, culture, technology, or year.
  • Sex differences are averaged away. Fertility uses a 50% female assumption; pyramids split every cohort 50/50; mortality is not sex-specific.
  • Migration is simplified. A generic age profile cannot represent a particular refugee flow, student migration, retirement migration, or family-reunification pattern.
  • Historical precision varies. Smooth early curves can be the output of interpolation and demographic identities rather than annual vital registration.
  • Live sources can be revised. The same URL may later return updated values, so exported scenarios record results but do not freeze source datasets.
  • The lowest-source rule is limited to loaded data. The app does not automatically scrape Wikipedia tables; it chooses the lowest available machine-readable birth or fertility value among its configured sources.
Best use: compare mechanisms, not headlines.

A valuable conclusion is usually conditional: "With this fertility path, mortality curve, migration rate, and starting age structure, this follows." Keeping the conditions visible is the point of the tool.

Data provenance

Sources and further reading

The visualizer loads machine-readable chart data live from Our World in Data. Those chart datasets assemble and process underlying work from the United Nations World Population Prospects, the Human Mortality Database, historical population reconstructions, Gapminder, UN IGME, and other providers. Follow each chart link for its current metadata, citations, and licensing.

Data labels and provider vintages can change as live datasets are revised. The visualizer's custom mortality family, survival-adjusted TFR, caution control, and feel-age transformation are model logic created for this tool and are not published indicators from the linked providers.

Terms used throughout the app

Glossary

Age-specific death probability
The chance that a person alive at a given age dies before reaching the next age, expressed here per 1,000.
Cohort
People grouped by age. In the simulation, each cohort advances one year at a time.
Generalized mortality curve
The model's complete age schedule of death probabilities, including disease and external or early-life components.
Life expectancy
The expected years lived under one year's age-specific mortality rates, not a guaranteed or individually predicted lifespan.
Net migration
Immigrants minus emigrants. A negative value means more people leave than enter.
Per mille
Per 1,000 people. A migration rate of 2 per mille adds two net migrants for every 1,000 residents in that year.
Population momentum
Future growth or decline already built into the current age structure, even if rates change immediately.
Replacement fertility
The fertility level that eventually replaces one generation with the next under a given survival regime and absent migration. It is often near 2.1 in low-mortality populations, but it is not universal.
TFR
Total fertility rate, a period summary of age-specific fertility expressed as births per woman.

Created by Alejandro Zarzuelo Urdiales. Explore more of his work at alejandrozarzuelo.com.