Stadia bills credits: one per vector or raster tile, four per satellite tile, twenty per static map. To compare with map loads we assume 15 tiles per view, a typical first screen plus a little panning. List prices, November 2026.
| Monthly volume | Stadia Maps | ExpressMaps |
|---|---|---|
| Free tier | 200,000 credits, non-commercial use only, no overage | 100,000 loads, commercial use allowed |
| 100,000 views (1.5M credits) | $35 (Starter $20 plus overage) | Free |
| 250,000 views (3.75M credits) | $80 (Standard) | $29 |
| 1,000,000 views (15M credits) | $230 (Standard plus overage) | $99 |
| 5,000,000 views (75M credits) | $1,000 (Professional plus overage) | $399 |
Stadia plans: Starter $20 for 1M credits then $0.03 per 1,000; Standard $80 for 7.5M then $0.02; Professional $250 for 25M then $0.015. Halve or double the Stadia figures if your maps load 8 or 30 tiles per view. ExpressMaps plans: Free 100,000 loads; Essential $29 for 250,000; Business $99 for 1,000,000; Enterprise $399 for 5,000,000, then $0.05 per 1,000. One map load is one map initialisation; tiles, panning and zooming are not metered. Prices checked 12 November 2026 and may have changed; see the cost calculator for your own numbers.
Per-tile billing means cost depends on viewport size, screen density and how much people interact. A full-screen map on a retina display can fetch 30 tiles on first paint, and every zoom level fetches more. Stadia is inexpensive per tile, so this works out well for small, static maps and less well for exploratory ones.
ExpressMaps counts one load when the map initialises and nothing after that. The plan tiers are wide enough that most sites sit in one tier all year, and the free tier covers commercial sites.
If you need raster tiles or the Stamen designs, Stadia is the better fit. If you need a vector base map with flat pricing and commercial use on the free tier, ExpressMaps is.
For MapLibre users it is a URL change. Leaflet users switch from a raster tile layer to the MapLibre GL Leaflet plugin:
<!-- before (Leaflet raster) -->
L.tileLayer('https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png?api_key=KEY').addTo(map);
<!-- after (Leaflet with vector tiles) -->
<script src="https://unpkg.com/maplibre-gl@4.7.1/dist/maplibre-gl.js"></script>
<script src="https://unpkg.com/@maplibre/maplibre-gl-leaflet@0.0.22/leaflet-maplibre-gl.js"></script>
L.maplibreGL({ style: 'https://tiles.expressmaps.com/styles/subtle.json?key=YOUR_API_KEY' }).addTo(map);
The embed generator writes this for any of our ten styles, and the docs cover Leaflet, OpenLayers and React.
No, vector only. In Leaflet the MapLibre GL plugin renders them; in OpenLayers, ol-mapbox-style does. Both are a few lines of code.
Yes. The 100,000 free loads a month carry no non-commercial restriction.
Subtle for the muted look, Basic for a plain base, and Darklands for Alidade Smooth Dark.