All work

Felis: an atlas of every recorded cat sighting on Earth

A personal cartography project mapping roughly 289,000 GBIF occurrence records for the cat genus Felis, from house cats to sand cats to Pleistocene fossils, built to answer exactly one question: where have they been recorded?

Role
Independent Project
Period
2026
Location
Global, from GBIF biodiversity data
Recorded Felis occurrences clustered across a dark globe, rendered as paw prints

01Situation

GBIF holds hundreds of thousands of occurrence records for the genus Felis, but the raw data conflates a house cat photographed on a sidewalk with a Pleistocene fossil and a wild sand cat tracked in a desert reserve, at wildly different coordinate precision. There was no honest way to look at all of it at once without either hiding the uncertainty or misrepresenting it.

02Approach

Built a Python pipeline that pulls the full genus from GBIF's occurrence API, slicing by country to get around its 100,000-record offset ceiling, drops unmappable or invalid coordinates, and tiers every remaining record by its own coordinate uncertainty rather than filtering it out. Palaeontological records get identified through GBIF's species-profile data, since basisOfRecord alone misses most of them, and sit behind their own toggle instead of blending into the modern map. The frontend is React and Mapbox GL JS with no backend, since both GBIF endpoints are public and the packed dataset gzips to a few megabytes, and renders each record as its own rotated paw print so dense areas read as scattered tracks instead of a grid.

03Finding

Precision turned out to matter as much as location: the median record is accurate to about 20 meters, but the 90th percentile is only accurate to 27 kilometers, so a single dot size for every point would have quietly implied precision most of the data doesn't have. And roughly three in four records are Felis catus, the domestic cat, meaning most of the map reflects where people are, not where cats live.

04Outcome

A working atlas of 283,000-plus points that treats data honesty as part of the design rather than an afterthought: tiered precision, a clearly labelled extinct-species toggle, and interface language that says 'recorded occurrences' instead of implying a population or range map.