🗺️ Vector maps
Protomaps is a mapping system based on vector tiles. That means maps are customizable, ready for Retina displays, and multilingual. Lines and text look super sharp on mobile.
📝 One-liner integration
Protomaps.js is an open source, sub-30 kb renderer that works great by itself or plugged into to Leaflet, the developer favorite for interactive maps and plugins.
🛠️ Self-hosted service
PMTiles is a self-hosted map data backend - and makes self-hosting dead simple, as easy as uploading to S3. Self-hosted area maps are low cost, serverless and zero maintenance.
🌐 Global map CDN
If self-hosting isn't for you, use our Map CDN for low-latency maps and one less component to worry about. Simply get a free API key with generous soft limits.
A fast & lightweight library for locator maps, easy on page size
On GitHub ›
Customizable via plain JavaScript for map labels, patterns and colors
Browse premade themes (Coming soon)›
Leaflet layer plugin for geodata mashups and interactivity
View gallery ›
Low-code integration with PostGIS, Observable, d3.js and more
Examples ›
Frequently Asked Questions
Protomaps is a cartographic product built on OpenStreetMap data. Displaying a map requires attribution as described by the Open Database License. You can download the complete OSM dataset at planet.openstreetmap.org; it's free and open source.
Protomaps data is a processed result of the OSM dataset for efficient map display, including:
- Slicing of geometric features into tiles
- Simplifying or eliminating features at zoomed-out views (generalization)
- Organization of features into layers
- Computation of label prominence and positions
The public domain Natural Earth dataset may be used in limited situations for generalized features.
If you download a small-area map of tiles in the PMTiles format, or raw OSM data in PBF format, this will reflect the minute-level state of OpenStreetMap. This quick update frequency is meant to encourage data additions and edits as you use the map. The easiest way to edit the map is with an account on osm.org and the web editor (iD).
With the API or large-area maps, the map is updated infrequently, on the order of 1-2 months. In the future, map data from the API will be updated at fixed release intervals, like 2021-08, 2021-10, etc.
Some core parts of Protomaps are open source; these are all available on GitHub, including:
- The protomaps.js map rending library (BSD License)
- The PMTiles format and libraries (specification public domain/CC0, implementations BSD)
- The OSMExpress OpenStreetMap storage engine (BSD)
Other parts are not, such as the map tile API, the tile generation infrastructure, and this website. You are encouraged to mix-and-match the above components with other services and projects.
- Protomaps.js is a renderer focused only on the web browser. It takes maximum advantage of browser-only features like Canvas2D and Web Fonts. There isn't a native version for iOS and Android, but there are Alternate Renderers.
- The renderer does not use WebGL or Web Workers. This accomplishes vector map and text rendering with orders of magnitude less code. It also means map display is limited to 2D discrete stepped zoom levels and not a smooth, 3D "infinite zoom" experience. If those are vital for your project, again check out Alternate Renderers.
- Protomaps as a whole is designed with minimal dependence on a 3rd party server to reduce vendor lock-in. It can even be used without a dynamic backend at all, making it ideal for long-lived projects where subscribing to an external API is undesirable.
Protomaps is focused only on map display; its tiled data formats are not sufficient for other tasks like searching for place names and addresses (geocoding) or determining paths between points (routing). Other OSM-based projects we recommend:
- Routing: Valhalla, OpenTripPlanner
- Geocoding: Nominatim, Photon and Pelias projects; Geocode Earth company and service
A Note From the Author
I've spent the last decade building web maps and apps for companies and NGOs. While there's a wealth of free data like OpenStreetMap, creating maps and putting them on the web was far from affordable or straightforward. Thus I set out to build the map system I wanted to use myself.
I decided to do this as a self-funded indie project. Mapping has been driven by software designed to sell advertisements or drive investor-preferred monetization models, which has stifled innovation.
Maps are a critical part of the web and interacting with the physical world. Despite this, the ability to make and publish web maps has been the scarce domain of a few internet giants - so let's change that, starting from the bottom up. If you're curious about whether this is a fit for your project, send me an email!
- @bdon