Best / Maps and tiles
Best open-source Maps and tiles
The best self-hosted map split in the c17.io catalog is MapLibre GL JS for a BSD-3-Clause vector renderer (the published Mapbox embed path), Protomaps when the job is BSD-3-Clause PMTiles rather than a tile cluster, Nominatim when the job is GPL-3.0 geocoding rather than a GL map — /best/maps-tiles is the renderer; geocoding lives on /replace/google-maps, and GraphHopper when the job is Apache-2.0 routing. This is not Mapbox's every geocoding or navigation SKU, or Google Street View. A custom embed stays on uMap. Site search stays on /best/search-engines-self-hosted.
Open the stackStart on Railway
Ranked picks
1
MapLibre GL JSBSD-3-Clause vector renderer (11,895 stars in the catalog) — the c17 Mapbox GL path.
When to pick it: A map in the page you already host.
11,895 stars in the catalog
2
ProtomapsBSD-3-Clause PMTiles (615 stars in the catalog).
When to pick it: One tile file you host, not a tile cluster.
615 stars in the catalog
3
NominatimGPL-3.0 OSM geocoding (4,521 stars in the catalog) — the c17 Google Maps search path.
When to pick it: An address lookup, not a GL map.
4,521 stars in the catalog
4
GraphHopperApache-2.0 OSM routing (6,731 stars in the catalog).
When to pick it: Directions if Mapbox was the route API.
6,731 stars in the catalog
How they compare
| Tool | License | Self-host | Best for |
|---|---|---|---|
| MapLibre GL JS | BSD-3-Clause | Easy | A map in the page you already host. |
| Protomaps | BSD-3-Clause | Medium | One tile file you host, not a tile cluster. |
| Nominatim | GPL-3.0 | Medium | An address lookup, not a GL map. |
| GraphHopper | Apache-2.0 | Medium | Directions if Mapbox was the route API. |
Related pages
FAQ
- MapLibre or Protomaps?
- MapLibre is the renderer. Protomaps is tiles in a file. You usually want both.
- Mapbox or Google Maps?
- Mapbox is the vector embed — /replace/mapbox. Google Maps is geocoding and routing — /replace/google-maps.
- Is this Street View?
- No. Street View and live traffic stay behind.
- Are these free?
- MapLibre and Protomaps are BSD-3-Clause. Nominatim is GPL-3.0. GraphHopper is Apache-2.0. You pay disk and hosting. Template users never pay c17.
- How do I deploy it?
- Open /stacks/maplibre-tiles. Serve one PMTiles file or a tile URL. Geocoding stays on /stacks/osm-maps.
Stack of the Week
Get one stack a week that replaces a SaaS bill.