finds.dev← search

// the find

protomaps/basemaps

★ 680 · Java · NOASSERTION · updated Jun 2026

Basemap PMTiles generation and cartographic styles for OpenStreetMap data and more

Protomaps Basemaps is a complete pipeline for generating self-hostable vector map tiles from OpenStreetMap data, paired with MapLibre GL styles for rendering them in a browser. The tile generation is a Planetiler profile (Java) that produces a single PMTiles file for the whole planet in 2-3 hours. It's for developers who want to stop paying per-tile API fees and run their own map stack.

The PMTiles format is the real win here — a single flat file you can serve from any static host or CDN with HTTP range requests, no tile server process required. The style system is TypeScript that generates MapLibre JSON, which means you can programmatically swap themes, languages, and layer configs rather than hand-editing giant style blobs. The render test suite is pixel-level: each test case ships an input OSM PBF, expected PNG, and style JSON, so visual regressions are caught in CI rather than discovered in production. Layer-by-layer Java source (Roads.java, Places.java, etc.) means the tile generation logic is readable and patchable without understanding the whole Planetiler framework.

Only US and NL locale implementations exist out of the box — adding right-to-left or CJK locale handling means writing it yourself, and the ScriptSegmenter code suggests this is non-trivial. The sprites are built via a Rust tool in a separate Cargo workspace, so the full build chain is Java + Node + Rust, which is a meaningful setup tax. The style package only ships five color themes and there's no documented path for adding a custom one without forking the package. Test coverage in the Java tile layer is at the layer level (one test per layer), not at the OSM tag level, so edge cases in tagging — highway=track, access=private, etc. — can slip through unnoticed.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →