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
- Atlas of the World's Languages in Danger — UNESCOView →
- The Korean Alphabet: Its History and Structure — Young-Key Kim-Renaud
- Neural processing of a whistled language — Carreiras et al.View →
- Consonant Inventories — Ian Maddieson, WALSView →
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