← Back to the map ← Back to the home page

How this map is built

This page explains where the data comes from, how it's combined, and — just as important — where it's known to be wrong, approximate, or incomplete. Read this before citing anything here in a lesson plan or paper.

What this is

A personal passion project: a whole-world map of political boundaries for any year in history, with a year control to move through time. It's also meant to double as a free research/teaching resource for history classrooms — but it is not a peer-reviewed academic source. Verify anything load-bearing against a primary source.

The boundaries are drawn over today's coastlines and rivers, not the physical geography of the selected year — physical geography (coastlines, river courses, lake extents) does change over centuries, and this map doesn't attempt to model that. See "Known limitations" below.

Data sources

Source Covers License What it contributes
historical-basemaps (Ourednik et al.) ~123,000 BCE – 1880 CE (43 snapshot years) GPLv3 The base boundary geometry for ancient through early-modern history. Community-maintained, explicitly labeled work-in-progress by its own authors.
CShapes 2.0 (Schvitz, Rüegger, Girardin, Cederman, Weidmann, Gleditsch — ETH Zürich) 1886 – 2019 (134 snapshot years, one per calendar year) CC BY-NC-SA 4.0 Academic dataset, replaces historical-basemaps' sparser coverage of the same era. Adds capital city per country.
Wikidata Modern countries only (matched by name, ~174 of 181) CC0 Replaces the derived existed-date-range with real recorded inception/dissolution dates, plus predecessor/successor links, wherever a confident name match exists.
OpenHistoricalMap 233 entities, wherever community contributors have mapped them (very uneven — see below) CC0 Replaces the boundary shape itself (not just the date) with a more precise, real, day-dated version, for whichever specific entity/year combinations it covers. Shown with a gold outline on the map.

How the sources are combined

Every year is one file with the whole world's boundaries for that year. The three map sources never overlap in which years they own — historical-basemaps covers up to 1880, CShapes takes over for 1886–2019 (its snapshots replace historical-basemaps' overlapping years outright, rather than showing both). OpenHistoricalMap is different: it doesn't own any years by itself. Instead, wherever it has a matching, date-accurate boundary for a specific country in a specific year, that one entity's shape is swapped in on top of whatever the base source already drew — everything else on the map for that year is untouched. That's why some countries get a gold outline and most don't: it reflects genuinely uneven real-world coverage, not a rendering choice.

Simplification: all geometry is simplified (fewer vertices) before shipping to the browser, to keep the map fast to load. One deliberate choice here: the pipeline does not run typical GIS "cleanup" that dissolves overlapping polygons or removes small/sliver shapes — overlapping claims and small polities are real, intentional features of pre-modern history in this data, not defects to clean up.

Known limitations

Source code

The full data pipeline and front end are open — every step described above is a script, not a manual process, so it can be re-run, audited, or corrected. See the GitHub repository.

Support this project

This map is free, ad-free, and always will be — no account, no paywall, no tracking. If it's been useful for a lesson, a research rabbit hole, or just idle curiosity, you can buy me a coffee ☕ to help keep the data fresh and fund new features.