Live site: https://acycliczebra.github.io/Evolution/
An interactive, static explorer of the tree of life and the geologic time scale, built by scanning every page of the English Wikipedia dump (2026-09-01, 25.9 M pages) and extracting every taxobox.
- 544,356 taxa / 392,921 species (extinct and extant), from domains down to subspecies
- Every taxon shows its picture, scientific & common name, rank, authority, conservation status, temporal (fossil) range, summary and a link to its Wikipedia article
- Drill down via breadcrumbs, subgroup cards or an expandable tree diagram; search any name
- A zoomable geologic time strip — eon, era, period, epoch and age in official ICS colours — with 54 evolutionary milestones
- Click any time unit (or drag the time cursor) to see what Earth looked like on an interactive 3D globe (three.js), a description, the iconic and most diverse life, and what first appeared
- Filter any group to the members alive at the selected time
data/ contains the organized dump:
| file | content |
|---|---|
taxa-NN.jsonl.gz |
one taxon per line, preorder over the tree (parents before children) |
timescale.json |
geologic units (eon → age) with dates, maps, descriptions and per-unit life, plus milestones |
Taxon record fields:
{"id": 354124, "name": "Cavia porcellus", "rank": "species", "parent_id": 354123,
"lineage": ["Life", "Eukaryota", "…", "Caviidae", "Caviinae", "Cavia"],
"extinct": false, "range_end_ma": 0,
"image": "George the amazing guinea pig.jpg", "common_name": "Guinea pig",
"authority": "(Linnaeus, 1758)", "conservation_status": "DOM",
"short_description": "Domesticated rodent from South America", "summary": "The guinea pig …",
"wikipedia": "Guinea pig", "species_count": 1, "descendant_count": 0}image is a Wikimedia Commons/Wikipedia file name
(https://en.wikipedia.org/wiki/Special:FilePath/<image>).
python scripts/download.py <dump url> enwiki.xml.bz2 # parallel, resumable download
python scripts/extract.py enwiki.xml.bz2 enwiki-index.txt.bz2 out/ 30 # ~10 min on 30 cores
python scripts/build.py out/ . # ~3 min → data/ and web/public/data/
- extract.py streams the multistream dump in parallel and pulls out
Template:Taxonomy/*pages (the backbone that Wikipedia's automatic taxoboxes use), every article containing aTaxobox,Automatic taxobox,Speciesbox,Subspeciesbox,Infraspeciesbox,Virusbox,IchnoboxorOobox, allInfobox geologic timespans, and redirects. - build.py resolves the taxonomy templates into a tree (following
same as,/skipand/?variants), attaches articles to their taxa, places Speciesbox/manual-taxobox species under their genus, parses fossil ranges into millions of years, derives extinct/extant status and ranges bottom-up, and computes for every geologic unit the most diverse groups (by number of dated genera alive) and first appearances. - curated.py holds the ICS time scale skeleton and colours, per-unit notes on Earth's geography/climate and iconic life, and the milestones. Dates and paleomaps from Wikipedia's period articles override the skeleton when present.
The site is available in English, French, Hindi, Italian, Japanese,
Korean, Persian, Portuguese, Russian, Spanish, Turkish and Vietnamese (language menu in the header;
the choice and the order of recently used languages are kept in localStorage). URLs stay in
English (#n=<id>&u=<unit>), so switching the language keeps the open taxon and time.
- Names, summaries and article links come from each language's own Wikipedia (2026-09-01 dumps): every English article the site uses (taxa, geologic units, milestones) is matched to its local article through the local wiki's interlanguage links, and the local title and lead paragraph are taken from the local dump. Where no local article exists the English text is shown, marked as such.
- Interface strings are in
web/src/i18n/<lang>.json(source:web/src/i18n/en.ts); curated content (geologic unit names, notes on Earth, milestones, rank names, globe labels) is translated inscripts/i18n/content.<lang>.json.
# per language: langlinks table + multistream dump parts (downloaded one at a time, deleted after use)
python scripts/i18n_extract.py . out/redirects.tsv i18n/ 20260901 hi es fr pt ru ja vi tr fa ko it
python scripts/i18n_build.py . i18n/ hi es fr pt ru ja vi tr fa ko it # -> web/public/data/l/<lang>/
web/public/data/l/<lang>/ holds n/<chunk>.json (localized name, article and lead per taxon,
overlaying the English chunks), time.json (localized time scale and curated content), and
s/<bucket>.json search shards over the local names.
The globe is rendered with three.js from scientific reconstructions (not Wikipedia images),
generated by scripts/paleomaps.py into web/public/earth/:
| time | source |
|---|---|
| 0–540 Ma, every 5 Myr | PALEOMAP PaleoDEMs — Scotese & Wright (2018), CC BY 4.0: gridded elevation and ocean depth, shaded relief; land is coloured barren before land plants (~470 Ma) and vegetated after (~400 Ma) |
| 545–1000 Ma, every 25 Myr | GPlates Web Service, plate model of Merdith et al. (2021): reconstructed coastlines only (relief and depth are illustrative) |
| > 1000 Ma | no reliable global reconstruction exists; a clearly labelled placeholder is shown |
# needs numpy, pillow, netCDF4; grids from paleoDEM_0.2Deg_grids.zip at the PaleoDEM link above
python scripts/paleomaps.py <paleoDEM_0.2Deg_grids dir> <cache dir> .
The site in web/ is a React + TypeScript app built with Vite (D3 is used for the tree layout
and zoom). Taxon data is lazy-loaded from web/public/data in 1,000-taxon chunks and the search
index is sharded by prefix; images are hot-linked from Wikimedia Commons.
cd web
npm install
npm run dev # local dev server
npm run build # type-check + production build to web/dist
Pushing to main deploys to GitHub Pages via .github/workflows/pages.yml.
| path | purpose |
|---|---|
src/App.tsx |
app state (selected taxon, time unit, timeline zoom), URL hash sync |
src/components/Timeline.tsx |
zoomable geologic time strip with milestone pins |
src/components/Explorer.tsx |
breadcrumbs, taxon card, subgroup cards/filters |
src/components/TreeView.tsx |
expandable tree diagram |
src/components/TimePanel.tsx |
selected period: globe, description, life, first appearances |
src/components/Globe.tsx |
three.js paleogeographic globe (lazy-loaded) |
src/data.ts |
chunk loading and search |
src/time.ts |
time scale helpers (warped scale) |
src/i18n/ |
languages, UI strings, localized formatting and content (useI18n) |
src/components/LanguageMenu.tsx |
language menu (recently used first) |
Text and images © Wikipedia / Wikimedia Commons contributors, CC BY-SA 4.0.