Sources& attribution
What we drew on, who owns it, and how to file a correction.
Conflict records
The 10,584 conflict entries in public/conflicts.json were seeded from the leads of English Wikipedia articles (CC BY-SA 4.0), then cross-checked against:
- Micheal Clodfelter, Warfare and Armed Conflicts: A Statistical Encyclopedia of Casualty and Other Figures, 1492–2015 (4th ed., McFarland).
- R.J. Rummel, Death by Government, for 20th-century democide and famine-adjacent figures.
- The Uppsala Conflict Data Program (UCDP) for post-1945 armed-conflict tracking.
- The Correlates of War (COW v4) inter-state and intra-state war series, primarily as a cross-check on 1816–2010 date boundaries and casualty totals.
- ACLED for post-1997 event-level corroboration of ongoing conflicts, especially in Africa and the post-Cold-War Middle East.
- For pre-modern Eurasia, period-specific scholarly syntheses (Bagnall & Frier on the Roman census; Twitchett & Fairbank on China; Lev & Boomgaard on Southeast Asia; Reid on early modern Southeast Asia; Thornton on West Africa) where the encyclopedic compilations are too thin.
Each conflict entry that has a Wikipedia source preserves the article URL on the record; the conflict sidebar links to it directly.
Bulk historical datasets (2026 expansion)
In 2026 the atlas was expanded from ~2,571 to 10,584 conflicts by ingesting peer-reviewed conflict datasets at battle level. These records sit at lower visual prominence (importance 2), carry casualties: null where the source gives no reliable figure, and each cites its source dataset on the record. Per each provider's requested attribution:
- HCED (geocoded battles, 1468 BCE-2003): Miller, Charles, and K. Shuvo Bakar (2023). "Conflict Events Worldwide Since 1468BC: Introducing the Historical Conflict Event Dataset." Journal of Conflict Resolution 67(2-3): 522-554. doi:10.7910/DVN/6ZFC0V. HCED draws primarily on Tony Jaques, Dictionary of Battles and Sieges (2007).
- Wikidata (supplementary battles with casualty figures), used under CC0 1.0: Wikidata contributors, via the Wikidata Query Service.
- UCDP (modern conflict tracking, 1946-2024), used under CC BY 4.0. Cited as requested: Davies, S., Pettersson, T., Sollenberg, M., and Oberg, M. (2025). Organized violence 1989-2024, and the challenges of identifying civilian victims. Journal of Peace Research 62(4). Gleditsch, Nils Petter, Peter Wallensteen, Mikael Eriksson, Margareta Sollenberg, and Havard Strand (2002). Armed Conflict 1946-2001: A New Dataset. Journal of Peace Research 39(5). UCDP is part of and funded by DEMSCORE, national research infrastructure grant 2021-00162 from the Swedish Research Council.
- Brecke Conflict Catalog (consulted for casualty cross-checking, not bulk-imported, since its fatality figures are war-level and could not be honestly attached to battle-level records): Brecke, Peter (1999). "Violent Conflicts 1400 A.D. to the Present in Different Regions of the World." Peace Science Society.
Coordinate caveat: battle coordinates from HCED are machine-geocoded. A sampled audit found ~95% land within ~75 km of the true site; roughly 1 in 20 may be materially off (though within the correct country), and entries that geocoded to the wrong continent were removed. Treat individual battle pins as approximate.
Empire summaries
The lead-paragraph summaries shown under "Overview" / "From Wikipedia" in the empire flyout come from the English Wikipedia REST summary API. Reused under CC BY-SA 4.0 with attribution preserved on every entry.
The fetcher script (scripts/fetch_wikipedia_summaries.py) sends a polite User-Agent identifying the project and its maintainer, rate-limits to a few requests per second, and caches results in public/empire-wikipedia.json. Curated editorial summaries (lib/empire-descriptions.ts) take precedence in the UI; Wikipedia content fills the gap and is always labelled as such.
Borders, polygons, geometry
The 427 empire polygons in public/empires.json come from several kinds of source, in roughly this order of priority:
- aourednik / historical-basemaps (GPL-3.0) — the project's primary source. Year-keyed GeoJSON files for every century from 10000 BCE to 2000 CE, matched to our empires by name and validated by border-year + bounding-box + area sanity checks. ~186 features sourced this way.
- Hand-traced from Wikipedia article geography. Where historical-basemaps lacks a polygon or offers only a low-resolution shape, the boundary is constructed vertex-by-vertex from the territorial-extent prose of the cited Wikipedia article — rivers, mountain ranges, modern country borders, named frontier cities — cross-referenced against modern coastlines. The source field on each such feature records the article URL. ~32 features hand-traced this way.
- Hand-crafted from scholarly atlases. Cambridge and Talessman's atlases, Pleiades for the ancient Mediterranean, Hämäläinen for Comancheria, similar canonical works for specific regions. ~40 features.
- Cliopatria (Seshat Global History Databank). Time-keyed polity polygons used under CC BY 4.0 for several indigenous-American states. Cite: Seshat Global History Databank, Cliopatria (2024), doi:10.5281/zenodo.13363121. The 2026 indigenous-Americas expansion added ~70 pre-Columbian and historic Native American polities (Mesoamerica, Andes, Amazonia, North America), hand-traced from Waldman's Atlas of the North American Indian, the Smithsonian Handbook, Coe & Koontz, D'Altroy, and Martin & Grube; almost all are dashed (approximate) by nature.
- Natural Earth clip-to-country. Natural Earth (public domain) modern country shapes, clipped to plausible union for cases where no era-specific polygon survives. These are explicitly labelled as approximate; the line is the modern coastline, not a historical frontier.
The full repeatable methodology, including the shape-pathology scan that flags primitives (squares, ovals, half-circles), anchor-point selection rules, validation thresholds, and the affine-transform method for tracing raster maps, is documented in BORDER_TRACING_PROCESS.md in the repository root.
Not used as sources, despite occasional temptation: speculative or fan-made cartography (r/imaginarymaps, user-talk-page speculation on Wikipedia, Pinterest reuploads of unlicensed atlas scans). A polygon that looks sharp but cites nothing checkable would defeat the point.
Solid vs. dashed: two questions, not one
The dashed/solid distinction tries to answer two questions at once: is the polygon faithful to its source? and did the polity itself have a fixed frontier? Both have to be “yes” for the border to render as a solid line.
The first question is the accurate flag in the data: true for canonical historical-basemap data, hand-traced polygons from cited articles, or hand-crafted polygons drawn from scholarly atlases; false for clipped-to-country approximations.
The second question is the polityType flag, which takes one of five values:
- state — a bureaucratic state with administrative provinces, taxation, and a recorded frontier. Roman, Han, Ming, Mughal, Ottoman, Bahmani Sultanate, Ryukyu Kingdom, modern nation-states, colonial administrative units. ~242 features. Only this category earns a solid line.
- tributary — paramount chiefdom or tributary network. A real center with tribute-paying periphery and no surveyed frontier. Coosa, Calusa, Tu'i Tonga, Toltec, Ife, Kanem, Mali Empire, Mwene Mutapa. ~81 features.
- confederation — loose alliance of independent groups sharing identity. Iroquois Confederacy, Huron-Wendat, Maori iwi (collective), Taíno chiefdoms (plural), Mossi states (plural), Hausa city-states, Apache Confederacy, Maya Classic city-states. ~21 features.
- culture — archaeological culture defined by material remains, not by political organization. Hohokam, Mogollon, Fremont, Ancestral Pueblo, Mississippian, Olmec, Adena, Hopewell, Teotihuacan as a cultural sphere, Wari / Tiwanaku. ~16 features.
- nomadic-range — pastoralist or hunter-gatherer seasonal range. Pechenegs, Comancheria, Lakota/Sioux territory, Xiongnu, the Göktürk khanates, Mapuche, Patagonia / Tehuelche. ~16 features.
The four non-state categories render dashed regardless of how faithfully the polygon was traced, because pretending those polities had fixed borders would itself be inaccurate. The sidebar caption changes per category — “Cultural sphere”, “Tributary network”, etc. — so the reader knows why the line is dashed.
We treat the dashed/solid distinction as a hard editorial requirement — never restyle it away. If a polygon is dashed, don't cite the line.
Map tiles & basemap
The dark base map and tile rendering is provided by Mapbox. Geographic features (coastlines, rivers, modern administrative boundaries, place names) come from OpenStreetMap.
Required attribution: © Mapbox · © OpenStreetMap contributors (under the ODbL). The attribution control is visible in the corner of every map view.
Application code
All code in this repository is released under the MIT License. See LICENSE in the repository root for the full text and a per-dataset breakdown.
Historiography & disputed figures
The headline numbers on the map are point estimates drawn from a mainstream scholarly literature that itself disagrees, sometimes by an order of magnitude. We surface the disagreement in the per-conflict sidebar where we can; this section collects the most important debates so a reader who wants to argue with our number knows what they're arguing about.
- An Lushan Rebellion (755–763 CE). The famous “36 million dead” figure is widely quoted but comes from comparing two Tang census rolls. A substantial body of recent scholarship (Pulleyblank; Durand; more recently Lewis and Charles Holcombe) reads most of that drop as administrative collapse — registered households, not deaths. Plausible direct death tolls range from a few million to the low tens of millions.
- Mongol conquests (13th c.). Cumulative death tolls in the 20–60 million range are common in popular sources; the modern academic consensus (Morgan; May; Biran) is that the true number is real but unrecoverable, with the higher figures dependent on chronicles like Juvayni and Rashid al-Din that themselves use round numbers as a literary convention.
- Taiping Civil War (1850–64). Reported tolls run from 20 million to over 70 million. Most current scholarship (Platt; Spence; Meyer-Fong) settles on roughly 20–30 million including famine and epidemic deaths, with much of the higher spread again driven by Qing census discontinuities.
- The Columbian collapse (1492–1600). Estimates of the pre-contact population of the Americas, and the proportion killed by epidemic disease, war, and colonial labor regimes, range from ~8 million (lower bounds) to ~100 million pre-contact with 50–95 % loss. Koch et al. (2019) and the Berkeley/Stanford consensus is now in the 50–60 million pre-contact / ~90 % loss range, but the question is genuinely open and politically loaded.
- R. J. Rummel's “democide” figures. We use Rummel for 20th-century mass-violence counts, but cautiously. His maximum-likely estimates (especially for Mao-era China, the Soviet Union, and the Khmer Rouge) are widely judged to skew high by historians of those regimes, and his methodology (encyclopedia compilation, midpoint averaging) is not always auditable. Where Rummel is the headline source, the sidebar shows the range that includes lower scholarly estimates.
- The Holodomor. We list the 1932–33 Soviet famine in Ukraine separately as a mass-violence event. Recognition as a genocide is the position of Ukraine, most Western parliaments, and a growing scholarly majority (Applebaum; Snyder; Marples); it is rejected by Russia and contested by a minority of historians of the Soviet Union. The atlas adopts the genocide framing while flagging the dispute.
- Armenian Genocide, Holocaust, Rwandan Genocide. Each is named with the accepted academic and (where it exists) legal designation. State-level denial — Turkey for 1915, fringe revisionism for the Shoah — exists; the atlas does not equivocate.
Terminology choices
Naming is itself a historiographical act. A few decisions worth flagging:
- “Indian Rebellion of 1857”, not “Indian Mutiny” or “Sepoy Mutiny”. The colonial framings reduce a multi-class anti-imperial uprising to military insubordination; they were standard in British historiography until the late 20th c. and persist in older sources.
- “Yihetuan Movement (Boxer Rebellion)” uses the Chinese self-designation as primary and the foreign-press name parenthetically — the convention adopted by Cohen, Esherick, and most current sinological scholarship.
- “Byzantine Empire” is the conventional modern term, but a 16th-century coinage. The empire's inhabitants called themselves Romans (“Rhōmaîoi”); the atlas uses “Byzantine” for recognizability but the entry flags the modernism.
- Place names resolve to the modern canonical form in modern contexts (Mumbai, Kyiv, Yangon, Beijing) and to period-appropriate names where the period was named for the city (Constantinople / Konstantiniyye / Istanbul fade in and out of the map label as the centuries scroll past).
Periodization
The site uses the Western three-age scheme (Bronze Age / Classical Antiquity / Medieval / Early Modern / Modern) for era labels because our users overwhelmingly read in that vocabulary. This framing is unmistakably Eurocentric and lines up poorly with East Asian, African, and pre-Columbian American chronologies — there is no “Bronze Age” in the Mississippian world, the Chinese Tang–Song transition is not a “medieval” event, and sub-Saharan iron metallurgy predates the Mediterranean Iron Age. Per-region periodization is a planned future addition; in the meantime, treat the era ribbons as one viewing lens, not the only one.
Methodology caveats
- Casualty figures for pre-modern conflicts should be read as orders of magnitude. Many derive from primary sources (often censuses showing population loss) that conflate war deaths with famine, plague, and displacement. Where a well-cited range exists (~150 conflicts), the sidebar shows the range with source attribution rather than a single number.
- Deaths vs. displacement. Events whose defining toll is forced migration rather than killing — the Nakba, the Trail of Tears, Partition of India — keep these as separate ledgers. The casualty figure on the map dot is always a death estimate; displacement figures appear in the narrative.
- Coverage bias — concretely: of the 1,335 conflicts in the current dataset, ≈36 % are in Europe, ≈33 % in Asia, ≈20 % in the Americas, ≈9 % in Africa, and ≈2 % in Oceania. Pre-colonial sub-Saharan polities, Pacific Islander warfare, and pre-Columbian Mesoamerican and Andean conflict are all under-represented relative to a true global count. Pre-1500 records are sparser everywhere; we treat the gap as a debt, not a feature, and welcome corrections that close it.
- Importance ratings (1–5) are editorial and were originally seeded from a Eurasian-centric weighting that over-rated European wars relative to comparable conflicts elsewhere. We're actively recalibrating; if a rating looks wrong, file an issue with a specific case rather than a general complaint, since the specific cases are what we can actually correct.
- Importance ratings (1–5) are editorial. They determine visual prominence on the map and are weighted by casualties, duration, geographic scope, and downstream significance. They are not a value judgment about which lives mattered.
- Ongoing conflicts — figures for active wars (Russo-Ukrainian, Israel-Hamas, Sudan, Yemen, Myanmar, and others) are point-in-time snapshots from the dataset version shown in the About panel. They should be cross-checked against current reporting before being cited.
- Disputed borders — the modern country shapes follow Natural Earth conventions, which approximate internationally recognized borders. These choices reflect Natural Earth's convention, not endorsement of any party's claim. The disputed-territory note in the bottom right of the map enumerates the cases.
Corrections & feedback
Spotted a wrong date, an under-counted casualty figure, an empire boundary that looks off, or a war that's missing? We treat corrections as the highest-priority work.
Please file an issue on the issue tracker with:
- The conflict / empire ID (visible in the sidebar footer in mono type).
- What's wrong, and what it should be.
- A citation — primary source, peer-reviewed work, or a Wikipedia link will all do.