About the Project

What’s the difference between Protomaps and OSM?

Despite its name, OpenStreetMap is a dataset and not a map.

OpenStreetMap is a collaboratively edited raw dataset available for download under the Open Database License. OSM maintains a website and tile service, but these services are designed primarily for data editors, and the tile server is complex to reproduce on your own infrastructure. Additionally, the tile API forbids bulk downloading or heavy usage.

Protomaps is built on OpenStreetMap and other open data sources, and designed to be make it as simple as possible for a frontend developer to serve a tiled map, without any intermediate server setup. Tiling is necessary for interactive maps where only part of the world is fetched depending on location and zoom level. A key component is the PMTiles format, which is a general purpose archive specification for tiled data, independent of OSM or any specific data source. Additionally, the Protomaps Basemap is an OSM-derived base layer, containing general features like oceans, roads and buildings, delivered in in the PMTiles format for bulk download.

Is Protomaps open source?

Yes, Protomaps is open source, instead of an open core model. This includes:

Additionally, the full basemaps tileset built from OpenStreetMap and other sources is available for free download.

See the Basemaps Licensing and Attribution guidelines for recommendations.

The exceptions are the API key infrastructure, and the marketing site (what you’re reading now).

Is there a hosted version?

Yes! If you have light to medium traffic needs, you can sign up for an API key and use a demo API with a soft limit of 1,000,000 tile requests per month. Commercial use of this API requires becoming a GitHub Sponsor, which is meant to offset the cost of running this infrastructure.

Of course, if you’re a heavy user of this API, it becomes more economical to host it youself.

Why does the hosted API require a key?

Access requires an API key, because:

  • it costs money to run. Cloudflare Workers is not free, and their free Content Delivery Network is limited to websites
  • to curb abuse by doxxing, phishing websites, etc
  • to allow communication between the developer and users
  • to help sites evaluating Protomaps understand their total usage before adopting

If you need a tile service without an API key, you can use OSM.org raster or vector tiles, or OpenFreeMap.

What happens if I go over the limit of allowed usage?

Nothing automated. If your map goes viral and exceeds the limit, it won’t be shut down. Sponsored usage that consistently exceeds the soft limit will be contacted and encouraged to migrate to their own deployment.

Why aren’t there typical plans for the hosted API?

Selling a hosted service would create a conflict of interest between the open source project and the incentives of a business. Hosted APIs rely on large customers with monthly subscriptions. It’s important that those customers don’t leave the platform, so services either transition to non-FOSS or remain difficult to run yourself.

The goal of the Protomaps project is to make leaving the platform as simple and easy as possible once you outgrow it.

What about geocoding, routing and other services?

The focus of Protomaps is only on tileset-powered cartography and interactive visualization. Tiled formats like PMTiles are usually not sufficient for geocoding and routing.

Here are other open source solutions:

Routing:

Geocoding:

Data sources:

How is this project organized and funded?

The Protomaps project was started independently by an individual (@bdon) who continues to be the primary maintainer. GitHub Sponsors cover the cost of the infrastructure, such as running the API and cloud storage.

Legally speaking, Protomaps LLC is a Delaware limited liability company, meaning there are no external investors or venture capitalists expecting a return.

If you are a company that needs support deploying Protomaps, email hi@protomaps.com.

Is Protomaps scalable?

Protomaps is designed to scale both down and up.

The simplest way to use Protomaps is to store a .pmtiles on any cloud storage, plain HTTP server, or even GitHub Pages. This is a great zero-maintenance solution for small projects.

Protomaps also powers high-traffic websites like Felt and Flickr. For global maps, it’s recommended to use the open source CDN Integration, to lower latency with edge-cached tiles.

Additionally, for high-traffic deployments you should:

Comparisons

Why would I use this instead of Google Maps?

  • The Google Maps API has a generous free tier, but high fees past 30,000 map loads. Protomaps is designed from the ground up to be a system you run yourself - as a 100% static backend on cloud storage - so you only incur the usage costs of storing and serving that data, which can be pennies for moderate usage.

  • The Google Terms of Service prohibit caching of data or using map tiles in conjunction with other services like search. Protomaps is a system for serving tiles with zero vendor lock-in.

  • The Google Maps API must be used via its Javascript SDK, which is closed source and has limited customization options. Protomaps can be used with any open source frontend library, including Leaflet, MapLibre GL JS and OpenLayers.

If your use case is simple and you can afford the Google Maps API, it may be a better choice for your project.

Why would I use this instead of Mapbox?

Mapbox is a commercial provider of map services, many of which include OpenStreetMap as a data source.

  • Mapbox, like the Google Maps API, is accessed via a metered-usage API. Protomaps is a system designed for self-hosting with no dependence on a third party or API keys, with unmetered usage - you pay your own storage and bandwidth costs.

  • Mapbox data is built from a blend of data sources; the basemaps Protomaps distributes are built from mainly OpenStreetMap, and the design is not yet as advanced.

Mapbox has initiated open standards which Protomaps strives to be compatible with:

  • The Mapbox Vector Tile format. These are also called “PBF” vector tiles, referring to its use of Google’s Protocol Buffers serialization format. or “MVT”, which is how it is referred to in the rest of this documentation. It’s supported by many GIS systems such as PostGIS.

  • The Mapbox GL frontend rendering library. Version 2 of this library has a restricted source-available license. Version 1 of this library has been forked as MapLibre GL and remains BSD-licensed. Protomaps is designed to officially support only MapLibre GL alongside Leaflet and OpenLayers.

If you need the more detailed data and cartography from the Mapbox API, the features of Mapbox GL version 2, or other Mapbox APIs, it may be a better choice for your project.