Protomaps
lastmod 2026-06-17created 2023-03-149 edits
Build your own map system with OpenStreetMap
About
- Protomaps is a free and open-source world map that can be deployed as a single static file on cloud storage.
- Using an open specification called PMTiles, it builds a single-file tile pyramid based on compressed Hilbert ordering, which can be queried through HTTP Range requests.
- Protomaps can be delivered with ultra-low latency over edge networks such as AWS Cloudfront and Cloudflare, using Lambda or Workers.
- It provides first-class support for mapping libraries such as Leaflet and MapLibre GL, enabling vector mapmaking and visualization of your own geographic data.
- Protomaps provides a download service for downloading basemap layers from OpenStreetMap for free.
- It can drastically cut mapping costs on the cloud infrastructure you already use, from hundreds of dollars a month to a few pennies.
- Map-based projects and sites work permanently, even offline, without depending on third-party services or API keys.
- Protomaps also maintains a Tiles API - get a free API key. It is free for non-commercial use, or for commercial use with a GitHub sponsorship.
- Protomaps is a self-funded independent developer project that aims to make interactive mapmaking accessible not as a hobby but to organizations of all sizes.
- You can support full-time work on Protomaps by downloading the open-source world basemap tileset through a support plan on GitHub Sponsors, or through paid development of open-source features.
Features
- Customize OSM maps and host them serverless yourself, using S3 etc.
- Protomaps + PMTiles + OSM Express
- Protomaps.js : 2D Canvas-based open-source vector map renderer
- PMTiles : a serverless format for map tiles (suited to S3 and CDNs)
- OSM Express : a fast OSM storage format
CLI Usages
Installing the pmtiles CLI
# macOS
brew install pmtiles
# 또는 릴리스 바이너리 (Linux 등)
# https://github.com/protomaps/go-pmtiles/releases
Extracting by bounding box
South Korea bbox (west, south, east, north; includes Jeju/Ulleung/Dokdo):
The bbox order is minLon,minLat,maxLon,maxLat.
``pmtiles extract`` reads only the chunks it needs via HTTP range requests, whether the source is a local file or a remote URL/S3,so you can cut directly from the remote without downloading the whole thing:``pmtiles extracthttps://example.com/20260614.pmtilessouth-korea.pmtiles --bbox=124.5,33.0,131.9,38.7
Using a GeoJSON region for a more precise cut
Since a bbox is a rectangle, it also includes North Korea and some of the sea. To cut along the national border, provide a South Korea polygon in GeoJSON:
korea.geojson just needs to be a Polygon/MultiPolygon Feature (e.g., the South Korea admin-0 boundary from Natural Earth).
Also limiting the zoom level
To reduce the size further, also cut at a maximum zoom:
Checking the result
See also
Favorite site
- Protomaps | A serverless system for planet-scale maps
- Github - protomaps
- A collection of recommended tools for building Geospatial web services | GeekNews
- [Original] Tools I recommend for building Geospatial Web Applications | by Ramiz Sami | The Startup | Medium
- Frontend: Leaflet, Openlayers, GeoExt, Turf.js
- Backend: GeoDjango, GeoServer
- DB: PostGIS
- Data: QGIS, Mapshaper
- Data sources: OpenStreetMap, Diva-GIS
- Home – Switch2OSM
- Summarizes what you need when switching to OSM to host maps yourself instead of using a paid map API like Google Maps. Includes explanations of Leaflet and OpenLayers for setting up and using a map tile server, plus tools related to geocoding/routing/vector map libraries.
- World maps can be run serverless with an archive file called PMTiles
- Previously only the format was published; now the serverless code is also open-sourced
- Can be set up and running on AWS Lambda and Cloudflare Workers in 20 minutes
- For 50,000 loads, the Google Maps API costs ($350/month), whereas running Protomaps on Cloudflare Workers costs 50 cents a month at 20 tiles per session, much cheaper