The Google Maps alternative for the web
Fast vector maps built on OpenStreetMap and served from a global CDN. Ten styles, one endpoint, and 100,000 free map loads a month. No cookies, no tracking, no card to get started.
Styles
Every style is a complete vector map of the world, from street level to the whole globe. Swap one for another by changing a single word in the style URL.
Data from the world's largest community map, rendered as compact vector tiles. Footpaths, buildings and shops in detail, with none of the licensing anxiety.
No cookies and no tracking scripts on your pages, so a map never becomes a consent banner. Your visitors stay yours.
Tiles are cached at the edge of a global CDN, and a map needs about a quarter of the page weight of a Google embed. Works with MapLibre, Mapbox GL, Leaflet and OpenLayers.
What a map costs
Google and Mapbox charge for every thousand map loads above a small free allowance. ExpressMaps includes 100,000 loads a month free and then charges a flat monthly plan, so a busy month never turns into a surprise invoice.
| Map loads a month | ExpressMaps | Mapbox | Google Maps |
|---|---|---|---|
| 25,000 | Free | Free | $105 |
| 50,000 | Free | Free | $280 |
| 100,000 | Free | $250 | $630 |
| 250,000 | $29 | $800 | $1,470 |
| 1 million | $99 | $3,050 | $3,570 |
| 5 million | $399 | $13,050 | $11,970 |
List prices for map loads, November 2026. Google: 10,000 free Dynamic Maps loads a month since March 2025, then $7 per 1,000 falling to $2.10 above 1 million. Mapbox: 50,000 free with a card on file, then $5 per 1,000 falling to $2.50 above 1 million.
Switching
Point the open-source MapLibre GL JS library at a style URL and the map is on your page. Already on Mapbox GL? The API is the same, so it is a one-line change.
<!-- MapLibre GL JS, no access token needed --> <script src="https://unpkg.com/maplibre-gl@4.7.1/dist/maplibre-gl.js"></script> <div id="map" style="height: 400px"></div> <script> new maplibregl.Map({ container: 'map', style: 'https://tiles.expressmaps.com/styles/standard.json?key=YOUR_KEY', center: [-0.1276, 51.5072], zoom: 12 }); </script>
Used by teams at





