Skip to content
Search

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
  • OSM map data for a specific region can be downloaded in PMTiles format
  • Leaflet.js integration
  • MapLibre GL

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):

pmtiles extract 20260614.pmtiles south-korea.pmtiles \
--bbox=124.5,33.0,131.9,38.7

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:

pmtiles extract 20260614.pmtiles south-korea.pmtiles --region=korea.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:

pmtiles extract 20260614.pmtiles south-korea.pmtiles \
--bbox=124.5,33.0,131.9,38.7 \
--maxzoom=14

Checking the result

pmtiles show south-korea.pmtiles   # 메타데이터·bounds·줌범위 확인
pmtiles verify south-korea.pmtiles # 무결성 검증

See also

Favorite site

author Zer0 sitemap