At a glance
The short version, row by row. The Waymorphic column is the same on every comparison.
| Waymorphic Map | Protomaps | |
|---|---|---|
| Price | Waymorphic MapFree. No plan, no quota set in advance, no invoice. | ProtomapsThe daily planet builds are free to download and host yourself; the hosted API is a paid service. |
| API key | Waymorphic MapNone. A style URL is the whole setup. | ProtomapsNone for a file you host; an API key for the hosted API. |
| Usage limits | Waymorphic MapFair use: normal maps in browsers and apps. Bulk downloads and scraping are blocked. | ProtomapsWhatever your storage and bandwidth allow; the hosted API meters requests. |
| Commercial use | Waymorphic MapYes. Personal, commercial, public sector, hobby. | ProtomapsYes. |
| Map data | Waymorphic MapOpenStreetMap, in the OpenMapTiles schema, refreshed from new planet builds. | ProtomapsOpenStreetMap in the Protomaps schema, which differs from OpenMapTiles. |
| Styles | Waymorphic MapFive: Positron, Bright, Liberty, Dark and Fiord. Any MapLibre style written for the OpenMapTiles schema also works. | ProtomapsA base style in light, dark, white, grayscale and black variants, generated by a library. |
| Coverage | Waymorphic MapThe whole planet, zoom 0 to 14 (the tiles overzoom cleanly to street level). | ProtomapsThe whole planet to zoom 15. |
| Works with | Waymorphic MapMapLibre GL JS, MapLibre Native, Leaflet with a plugin, QGIS, anything that reads a MapLibre style or TileJSON. | ProtomapsMapLibre GL JS with the PMTiles protocol, Leaflet and OpenLayers with plugins, QGIS. |
| Self-hosting | Waymorphic MapNot this service itself: it is not open source. But it is built from open-source parts and follows open formats, so you can run a compatible server of your own that answers the same URLs. | ProtomapsThat is the product: one file on S3, R2, a CDN or a plain web server with range requests. |
| Beyond the basemap | Waymorphic MapTiles, styles, fonts, sprites and shaded relief, plus search, address lookup and place lookups, all free and keyless. No routing; the examples show free public services for that. | ProtomapsThe PMTiles format and tooling, and the archives themselves. No geocoding or routing. |
| Support | Waymorphic MapBest effort. It is fast and stable, but there is no contract or uptime guarantee. | ProtomapsCommunity, and support for API customers. |
Where Protomaps is the better choice
The honest list. If one of these is what you need, this is not the page that talks you out of it.
- No server at all
A PMTiles file on object storage and a browser that reads byte ranges is the whole deployment. For a map that has to live inside your own infrastructure, on an intranet, or at the edge, that is hard to beat.
- Control over the data
Cut an extract of one city or one country, pin a version forever, add your own layers into the same file. Nothing depends on a third party staying up.
- A different schema, designed recently
The Protomaps schema is smaller and cleaner than OpenMapTiles in places, and the base styles are built to match it.
- Zoom 15
The Protomaps planet goes one zoom deeper than Waymorphic Map's.
Where Waymorphic Map fits
What you gain by pointing the map here instead.
- Nothing to host
No bucket, no CDN configuration, no 100 GB download, no build to schedule. A style URL and the map is there.
- The OpenMapTiles schema
Hundreds of existing styles, guides and tools are written against OpenMapTiles. A Protomaps style cannot run on those tiles, and the other way round.
- Five finished styles
Positron, Bright, Liberty, Dark and Fiord are complete cartography with fonts and sprites. The Protomaps base style is a starting point you generate.
- Kept fresh for you
New planet builds arrive without you doing anything, and the previous one stays online.
How to switch
The schemas differ, so a Protomaps style does not port; switch to one of the five Waymorphic styles, or write a MapLibre style against the OpenMapTiles layers. The map code loses the protocol registration and gains a style URL.
const protocol = new pmtiles.Protocol();
maplibregl.addProtocol('pmtiles', protocol.tile);
const map = new maplibregl.Map({
container: 'map',
style: {
version: 8,
glyphs: 'https://protomaps.github.io/basemaps-assets/fonts/{fontstack}/{range}.pbf',
sprite: 'https://protomaps.github.io/basemaps-assets/sprites/v4/light',
sources: { protomaps: { type: 'vector', url: 'pmtiles://https://your-bucket/planet.pmtiles' } },
layers: protomapsBasemaps.layers('protomaps', protomapsBasemaps.namedFlavor('light'), { lang: 'en' }),
},
});const map = new maplibregl.Map({
container: 'map',
style: 'https://tiles.waymorphic.com/styles/positron',
});- The style from scratch example shows a MapLibre style written directly against the OpenMapTiles layers, if you want your own look.
- Waymorphic Map serves its tiles from a PMTiles archive too, behind nginx and a CDN, so the two are the same idea at different points on the "who hosts it" line.
- Going the other way is easy as well: if you outgrow a free host, the self-hosting comparison is here.
Questions and answers
Which is cheaper?
Waymorphic Map costs nothing. A self-hosted PMTiles file costs storage and bandwidth, which for a small site is a few dollars a month and for a big one is real money, but it is your money and your control.
Can I use the Waymorphic tiles offline?
No. They are for maps in browsers and apps; bulk downloading them is against the fair-use terms. For offline use, a PMTiles extract of your own is the right tool.
Do Protomaps styles work on Waymorphic tiles?
No, the layer names and attributes differ. Use the five Waymorphic styles or any OpenMapTiles style.