Back to home

Credits & Attribution

The interactive linguistic map is built on data from these open sources.

Map Data Sources

Glottolog

Hammarstrom, Harald & Forkel, Robert & Haspelmath, Martin & Bank, Sebastian

A database of the world's languages with classification, family trees, and geographic data.

We adapted Glottolog's language classification data for interactive map display, including color-coding by language family and filtering by endangerment status.

Atlas of the World's Languages

Asher, R.E. & Moseley, Christopher (eds.)

Language boundary polygons used to show approximate geographic distributions of the world's languages.

We extracted and simplified boundary polygons for web display, computed centroids for label placement, and converted the data to PMTiles vector tile format.

OpenFreeMap

OpenFreeMap contributors

Base map tiles providing the geographic backdrop for the interactive language map.

Fun Fact Sources

Map Technology

Built with MapLibre GL JS for rendering, PMTiles for efficient vector tile delivery, and HarfBuzz for complex script text shaping.

Map Data Pipeline

Source

Data Sources

Language points, family classifications, and endangerment status come from Glottolog — an open catalogue of the world's languages maintained by the Max Planck Institute. Geographic boundary polygons showing where each language is spoken are drawn from the Atlas of the World's Languages (Asher & Moseley, eds.). Base map tiles are served by OpenFreeMap, a free and open-source map tile provider built on OpenStreetMap data.

Technical detail

Glottolog data is downloaded in CLDF (Cross-Linguistic Data Formats) format, providing ISO 639-3 codes, Glottocode identifiers, coordinates, family trees, and AES endangerment scores. Boundary polygons from the Asher & Moseley atlas are extracted from a shapefile archive (~4,000 polygons). OpenFreeMap tiles are fetched at runtime via the MapLibre GL tile protocol.

Process

Build Pipeline

Raw source data is transformed at build time into compact, web-optimised formats. Boundary polygons are extracted, simplified to reduce file size, and converted to PMTiles — a single-file vector tile archive that browsers can efficiently range-request without a tile server. Language and family metadata is merged and pre-computed so the map can filter and colour 7,000+ languages entirely on the client.

Technical detail

The pipeline runs in three main steps: (1) prepare-boundaries extracts Asher polygons and reprojects them; (2) optimize-boundaries simplifies geometry using @turf/simplify and merges overlapping family polygons using @turf/union; (3) build-boundary-tiles bakes colour metadata, computes polygon centroids for label placement, and writes PMTiles v3 archives using a pure Node.js writer (geojson-vt + vt-pbf). Separately, prepare-language-data and prepare-family-data merge Glottolog CLDF with Wikidata speaker counts and Wikipedia infobox data. For languages using complex scripts (Devanagari, Arabic, Bengali, etc.), generate-complex-text-fonts runs HarfBuzz WASM to pre-shape autonyms into Private Use Area (PUA) codepoints in a custom font.

Render

Map Rendering

The processed data is rendered in the browser by MapLibre GL JS, a high-performance WebGL map engine. Language points appear as colour-coded dots clustered by language family. Clicking a point shows a popup with the language name, autonym, speaker count, and typological features. Boundary polygons render as filled layers from the PMTiles archives, streamed on demand as the user pans and zooms.

Technical detail

PMTiles are fetched via HTTP Range requests from Cloudflare R2, with the MapLibre PMTiles protocol adapter intercepting tile:// URLs. Complex-script autonyms (Arabic, Devanagari, Bengali, Tamil, etc.) are rendered using a custom ComplexText font containing SDF PBF glyphs at PUA codepoints — MapLibre's text layout engine cannot shape these scripts natively, so HarfBuzz WASM pre-shapes each autonym at build time and maps the result to PUA characters. At runtime, the font is loaded via MapLibre's fonts:// protocol handler.

Disclaimer

Linguistic boundaries shown on the map are approximations for illustrative purposes. They do not represent political boundaries or official territorial claims.

Licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). We have adapted and modified the original data for interactive web display. CC BY 4.0 License