[{"data":1,"prerenderedAt":599},["ShallowReactive",2],{"footer-learn-links":3,"site-prefooter-cta":16,"learn-\u002Flearn\u002Fwhat-is-a-basemap\u002F":24,"related-learn-\u002Flearn\u002Fwhat-is-a-basemap\u002F":571,"learn-org-author":587},[4,7,10,13],{"title":5,"path":6},"What Is a Basemap?","\u002Flearn\u002Fwhat-is-a-basemap",{"title":8,"path":9},"What Is a Navigation SDK?","\u002Flearn\u002Fwhat-is-a-navigation-sdk",{"title":11,"path":12},"What Is a Distance Matrix API?","\u002Flearn\u002Fdistance-matrix-api",{"title":14,"path":15},"Can You Store Geocoding Results?","\u002Flearn\u002Fgeocoding-data-storage",{"id":17,"extension":18,"heading":19,"meta":20,"stem":21,"text":22,"__hash__":23},"site\u002Fsite\u002Fprefooter-cta.yml","yml","Business Outcomes That Fuel Your Growth",{},"site\u002Fprefooter-cta","With Stadia Maps, you build the solutions that matter. Logistics platforms provide accurate ETAs, fleet management apps reduce fuel costs, and emergency dispatch systems improve response times.","XztWiZDFyAC0XCoeYLLQrcyaVmP8uvGWALRS354c9I4",{"id":25,"title":5,"author":26,"body":27,"category":554,"description":555,"extension":556,"head":557,"image":559,"imageAlt":560,"keywords":561,"meta":562,"modified":563,"navigation":564,"path":6,"published":563,"rawbody":565,"schemaOrg":561,"seo":566,"stem":567,"term":568,"termDescription":569,"__hash__":570},"learn\u002Flearn\u002Fwhat-is-a-basemap.md","Stadia Maps Team",{"type":28,"value":29,"toc":536},"minimark",[30,34,39,72,76,96,104,107,111,114,125,136,168,171,183,187,193,199,205,211,217,223,229,235,241,247,251,259,291,294,298,304,311,314,355,358,365,369,372,415,419,457,461,465,470,490,494],[31,32,33],"p",{},"A basemap is the map that sits underneath your own data. It supplies the geographic context, including coastlines and water, land cover, roads and paths, administrative boundaries, and place labels. Your markers, routes, and polygons go on top of it. The Stadia Maps basemap styles are built mostly from OpenStreetMap data, with licensed satellite imagery where imagery is the base, and are served as vector tiles, raster tiles, or both. Most of them are tuned around the same constraint: keeping the map readable once your data is added on top.",[35,36,38],"h2",{"id":37},"key-takeaways","Key Takeaways",[40,41,42,46,49,58,69],"ul",{},[43,44,45],"li",{},"A basemap provides geographic context. Markers, routes, heat maps, and choropleths are the overlay you add on top of it.",[43,47,48],{},"A basemap is two things: tile data, and a style document that describes how to draw it. With vector tiles, the style is applied on the client and can be changed.",[43,50,51,52,57],{},"Stadia Maps basemap styles differ mainly in how much visual weight they give the map itself. Our ",[53,54,56],"a",{"href":55},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fthemes\u002F","style library"," describes Alidade Smooth as using \"a muted color scheme and fewer points of interest to allow your added data to shine,\" while recommending OSM Bright where you \"have minimal overlays or other data that might clash with the styling.\"",[43,59,60,61,68],{},"Stadia Maps vector tiles follow the ",[53,62,67],{"href":63,"rel":64,"target":66},"https:\u002F\u002Fopenmaptiles.org\u002Fschema\u002F",[65],"external","_blank","OpenMapTiles schema"," and cover zoom 0 through 14, with over-zooming past that. Raster tiles go to zoom 20 for most styles.",[43,70,71],{},"Choosing a basemap is mostly a question about your overlay, not about the map.",[35,73,75],{"id":74},"what-goes-in-the-basemap-and-what-goes-on-top","What Goes in the Basemap, and What Goes on Top",[31,77,78,79,83,84,87,88,91,92,95],{},"The basemap supplies the ground. In the OpenMapTiles schema that Stadia Maps vector tiles follow, that means layers such as ",[80,81,82],"code",{},"water"," and ",[80,85,86],{},"water_name",", ",[80,89,90],{},"landcover"," for physical surface material, ",[80,93,94],{},"landuse"," for human purpose, roads and paths, boundaries, and place labels. Every user of your application sees the same basemap.",[31,97,98,99,103],{},"The overlay is yours. Our ",[53,100,102],{"href":101},"\u002Fproducts\u002Fmaps\u002F","Maps product page"," lists choropleth maps, heat maps, and custom data overlays among what customers build on top, alongside markers, route lines, and polygons.",[31,105,106],{},"This split explains a common mix-up. Teams looking for a basemap sometimes describe what they want as satellite photographs, and teams looking for imagery sometimes ask for a basemap. Alidade Satellite is a map style that uses satellite imagery as its base and layers labels and feature outlines on top. It is not an imagery product, and it is not a data source for the things you plot.",[35,108,110],{"id":109},"what-is-a-basemap-made-of","What Is a Basemap Made Of?",[31,112,113],{},"Two pieces: the tile data, and the rules for drawing it.",[31,115,116,120,121,124],{},[117,118,119],"strong",{},"The data"," comes from OpenStreetMap for most features, with licensed Airbus satellite imagery where imagery is the base. Stadia Maps serves vector tiles in Mapbox Vector Tile (MVT) format with a schema compatible with OpenMapTiles, at ",[80,122,123],{},"https:\u002F\u002Ftiles.stadiamaps.com\u002Fdata\u002Fopenmaptiles.json",". Vector coverage runs from zoom 0 to zoom 14, and renderers over-zoom from the z14 tile beyond that.",[31,126,127,130,131,135],{},[117,128,129],{},"The rules"," are a style document. For vector tiles that is a MapLibre GL JSON style, and the ",[53,132,134],{"href":133},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fcustom-styles\u002F","Custom Map Styling docs"," publish a minimal skeleton with four top-level keys:",[40,137,138,144,153,162],{},[43,139,140,143],{},[80,141,142],{},"sources",", pointing at the vector tile source",[43,145,146,149,150],{},[80,147,148],{},"sprite",", the icon set, such as ",[80,151,152],{},"https:\u002F\u002Ftiles.stadiamaps.com\u002Fstyles\u002Falidade-smooth\u002Fsprite",[43,154,155,158,159],{},[80,156,157],{},"glyphs",", the font glyphs, at ",[80,160,161],{},"https:\u002F\u002Ftiles.stadiamaps.com\u002Ffonts\u002F{fontstack}\u002F{range}.pbf",[43,163,164,167],{},[80,165,166],{},"layers",", the list of drawing rules",[31,169,170],{},"The same tiles plus a different style document produce a muted map, a dark map, or a high-contrast black-and-white map. Nothing in the tile data changes.",[31,172,173,174,177,178,182],{},"Raster tiles work differently. The style has already been applied by the time the tile reaches you, so a raster basemap is an image. Stadia Maps serves raster tiles at ",[80,175,176],{},"https:\u002F\u002Ftiles.stadiamaps.com\u002Ftiles\u002F\u003Cstyle>\u002F{z}\u002F{x}\u002F{y}{r}.png",", up to zoom 20 for most styles. ",[53,179,181],{"href":180},"\u002Flearn\u002Fvector-versus-raster-map-tiles\u002F","Vector vs. Raster Map Tiles"," covers the trade-off between the two formats in full.",[35,184,186],{"id":185},"why-do-basemap-styles-look-so-different","Why Do Basemap Styles Look So Different?",[31,188,189,190,192],{},"Because they are built for different amounts of overlay. Our ",[53,191,56],{"href":55}," says so style by style.",[31,194,195,198],{},[117,196,197],{},"Alidade Smooth"," is \"designed for maps that use a lot of markers or overlays,\" with \"a muted color scheme and fewer points of interest to allow your added data to shine.\" If you are plotting several hundred markers, every colored area underneath competes with them.",[31,200,201,204],{},[117,202,203],{},"Alidade Smooth Dark"," is the same idea with the color scheme inverted. The docs describe it as designed \"to stay out of the way,\" flipping \"the dark mode switch on the color scheme.\"",[31,206,207,210],{},[117,208,209],{},"Alidade Bright"," is the full-color member of the family. Water, woodland, farmland, and parks each render in their own color over a warm background, and highway shields appear from zoom 7. It labels only four categories of point of interest: parks, hospitals, universities, and cemeteries. The docs tie that restraint directly to the overlay: it \"keeps dense areas readable once you add your own data on top.\"",[31,212,213,216],{},[117,214,215],{},"Alidade Satellite"," uses satellite imagery as the base and layers labels and outlines of major features on top, which the docs describe as \"a solid contextual backdrop for your data.\"",[31,218,219,222],{},[117,220,221],{},"Stamen Toner"," takes the idea furthest. The docs call these \"high-contrast B+W (black and white) maps\" that are \"the perfect backdrop for your colorful and eye-catching overlays.\" With no color in the basemap, every color on the screen belongs to your data. Variations include Toner Lite, Toner Dark, and Toner Blacklite.",[31,224,225,228],{},[117,226,227],{},"Stamen Terrain"," goes the other direction, \"featuring hill shading and natural vegetation colors\" to help users orient themselves.",[31,230,231,234],{},[117,232,233],{},"Stamen Watercolor"," applies \"raster effect area washes and organic edges over a paper texture.\" The docs describe its purpose as adding \"warm pop to any map.\"",[31,236,237,240],{},[117,238,239],{},"Outdoors"," is based on OSM Bright and \"highlights useful outdoor features such as ski slopes, mountains, parks, and paths.\" Here the map's own content is a large part of what the user came for.",[31,242,243,246],{},[117,244,245],{},"OSM Bright"," states the condition under which the backdrop principle stops applying. The docs recommend it \"where you are focused on providing directions, have minimal overlays or other data that might clash with the styling, or want a lot of POIs visible.\"",[35,248,250],{"id":249},"how-do-you-choose-a-basemap","How Do You Choose a Basemap?",[31,252,253,254,258],{},"Our ",[53,255,257],{"href":256},"\u002Fproducts\u002Fmaps\u002Fmap-styles\u002F","Map Styles page"," frames the goal as finding \"the best combination of detail and design for your integration.\" In practice, start with the overlay.",[40,260,261,267,273,279,285],{},[43,262,263,266],{},[117,264,265],{},"Dense overlay."," Hundreds of markers, a heat map, or a choropleth covering most of the viewport. Alidade Smooth, Alidade Smooth Dark, and Stamen Toner are the styles the docs describe as built for this.",[43,268,269,272],{},[117,270,271],{},"Sparse overlay."," A handful of markers, or a single route line. Alidade Bright or Alidade Satellite can carry more detail without competing.",[43,274,275,278],{},[117,276,277],{},"No overlay, or the map is the content."," OSM Bright for directions and dense POIs, Outdoors for trails and terrain, Stamen Terrain for topography.",[43,280,281,284],{},[117,282,283],{},"Dark mode."," Alidade Smooth Dark, Toner Dark, and Toner Blacklite. With vector tiles you can switch at runtime rather than shipping a second map.",[43,286,287,290],{},[117,288,289],{},"Real-world appearance matters."," Alidade Satellite, where the user needs to see what a place actually looks like rather than an abstraction of it.",[31,292,293],{},"Two practical constraints narrow the list further. If you are on raster tiles and need a custom look, you cannot restyle on the client. And if you need zoom past 16, Stamen Watercolor is not an option, since raster tiles for that style stop there.",[35,295,297],{"id":296},"can-you-customize-a-basemap","Can You Customize a Basemap?",[31,299,300,301,303],{},"With vector tiles, yes, and the ",[53,302,134],{"href":133}," describe what that covers: you can \"change the color scheme of an existing style, change the language of place labels, and more,\" including dynamically while the map is running.",[31,305,306,307,310],{},"We recommend ",[53,308,309],{"href":133},"Maputnik",", an open-source style editor, for modifying an existing Stadia Maps style. Open it, enter the JSON URL for one of the styles, edit, then export. If you access tiles by API key rather than domain-based auth, enter the key in the export dialog and Maputnik will add it to the exported style for you.",[31,312,313],{},"Customization goes deeper than color if you need it to:",[40,315,316,329,339,345],{},[43,317,318,321,322,325,326,328],{},[117,319,320],{},"Sprites."," Generate your own icon set with ",[53,323,324],{"href":133},"Spreet"," and host it, then point the ",[80,327,148],{}," key at it without a file extension.",[43,330,331,334,335,338],{},[117,332,333],{},"Fonts."," Stadia Maps rolls its default fonts into a super-font stack (Stadia Regular, Italic, Bold, and Semibold) so styles are easier to edit. You can mix and match from the full font list, or generate your own SDF glyphs with the open-source ",[80,336,337],{},"build_pbf_glyphs"," CLI or MapLibre FontMaker.",[43,340,341,344],{},[117,342,343],{},"Starting from scratch."," The docs publish a skeleton style JSON pre-filled with the source, sprite, and glyph URLs.",[43,346,347,350,351,354],{},[117,348,349],{},"EU endpoints."," If you need to serve from EU servers for regulatory reasons, change the host to ",[80,352,353],{},"tiles-eu.stadiamaps.com",".",[31,356,357],{},"Once the style is finished, you host it yourself, either on your own server or CDN or bundled with your application, and load it instead of a Stadia Maps style URL.",[31,359,360,361,364],{},"Raster is the exception. Custom raster styles require a quote from Stadia Maps. The docs point Leaflet users toward the ",[80,362,363],{},"maplibre-gl-leaflet"," plugin instead, which renders vector tiles with a custom style inside an existing Leaflet application.",[35,366,368],{"id":367},"where-the-basemap-and-overlay-split-falls-short","Where the Basemap and Overlay Split Falls Short",[31,370,371],{},"The split is a useful default rather than a rule, and a few things complicate it.",[40,373,374,380,386,392,403,409],{},[43,375,376,379],{},[117,377,378],{},"Not every style is a backdrop."," OSM Bright, Outdoors, and Stamen Terrain are built to be looked at. Treating every basemap as something that should recede leads you to the wrong style for a trail app or a directions app.",[43,381,382,385],{},[117,383,384],{},"Some of your data may already be in the basemap."," If you are plotting hospitals or universities, Alidade Bright already labels those categories. Plotting your own on top can produce duplicate labels.",[43,387,388,391],{},[117,389,390],{},"Raster locks in the styling."," The docs are explicit that with raster tiles you cannot hide a layer or change the label language on the client. That decision gets made when you choose a format, not when you choose a style.",[43,393,394,397,398,402],{},[117,395,396],{},"Style modification permissions vary."," The docs say you are \"generally free to modify Stadia Maps Styles for your own applications,\" and point to the ",[53,399,401],{"href":400},"\u002Fattribution\u002F","attribution page"," for the per-style details.",[43,404,405,408],{},[117,406,407],{},"Satellite is a separate case."," The imagery-only layer, for teams building a custom style over imagery, uses 512x512 tiles rather than 256x256, which shifts its zoom levels by one compared with a standard raster layer.",[43,410,411,414],{},[117,412,413],{},"A custom style is yours to maintain."," Hosting, fonts, and sprites all become your responsibility once you export from Maputnik.",[35,416,418],{"id":417},"common-basemap-use-cases","Common Basemap Use Cases",[40,420,421,427,433,439,445,451],{},[43,422,423,426],{},[117,424,425],{},"Data visualization."," A muted basemap under a heat map or choropleth, which is what Alidade Smooth and Stamen Toner are built for.",[43,428,429,432],{},[117,430,431],{},"Asset and fleet tracking."," Many markers in motion over a basemap that stays still and quiet.",[43,434,435,438],{},[117,436,437],{},"Directions and local search."," OSM Bright, where the docs recommend a lot of visible POIs and minimal overlay.",[43,440,441,444],{},[117,442,443],{},"Outdoor and recreation apps."," Outdoors for ski slopes, mountains, parks, and paths, or Stamen Terrain for hill shading.",[43,446,447,450],{},[117,448,449],{},"Property, logistics, and field operations."," Alidade Satellite, where the real appearance of a site carries information a styled vector map abstracts away.",[43,452,453,456],{},[117,454,455],{},"WordPress and CMS integrations."," Raster tiles through the Leaflet Map plugin, where the simplest integration path matters more than client-side styling, or a vector style through the Mapster WP Maps plugin.",[458,459],"faq-section",{":faqs":460},"[{\"question\":\"What is a basemap?\",\"answer\":\"A basemap is the map that sits underneath your own data, providing geographic context such as coastlines, water, roads, land cover, and place labels. Your markers, routes, and overlays go on top of it. The basemap is the same for every user of your application; the overlay is what makes the map yours. Stadia Maps basemap styles are built mostly from OpenStreetMap data, with licensed satellite imagery where imagery is the base.\"},{\"question\":\"What is the difference between a basemap and a map layer?\",\"answer\":\"A basemap is the bottom layer, the geographic context everything else sits on. A map layer is any one set of features drawn on the map, and a basemap is made of many of them. In the OpenMapTiles schema that Stadia Maps vector tiles follow, landcover, landuse, water, water_name, roads, and labels are separate layers inside the basemap.\"},{\"question\":\"Why do basemap styles look so different from each other?\",\"answer\":\"Because they are built for different amounts of overlay. The Stadia Maps style library describes Alidade Smooth as using a muted color scheme and fewer points of interest to allow your added data to shine, and Stamen Toner as high-contrast black and white maps that make a backdrop for colorful overlays. OSM Bright goes the other way: the documentation recommends it where you have minimal overlays and want a lot of POIs visible.\"},{\"question\":\"How do I choose a basemap?\",\"answer\":\"Start with your overlay. A dense overlay needs a muted basemap that stays out of the way, which is what Alidade Smooth, Alidade Smooth Dark, and Stamen Toner are built for. A sparse overlay leaves room for Alidade Bright or Alidade Satellite to carry more detail. If the map itself is the content, OSM Bright suits directions and dense POIs, Outdoors suits trails and terrain, and Stamen Terrain adds hill shading.\"},{\"question\":\"Can I customize a basemap?\",\"answer\":\"With vector tiles, yes. Styling happens on the client, so you can change the color scheme, change the language of place labels, and restyle the map at runtime. The Stadia Maps documentation recommends Maputnik, an open-source editor, for modifying an existing style, and publishes a skeleton style JSON for building one from scratch. Raster tiles are rendered before they reach you, so you consume them as provided; custom raster styles require a quote.\"},{\"question\":\"What is a basemap made of?\",\"answer\":\"Tile data and a style document. Stadia Maps vector tiles are served in Mapbox Vector Tile format with an OpenMapTiles-compatible schema, covering zoom 0 through 14 with over-zooming past that. The style is a MapLibre GL JSON document with top-level keys for sources, sprite, glyphs, and layers. The same tiles with a different style document produce a muted map, a dark map, or a high-contrast one.\"},{\"question\":\"Is satellite imagery a basemap?\",\"answer\":\"It can be the base of one. Alidade Satellite uses satellite imagery as its base and layers labels and outlines of major features on top, which makes it a map style rather than an imagery product. You serve it in your own maps the same way you would any other basemap. If you are building a custom style over imagery, note that the imagery-only layer uses 512x512 tiles, so its zoom levels are off by one compared with a standard raster layer.\"}]",[35,462,464],{"id":463},"where-to-go-next","Where to Go Next",[466,467,469],"h3",{"id":468},"from-the-blog","From the Blog",[40,471,472,478,484],{},[43,473,474],{},[53,475,477],{"href":476},"\u002Fblog\u002Fwater-labels-reworked-cleaner-names-smarter-placement\u002F","Water Labels Reworked: Cleaner Names, Smarter Placement, and Straits at Last",[43,479,480],{},[53,481,483],{"href":482},"\u002Fblog\u002Fredesigned-land-cover-layers\u002F","Redesigned Land Cover Layers at Low Zoom",[43,485,486],{},[53,487,489],{"href":488},"\u002Fblog\u002F2026-satellite-imagery-update\u002F","2026 Satellite Imagery Update",[466,491,493],{"id":492},"more-resources","More Resources",[40,495,496,501,508,514,520,525,530],{},[43,497,498,500],{},[53,499,181],{"href":180}," for how basemap tiles are delivered",[43,502,503,507],{},[53,504,506],{"href":505},"\u002Flearn\u002Fsatellite-imagery-resolution\u002F","What Is Satellite Imagery Resolution?"," for what imagery-based basemaps can resolve",[43,509,510,513],{},[53,511,512],{"href":256},"Map Styles"," for the style gallery and what each one is built for",[43,515,516,519],{},[53,517,518],{"href":55},"Map Style Library docs"," for per-style setup and example code",[43,521,522,524],{},[53,523,134],{"href":133}," for changing a style, sprites, and fonts",[43,526,527,529],{},[53,528,102],{"href":101}," for the full lineup and pricing",[43,531,532,535],{},[53,533,534],{"href":400},"Attribution"," for style modification and credit requirements",{"title":537,"searchDepth":538,"depth":538,"links":539},"",4,[540,542,543,544,545,546,547,548,549],{"id":37,"depth":541,"text":38},2,{"id":74,"depth":541,"text":75},{"id":109,"depth":541,"text":110},{"id":185,"depth":541,"text":186},{"id":249,"depth":541,"text":250},{"id":296,"depth":541,"text":297},{"id":367,"depth":541,"text":368},{"id":417,"depth":541,"text":418},{"id":463,"depth":541,"text":464,"children":550},[551,553],{"id":468,"depth":552,"text":469},3,{"id":492,"depth":552,"text":493},"Maps","A basemap is the map underneath your data, providing geographic context such as roads, water, land cover, and labels.","md",{"script":558},[],"\u002Fimages\u002Fog\u002Fwhat-is-a-basemap.png","What Is a Basemap? - Stadia Maps",null,{},"2026-11-10",true,"---\ntitle: What Is a Basemap?\ndescription: A basemap is the map underneath your data, providing geographic context such as roads, water, land cover, and labels.\nauthor: Stadia Maps Team\ncategory: Maps\nhead:\n  script: []\nimage: \u002Fimages\u002Fog\u002Fwhat-is-a-basemap.png\nimageAlt: What Is a Basemap? - Stadia Maps\nmodified: 2026-11-10\npublished: 2026-11-10\nterm: Basemap\ntermDescription: The map that sits underneath your own data, providing geographic context such as roads, water, land cover, and place labels.\n---\n\nA basemap is the map that sits underneath your own data. It supplies the geographic context, including coastlines and water, land cover, roads and paths, administrative boundaries, and place labels. Your markers, routes, and polygons go on top of it. The Stadia Maps basemap styles are built mostly from OpenStreetMap data, with licensed satellite imagery where imagery is the base, and are served as vector tiles, raster tiles, or both. Most of them are tuned around the same constraint: keeping the map readable once your data is added on top.\n\n## Key Takeaways\n\n- A basemap provides geographic context. Markers, routes, heat maps, and choropleths are the overlay you add on top of it.\n- A basemap is two things: tile data, and a style document that describes how to draw it. With vector tiles, the style is applied on the client and can be changed.\n- Stadia Maps basemap styles differ mainly in how much visual weight they give the map itself. Our [style library](https:\u002F\u002Fdocs.stadiamaps.com\u002Fthemes\u002F) describes Alidade Smooth as using \"a muted color scheme and fewer points of interest to allow your added data to shine,\" while recommending OSM Bright where you \"have minimal overlays or other data that might clash with the styling.\"\n- Stadia Maps vector tiles follow the [OpenMapTiles schema](https:\u002F\u002Fopenmaptiles.org\u002Fschema\u002F) and cover zoom 0 through 14, with over-zooming past that. Raster tiles go to zoom 20 for most styles.\n- Choosing a basemap is mostly a question about your overlay, not about the map.\n\n## What Goes in the Basemap, and What Goes on Top\n\nThe basemap supplies the ground. In the OpenMapTiles schema that Stadia Maps vector tiles follow, that means layers such as `water` and `water_name`, `landcover` for physical surface material, `landuse` for human purpose, roads and paths, boundaries, and place labels. Every user of your application sees the same basemap.\n\nThe overlay is yours. Our [Maps product page](\u002Fproducts\u002Fmaps\u002F) lists choropleth maps, heat maps, and custom data overlays among what customers build on top, alongside markers, route lines, and polygons.\n\nThis split explains a common mix-up. Teams looking for a basemap sometimes describe what they want as satellite photographs, and teams looking for imagery sometimes ask for a basemap. Alidade Satellite is a map style that uses satellite imagery as its base and layers labels and feature outlines on top. It is not an imagery product, and it is not a data source for the things you plot.\n\n## What Is a Basemap Made Of?\n\nTwo pieces: the tile data, and the rules for drawing it.\n\n**The data** comes from OpenStreetMap for most features, with licensed Airbus satellite imagery where imagery is the base. Stadia Maps serves vector tiles in Mapbox Vector Tile (MVT) format with a schema compatible with OpenMapTiles, at `https:\u002F\u002Ftiles.stadiamaps.com\u002Fdata\u002Fopenmaptiles.json`. Vector coverage runs from zoom 0 to zoom 14, and renderers over-zoom from the z14 tile beyond that.\n\n**The rules** are a style document. For vector tiles that is a MapLibre GL JSON style, and the [Custom Map Styling docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fcustom-styles\u002F) publish a minimal skeleton with four top-level keys:\n\n- `sources`, pointing at the vector tile source\n- `sprite`, the icon set, such as `https:\u002F\u002Ftiles.stadiamaps.com\u002Fstyles\u002Falidade-smooth\u002Fsprite`\n- `glyphs`, the font glyphs, at `https:\u002F\u002Ftiles.stadiamaps.com\u002Ffonts\u002F{fontstack}\u002F{range}.pbf`\n- `layers`, the list of drawing rules\n\nThe same tiles plus a different style document produce a muted map, a dark map, or a high-contrast black-and-white map. Nothing in the tile data changes.\n\nRaster tiles work differently. The style has already been applied by the time the tile reaches you, so a raster basemap is an image. Stadia Maps serves raster tiles at `https:\u002F\u002Ftiles.stadiamaps.com\u002Ftiles\u002F\u003Cstyle>\u002F{z}\u002F{x}\u002F{y}{r}.png`, up to zoom 20 for most styles. [Vector vs. Raster Map Tiles](\u002Flearn\u002Fvector-versus-raster-map-tiles\u002F) covers the trade-off between the two formats in full.\n\n## Why Do Basemap Styles Look So Different?\n\nBecause they are built for different amounts of overlay. Our [style library](https:\u002F\u002Fdocs.stadiamaps.com\u002Fthemes\u002F) says so style by style.\n\n**Alidade Smooth** is \"designed for maps that use a lot of markers or overlays,\" with \"a muted color scheme and fewer points of interest to allow your added data to shine.\" If you are plotting several hundred markers, every colored area underneath competes with them.\n\n**Alidade Smooth Dark** is the same idea with the color scheme inverted. The docs describe it as designed \"to stay out of the way,\" flipping \"the dark mode switch on the color scheme.\"\n\n**Alidade Bright** is the full-color member of the family. Water, woodland, farmland, and parks each render in their own color over a warm background, and highway shields appear from zoom 7. It labels only four categories of point of interest: parks, hospitals, universities, and cemeteries. The docs tie that restraint directly to the overlay: it \"keeps dense areas readable once you add your own data on top.\"\n\n**Alidade Satellite** uses satellite imagery as the base and layers labels and outlines of major features on top, which the docs describe as \"a solid contextual backdrop for your data.\"\n\n**Stamen Toner** takes the idea furthest. The docs call these \"high-contrast B+W (black and white) maps\" that are \"the perfect backdrop for your colorful and eye-catching overlays.\" With no color in the basemap, every color on the screen belongs to your data. Variations include Toner Lite, Toner Dark, and Toner Blacklite.\n\n**Stamen Terrain** goes the other direction, \"featuring hill shading and natural vegetation colors\" to help users orient themselves.\n\n**Stamen Watercolor** applies \"raster effect area washes and organic edges over a paper texture.\" The docs describe its purpose as adding \"warm pop to any map.\"\n\n**Outdoors** is based on OSM Bright and \"highlights useful outdoor features such as ski slopes, mountains, parks, and paths.\" Here the map's own content is a large part of what the user came for.\n\n**OSM Bright** states the condition under which the backdrop principle stops applying. The docs recommend it \"where you are focused on providing directions, have minimal overlays or other data that might clash with the styling, or want a lot of POIs visible.\"\n\n## How Do You Choose a Basemap?\n\nOur [Map Styles page](\u002Fproducts\u002Fmaps\u002Fmap-styles\u002F) frames the goal as finding \"the best combination of detail and design for your integration.\" In practice, start with the overlay.\n\n- **Dense overlay.** Hundreds of markers, a heat map, or a choropleth covering most of the viewport. Alidade Smooth, Alidade Smooth Dark, and Stamen Toner are the styles the docs describe as built for this.\n- **Sparse overlay.** A handful of markers, or a single route line. Alidade Bright or Alidade Satellite can carry more detail without competing.\n- **No overlay, or the map is the content.** OSM Bright for directions and dense POIs, Outdoors for trails and terrain, Stamen Terrain for topography.\n- **Dark mode.** Alidade Smooth Dark, Toner Dark, and Toner Blacklite. With vector tiles you can switch at runtime rather than shipping a second map.\n- **Real-world appearance matters.** Alidade Satellite, where the user needs to see what a place actually looks like rather than an abstraction of it.\n\nTwo practical constraints narrow the list further. If you are on raster tiles and need a custom look, you cannot restyle on the client. And if you need zoom past 16, Stamen Watercolor is not an option, since raster tiles for that style stop there.\n\n## Can You Customize a Basemap?\n\nWith vector tiles, yes, and the [Custom Map Styling docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fcustom-styles\u002F) describe what that covers: you can \"change the color scheme of an existing style, change the language of place labels, and more,\" including dynamically while the map is running.\n\nWe recommend [Maputnik](https:\u002F\u002Fdocs.stadiamaps.com\u002Fcustom-styles\u002F), an open-source style editor, for modifying an existing Stadia Maps style. Open it, enter the JSON URL for one of the styles, edit, then export. If you access tiles by API key rather than domain-based auth, enter the key in the export dialog and Maputnik will add it to the exported style for you.\n\nCustomization goes deeper than color if you need it to:\n\n- **Sprites.** Generate your own icon set with [Spreet](https:\u002F\u002Fdocs.stadiamaps.com\u002Fcustom-styles\u002F) and host it, then point the `sprite` key at it without a file extension.\n- **Fonts.** Stadia Maps rolls its default fonts into a super-font stack (Stadia Regular, Italic, Bold, and Semibold) so styles are easier to edit. You can mix and match from the full font list, or generate your own SDF glyphs with the open-source `build_pbf_glyphs` CLI or MapLibre FontMaker.\n- **Starting from scratch.** The docs publish a skeleton style JSON pre-filled with the source, sprite, and glyph URLs.\n- **EU endpoints.** If you need to serve from EU servers for regulatory reasons, change the host to `tiles-eu.stadiamaps.com`.\n\nOnce the style is finished, you host it yourself, either on your own server or CDN or bundled with your application, and load it instead of a Stadia Maps style URL.\n\nRaster is the exception. Custom raster styles require a quote from Stadia Maps. The docs point Leaflet users toward the `maplibre-gl-leaflet` plugin instead, which renders vector tiles with a custom style inside an existing Leaflet application.\n\n## Where the Basemap and Overlay Split Falls Short\n\nThe split is a useful default rather than a rule, and a few things complicate it.\n\n- **Not every style is a backdrop.** OSM Bright, Outdoors, and Stamen Terrain are built to be looked at. Treating every basemap as something that should recede leads you to the wrong style for a trail app or a directions app.\n- **Some of your data may already be in the basemap.** If you are plotting hospitals or universities, Alidade Bright already labels those categories. Plotting your own on top can produce duplicate labels.\n- **Raster locks in the styling.** The docs are explicit that with raster tiles you cannot hide a layer or change the label language on the client. That decision gets made when you choose a format, not when you choose a style.\n- **Style modification permissions vary.** The docs say you are \"generally free to modify Stadia Maps Styles for your own applications,\" and point to the [attribution page](\u002Fattribution\u002F) for the per-style details.\n- **Satellite is a separate case.** The imagery-only layer, for teams building a custom style over imagery, uses 512x512 tiles rather than 256x256, which shifts its zoom levels by one compared with a standard raster layer.\n- **A custom style is yours to maintain.** Hosting, fonts, and sprites all become your responsibility once you export from Maputnik.\n\n## Common Basemap Use Cases\n\n- **Data visualization.** A muted basemap under a heat map or choropleth, which is what Alidade Smooth and Stamen Toner are built for.\n- **Asset and fleet tracking.** Many markers in motion over a basemap that stays still and quiet.\n- **Directions and local search.** OSM Bright, where the docs recommend a lot of visible POIs and minimal overlay.\n- **Outdoor and recreation apps.** Outdoors for ski slopes, mountains, parks, and paths, or Stamen Terrain for hill shading.\n- **Property, logistics, and field operations.** Alidade Satellite, where the real appearance of a site carries information a styled vector map abstracts away.\n- **WordPress and CMS integrations.** Raster tiles through the Leaflet Map plugin, where the simplest integration path matters more than client-side styling, or a vector style through the Mapster WP Maps plugin.\n\n::faq-section\n---\nfaqs:\n  - question: What is a basemap?\n    answer: A basemap is the map that sits underneath your own data, providing\n      geographic context such as coastlines, water, roads, land cover, and place\n      labels. Your markers, routes, and overlays go on top of it. The basemap is\n      the same for every user of your application; the overlay is what makes the\n      map yours. Stadia Maps basemap styles are built mostly from OpenStreetMap\n      data, with licensed satellite imagery where imagery is the base.\n  - question: What is the difference between a basemap and a map layer?\n    answer: A basemap is the bottom layer, the geographic context everything else\n      sits on. A map layer is any one set of features drawn on the map, and a\n      basemap is made of many of them. In the OpenMapTiles schema that Stadia\n      Maps vector tiles follow, landcover, landuse, water, water_name, roads,\n      and labels are separate layers inside the basemap.\n  - question: Why do basemap styles look so different from each other?\n    answer: \"Because they are built for different amounts of overlay. The Stadia\n      Maps style library describes Alidade Smooth as using a muted color scheme\n      and fewer points of interest to allow your added data to shine, and Stamen\n      Toner as high-contrast black and white maps that make a backdrop for\n      colorful overlays. OSM Bright goes the other way: the documentation\n      recommends it where you have minimal overlays and want a lot of POIs\n      visible.\"\n  - question: How do I choose a basemap?\n    answer: Start with your overlay. A dense overlay needs a muted basemap that\n      stays out of the way, which is what Alidade Smooth, Alidade Smooth Dark,\n      and Stamen Toner are built for. A sparse overlay leaves room for Alidade\n      Bright or Alidade Satellite to carry more detail. If the map itself is the\n      content, OSM Bright suits directions and dense POIs, Outdoors suits trails\n      and terrain, and Stamen Terrain adds hill shading.\n  - question: Can I customize a basemap?\n    answer: With vector tiles, yes. Styling happens on the client, so you can change\n      the color scheme, change the language of place labels, and restyle the map\n      at runtime. The Stadia Maps documentation recommends Maputnik, an\n      open-source editor, for modifying an existing style, and publishes a\n      skeleton style JSON for building one from scratch. Raster tiles are\n      rendered before they reach you, so you consume them as provided; custom\n      raster styles require a quote.\n  - question: What is a basemap made of?\n    answer: Tile data and a style document. Stadia Maps vector tiles are served in\n      Mapbox Vector Tile format with an OpenMapTiles-compatible schema, covering\n      zoom 0 through 14 with over-zooming past that. The style is a MapLibre GL\n      JSON document with top-level keys for sources, sprite, glyphs, and layers.\n      The same tiles with a different style document produce a muted map, a dark\n      map, or a high-contrast one.\n  - question: Is satellite imagery a basemap?\n    answer: It can be the base of one. Alidade Satellite uses satellite imagery as\n      its base and layers labels and outlines of major features on top, which\n      makes it a map style rather than an imagery product. You serve it in your\n      own maps the same way you would any other basemap. If you are building a\n      custom style over imagery, note that the imagery-only layer uses 512x512\n      tiles, so its zoom levels are off by one compared with a standard raster\n      layer.\n---\n::\n\n## Where to Go Next\n\n### From the Blog\n\n- [Water Labels Reworked: Cleaner Names, Smarter Placement, and Straits at Last](\u002Fblog\u002Fwater-labels-reworked-cleaner-names-smarter-placement\u002F)\n- [Redesigned Land Cover Layers at Low Zoom](\u002Fblog\u002Fredesigned-land-cover-layers\u002F)\n- [2026 Satellite Imagery Update](\u002Fblog\u002F2026-satellite-imagery-update\u002F)\n\n### More Resources\n\n- [Vector vs. Raster Map Tiles](\u002Flearn\u002Fvector-versus-raster-map-tiles\u002F) for how basemap tiles are delivered\n- [What Is Satellite Imagery Resolution?](\u002Flearn\u002Fsatellite-imagery-resolution\u002F) for what imagery-based basemaps can resolve\n- [Map Styles](\u002Fproducts\u002Fmaps\u002Fmap-styles\u002F) for the style gallery and what each one is built for\n- [Map Style Library docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fthemes\u002F) for per-style setup and example code\n- [Custom Map Styling docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fcustom-styles\u002F) for changing a style, sprites, and fonts\n- [Maps product page](\u002Fproducts\u002Fmaps\u002F) for the full lineup and pricing\n- [Attribution](\u002Fattribution\u002F) for style modification and credit requirements\n",{"title":5,"description":555},"learn\u002Fwhat-is-a-basemap","Basemap","The map that sits underneath your own data, providing geographic context such as roads, water, land cover, and place labels.","5dS-bnMzg8orDwRxZlCZBGUUr3K4MHnLZ8i8YH8QiTs",[572,577,582],{"title":506,"description":573,"path":574,"published":575,"category":554,"rawbody":576},"Satellite imagery resolution is the ground distance each pixel covers. Learn what 30cm means, why freshness matters, and what resolution Stadia Maps offers.","\u002Flearn\u002Fsatellite-imagery-resolution","2026-08-05","---\ntitle: What Is Satellite Imagery Resolution?\ndescription: Satellite imagery resolution is the ground distance each pixel covers. Learn what 30cm means, why freshness matters, and what resolution Stadia Maps offers.\ncategory: Maps\nimage: \u002Fimages\u002Fog\u002Fwhat-is-satellite-imagery-resolution.png\nhead:\n  script: []\npublished: 2026-08-05\nterm: Satellite Imagery Resolution\ntermDescription: The ground distance represented by a single pixel in a satellite or aerial image, expressed in centimeters or meters.\nauthor: Stadia Maps Team\n---\n\nSatellite imagery resolution is the ground distance represented by a single pixel in an image. It is usually written in centimeters or meters, so 30cm resolution means one pixel covers a 30cm by 30cm square of ground. Lower numbers mean finer detail. The [Stadia Maps Alidade Satellite](https:\u002F\u002Fstadiamaps.com\u002Fproducts\u002Fmaps\u002Fmap-styles\u002Fsatellite-imagery\u002F) basemap serves imagery at 1.5m or better everywhere, with 37 million km² at 30cm.\n\n## Key Takeaways\n\n- Resolution is the ground distance one pixel covers. 30cm resolution is sharper than 50cm, which is sharper than 1.5m.\n- At 30cm, individual vehicles, building footprints, and infrastructure become distinguishable at high zoom levels.\n- Resolution and freshness are separate dimensions. A sharp image can still be years out of date.\n- Every pixel in the Stadia Maps satellite dataset is 1.5m or better, with 37 million km² at 30cm and another 7 million km² at 50cm.\n- The area-weighted average age of the Stadia Maps satellite dataset is roughly 1.6 years, with nearly two-thirds less than a year old.\n\n## How Is Satellite Imagery Resolution Measured?\n\nResolution is expressed as ground sample distance: the real-world area covered by one pixel. A 30cm image devotes one pixel to every 30cm of ground. A 1.5m image devotes one pixel to every 1.5m.\n\nThe counterintuitive part is that lower numbers mean better imagery. 30cm is roughly 25 times more detailed per unit of area than 1.5m, because the comparison is two-dimensional. That is why coverage at each resolution tier is usually reported separately rather than as a single global average.\n\nResolution is not the only thing that determines how usable an image is. Cloud cover, color consistency across tiles, seasonal variation, and the age of the capture all affect whether imagery looks right in production.\n\n## What Can You See at 30cm Resolution?\n\nAccording to the [2026 Stadia Maps satellite imagery update](https:\u002F\u002Fstadiamaps.com\u002Fblog\u002F2026-satellite-imagery-update\u002F), 30cm resolution provides \"enough detail to distinguish individual vehicles, building footprints, and infrastructure at high zoom levels.\"\n\nThat threshold is what separates imagery that supports real analysis from imagery that is purely decorative. For urban planning tools, insurance assessments, or logistics platforms, being able to resolve a parking space or a rooftop outline changes what the product can actually do.\n\n## Why Imagery Freshness Matters as Much as Resolution\n\nA 30cm image captured four years ago may be less useful than a 1.5m image captured last spring, depending on what you are looking at. New construction, changed road layouts, and seasonal differences all show up as errors when imagery ages.\n\nStadia Maps publishes freshness numbers alongside resolution numbers:\n\n- The area-weighted average age across the dataset is roughly **1.6 years**.\n- Nearly **two-thirds** of coverage is less than a year old.\n- Only **7%** is older than three years, and that share shrinks with each refresh.\n- Per the [satellite imagery product page](https:\u002F\u002Fstadiamaps.com\u002Fproducts\u002Fmaps\u002Fmap-styles\u002Fsatellite-imagery\u002F), most cities and populated areas are no more than a year old.\n\nCloud cover is the other freshness-adjacent quality signal. Stadia Maps reports less than 5% cloud cover globally and under 2% over urban areas.\n\n## What Resolution Does Stadia Maps Offer?\n\nThe [Alidade Satellite](https:\u002F\u002Fdocs.stadiamaps.com\u002Fmap-styles\u002Falidade-satellite\u002F) basemap is built on imagery from Airbus. Current coverage, per the 2026 update:\n\n- **37 million km² at 30cm.** Includes seamless country-wide mosaics for Japan, Nigeria, Mexico, the UAE, and Eastern South Africa. \"Seamless\" means no visible tile boundaries and no abrupt shifts in color or season.\n- **7 million km² at 50cm.** Concentrated across North America, Europe, and urban hubs worldwide.\n- **1.5m or better everywhere else.** The full 1.5m dataset covering Earth's landmasses was refreshed from the latest SPOT Global layer.\n\nGlobal coverage extends to zoom 18. Raster tiles are served up to zoom 20.\n\nConsistent color across zoom levels is a deliberate design choice rather than a byproduct of the source imagery. Mixed-source mosaics often shift color or season between tiles, which is distracting when you are overlaying your own data on top.\n\n## How Does Resolution Relate to Map Zoom Levels?\n\nResolution determines the highest zoom level at which imagery still looks sharp. Zoom past the native resolution of the source imagery and the renderer is upscaling pixels rather than showing new detail.\n\nTwo practical notes from the [Alidade Satellite documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fmap-styles\u002Falidade-satellite\u002F):\n\n- The full styled basemap (imagery plus labels and feature outlines) is available as raster XYZ JPG tiles up to zoom 20.\n- The imagery-only layer, for teams building a custom style on top, goes up to zoom 18 and uses 512x512 pixel tiles rather than the standard 256x256. That means **zoom levels are off by one** compared to a standard raster layer. This trips up teams that mix the imagery layer with other 256x256 sources.\n\n## Where Satellite Imagery Resolution Falls Short\n\nResolution is a useful number, but it does not tell the whole story.\n\n- **Resolution is not uniform globally.** 30cm coverage is 37 million km², which is a fraction of Earth's landmass. Everywhere else is 50cm or 1.5m. Do not design a feature that assumes 30cm everywhere.\n- **Sharp does not mean current.** Resolution and capture date are independent. Check both before relying on imagery for anything time-sensitive.\n- **Cloud cover exists.** Under 5% globally is very good, but it is not zero. Some tiles will have clouds.\n- **Satellite imagery is not real-time.** No commercial basemap updates continuously. Imagery reflects conditions on the capture date, not today.\n- **Attribution is mandatory.** Satellite imagery carries its own attribution requirement beyond the standard basemap attribution. See the section below.\n- **Bulk downloading is prohibited.** Per the [Stadia Maps terms of service](https:\u002F\u002Fstadiamaps.com\u002Fterms-of-service\u002F), you can serve tiles in your application but not scrape the tileset.\n\n## Common Satellite Imagery Use Cases\n\nSatellite basemaps show up wherever the real-world appearance of a place carries information a vector map cannot convey.\n\n- **Outdoors and recreation.** Terrain, tree cover, trail surroundings, and water features that a styled vector map abstracts away.\n- **Logistics and field operations.** Yard layouts, loading docks, building footprints, and access roads.\n- **Tourism and travel.** Showing travelers what a destination actually looks like.\n- **Urban planning.** Assessing density, green space, parking, and land use from current imagery.\n- **Insurance and property assessment.** Roof condition, structure footprint, and site context at 30cm.\n- **Data visualization backdrops.** Consistent color across zoom levels makes satellite a workable base for overlaying your own data.\n\n## How Do You Add Satellite Imagery to a Map?\n\nThe Alidade Satellite style is available on every Stadia Maps plan and works with any renderer that supports raster tiles.\n\n```http\nGET https:\u002F\u002Ftiles.stadiamaps.com\u002Ftiles\u002Falidade_satellite\u002F{z}\u002F{x}\u002F{y}{r}.jpg\n```\n\nThe `{r}` placeholder handles HiDPI displays. Replace it with `@2x` for 2x scaled tiles, or drop it for standard tiles. A MapLibre-compatible JSON style is also available at `https:\u002F\u002Ftiles.stadiamaps.com\u002Fstyles\u002Falidade_satellite.json`, and EU-only endpoints are available at `tiles-eu.stadiamaps.com`.\n\nFull setup examples for MapLibre GL JS, Leaflet, and OpenLayers are in the [Alidade Satellite documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fmap-styles\u002Falidade-satellite\u002F).\n\n## What Attribution Does Satellite Imagery Require?\n\nSatellite imagery requires attribution beyond the standard basemap credit. Most renderers add it automatically. If yours does not, include this text:\n\n> © CNES, Distribution Airbus DS, © Airbus DS, © PlanetObserver (Contains Copernicus Data)\n\nNo hyperlink is required for the imagery attribution. Full details are in the [attribution documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fattribution\u002F).\n\n::faq-section\n---\nfaqs:\n  - question: What does 30cm satellite imagery resolution mean?\n    answer: 30cm resolution means each pixel in the image represents a 30cm by 30cm\n      square of ground. It provides enough detail to distinguish individual\n      vehicles, building footprints, and infrastructure at high zoom levels.\n      Lower numbers indicate finer detail, so 30cm is sharper than 50cm, which\n      is sharper than 1.5m.\n  - question: What resolution is Stadia Maps satellite imagery?\n    answer: Every pixel in the Stadia Maps satellite dataset is 1.5m resolution or\n      better. As of the 2026 update, 37 million square kilometers is available\n      at 30cm resolution and another 7 million square kilometers at 50cm. The\n      30cm coverage includes seamless country-wide mosaics for Japan, Nigeria,\n      Mexico, the UAE, and Eastern South Africa.\n  - question: How often is satellite imagery updated?\n    answer: Stadia Maps refreshes its Alidade Satellite imagery regularly as new\n      high-resolution data becomes available from Airbus. The area-weighted\n      average age across the dataset is roughly 1.6 years. Nearly two-thirds of\n      coverage is less than a year old, and only 7% is older than three years.\n  - question: What zoom level does satellite imagery support?\n    answer: Stadia Maps provides global satellite coverage to zoom 18. The full\n      styled Alidade Satellite basemap is served as raster tiles up to zoom 20.\n      The imagery-only layer, intended for custom styles, goes up to zoom 18 and\n      uses 512x512 pixel tiles, which means its zoom levels are off by one\n      compared to standard 256x256 raster layers.\n  - question: How much does satellite imagery cost on Stadia Maps?\n    answer: Satellite imagery tiles cost 4 credits per tile on the Stadia Maps\n      unified credit pool. Satellite imagery tiles are 512x512 pixels and cover\n      the same area as a vector tile, which is four times the area of a standard\n      raster tile. A satellite basemap such as Alidade Satellite requires both\n      imagery and vector tiles.\n  - question: Do I need to attribute satellite imagery?\n    answer: \"Yes. Satellite imagery requires additional attribution beyond the\n      standard basemap credit. Include the following text: © CNES, Distribution\n      Airbus DS, © Airbus DS, © PlanetObserver (Contains Copernicus Data). No\n      hyperlink is required. Most renderers add this automatically.\"\n---\n::\n\n## Where to Go Next\n\n### From the Blog\n\nMore on satellite imagery and basemaps from the Stadia Maps blog:\n\n- [2026 Satellite Update: 37M km² at 30cm Resolution](\u002Fblog\u002F2026-satellite-imagery-update\u002F)\n- [2025 Satellite Imagery Map Refresh](\u002Fblog\u002F2025-satellite-imagery-refresh\u002F)\n- [2024 Satellite Imagery Map Refresh](\u002Fblog\u002F2024-satellite-imagery-refresh\u002F)\n- [How We Fixed Water Feature Rendering Across All Zoom Levels in Our Basemaps](\u002Fblog\u002Ffixing-missing-water-interactive-basemaps\u002F)\n- [Announcing Cacheable Static Maps](\u002Fblog\u002Fannouncing-cacheable-static-map-images\u002F)\n\n### Maps\n\n- [Vector vs. Raster Map Tiles](\u002Flearn\u002Fvector-versus-raster-map-tiles\u002F) for the two main tile formats and when to use each\n- [Satellite Imagery product page](\u002Fproducts\u002Fmaps\u002Fmap-styles\u002Fsatellite-imagery\u002F) for coverage and quality details\n- [Alidade Satellite documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fmap-styles\u002Falidade-satellite\u002F) for tile URLs and renderer setup\n- [Raster Map Tiles docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fraster\u002F) for the full raster tile reference\n- [Map Styles library](https:\u002F\u002Fdocs.stadiamaps.com\u002Fthemes\u002F) for the complete gallery of Stadia house styles\n- [Explore the Map](\u002Fexplore-the-map\u002F) to compare styles and zoom levels interactively\n- [Attribution requirements](https:\u002F\u002Fdocs.stadiamaps.com\u002Fattribution\u002F) for imagery and basemap credit\n- [Maps product page](\u002Fproducts\u002Fmaps\u002F) and [pricing](\u002Fpricing\u002F)\n",{"title":181,"description":578,"path":579,"published":580,"category":554,"rawbody":581},"Vector and raster are the two main map tile formats. Learn how they differ, the trade-offs of each, and which one to choose for your project.","\u002Flearn\u002Fvector-versus-raster-map-tiles","2026-07-27","---\ntitle: Vector vs. Raster Map Tiles\ndescription: Vector and raster are the two main map tile formats. Learn how they differ, the trade-offs of each, and which one to choose for your project.\nauthor: Stadia Maps Team\ncategory: Maps\nhead:\n  script: []\nimage: \u002Fimages\u002Fog\u002Fwhat-is-vector-vs-raster-map-tiles.png\npublished: 2026-07-27\nmodified: 2026-09-02\nschemaOrg:\n  - \"@type\": FAQPage\n    mainEntity:\n      - \"@type\": Question\n        name: What is the difference between vector and raster map tiles?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Raster map tiles are PNG or JPG images that get stitched together in a grid. Vector map tiles contain a mathematical description of the geometry plus structured data about each feature on the map, and get rendered client-side. Vector tiles allow dynamic styling, look sharp at any resolution, and typically reduce tile requests by around 60%. Raster tiles are simpler to render and battle-tested across older devices and rendering libraries.\n      - \"@type\": Question\n        name: Which is better, vector or raster map tiles?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: According to the Stadia Maps Switching to Vector Tiles guide, vector tiles offer greater flexibility, look great on any screen, and typically reduce costs by around 60%. However, if your application is targeting older devices or does not need a high level of detail, raster tiles are not necessarily a bad option.\n      - \"@type\": Question\n        name: Do vector map tiles cost less than raster map tiles?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: On the Stadia Maps API, both vector and raster tile requests are billed the same way, but vector tiles typically require fewer total requests to render a comparable map. The Switching to Vector Tiles guide reports users switching to vector make approximately 60% fewer tile requests on average.\n      - \"@type\": Question\n        name: What format are Stadia Maps vector tiles served in?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Stadia Maps vector tiles are distributed in the widely-adopted Mapbox Vector Tile (MVT) format, with a schema compatible with OpenMapTiles. They render in MapLibre GL JS, MapLibre Native, Leaflet (via maplibre-gl-leaflet), OpenLayers (via ol-mapbox-style), and other MVT-compatible renderers.\n      - \"@type\": Question\n        name: Can I use vector tiles with Leaflet?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Yes. Leaflet can render Stadia Maps vector tiles via the maplibre-gl-leaflet plugin. You swap L.tileLayer for L.maplibreGL and point at a Stadia Maps vector style URL. This is the quickest migration path from raster Leaflet to vector without switching frameworks.\nterm: Map Tile\ntermDescription: A single image or data file, one of many that get stitched together to form a complete interactive map. Comes in two main formats, raster and vector.\n---\n\nVector and raster are the two main formats used to serve interactive map tiles. Raster tiles are PNG or JPG images stitched into a grid. Vector tiles contain a mathematical description of geometry plus structured data about each feature, rendered on the client. The [Stadia Maps Map Tiles API](\u002Fproducts\u002Fmaps\u002Finteractive-maps\u002F) serves both formats, so this comparison is not a pitch for one over the other. It's an honest walkthrough of the trade-offs.\n\n## Key Takeaways\n\n- Raster tiles are PNG or JPG images. Vector tiles are structured data, rendered client-side.\n- Vector tiles allow dynamic styling (colors, language, layer visibility, 3D perspective). Raster tiles do not.\n- According to Stadia Maps' [Switching to Vector Tiles guide](https:\u002F\u002Fdocs.stadiamaps.com\u002Fguides\u002Fswitching-your-maps-from-raster-to-vector-tiles\u002F), users switching to vector make approximately 60% fewer tile requests on average.\n- Raster tiles are battle-tested and easy to render on older devices and simpler libraries.\n- Stadia Maps serves both formats and co-founded MapLibre. Luke Seelenbinder served three terms on MapLibre's governing board.\n\n## What Are Raster Map Tiles?\n\nRaster map tiles are PNG or JPG images that get stitched together in a grid to form a complete interactive map. When you zoom in and out of a map and see little blank squares filling in like a mosaic, those are tiles.\n\nThe [Stadia Maps Raster Map Tiles API](https:\u002F\u002Fdocs.stadiamaps.com\u002Fraster\u002F) serves all of Stadia's house styles as PNG raster tiles at 256×256 and 512×512 pixel sizes. Raster tiles are supported up to zoom 20 for most styles (Stamen Watercolor is the exception at zoom 16).\n\n**Raster advantages (from the Stadia Maps guide):**\n\n- **Simplicity.** Just about every device can render a PNG or JPG image, and it is easy to build a performant renderer around them. Raster tiles do not require any other resources (fonts, icons) or special client-side logic.\n- **Specificity.** For minimalist styles, raster tiles can be more bandwidth-efficient because they only contain the raw visible pixels.\n\n**Raster limitations (from the Stadia Maps guide):**\n\n- **Inflexibility.** You cannot change much about raster tiles. Hiding a layer, changing the language of labels, or altering the appearance of the tiles is not possible client-side.\n- **Scalability.** Raster map tiles cannot be scaled up and down. High-DPI displays need 4× the pixels, and zooming produces temporary blur until the new tiles load.\n\n## What Are Vector Map Tiles?\n\nVector map tiles contain a mathematical description of geometry and structured data about each feature on the map. Rather than pre-rendered pixels, the tile carries the raw data and the client renders it in real time.\n\nThe [Stadia Maps Vector Map Tiles API](https:\u002F\u002Fdocs.stadiamaps.com\u002Fvector\u002F) serves tiles in the widely-adopted Mapbox Vector Tile (MVT) format, with a schema compatible with OpenMapTiles. Stadia Maps supports zoom levels 0 through 14 for vector tiles, with over-zooming from the z14 tile beyond that. Stadia Maps recommends the [MapLibre GL JS](https:\u002F\u002Fmaplibre.org\u002F) and MapLibre Native renderers, but the tiles work in any MVT-compatible renderer.\n\n**Vector advantages (from the Stadia Maps guide):**\n\n- **Flexibility.** The actual data is preserved in the tile. You can [change the language](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fchanging-the-map-label-language\u002F) of text labels, change color scheme dynamically, switch styles based on time of day, or [add 3D perspective](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fadding-3d-buildings-to-your-maps-with-maplibre\u002F).\n- **Scalability.** Vector shapes scale up and down smoothly. Zooming feels continuous rather than stepped, and high-DPI displays get sharp output without extra bandwidth.\n- **Cost.** Vector tiles cover a larger area per tile. Stadia's guide reports users switching to vector make approximately 60% fewer tile requests on average.\n\n**Vector limitations (from the Stadia Maps guide):**\n\n- **Complexity.** Tiles render client-side, which may create performance concerns for older or embedded applications. Initial map load involves more network requests for fonts, icons, and style resources.\n- **Size.** For applications that only need a low level of detail and don't use 3D features, vector tiles can weigh slightly more. This is offset because zooming past level 14 uses the information already in the z14 tile.\n\n## Vector vs. Raster: Which Should You Use?\n\nThe [Stadia Maps Switching to Vector Tiles guide](https:\u002F\u002Fdocs.stadiamaps.com\u002Fguides\u002Fswitching-your-maps-from-raster-to-vector-tiles\u002F) summarizes the choice directly: \"Vector tiles offer greater flexibility, look great on any screen, and typically reduce costs by around 60%. However, if your application is targeting older devices or doesn't need a high level of detail (for example, our Alidade Smooth and Alidade Smooth Dark styles), raster tiles are not necessarily a bad option.\"\n\nChoose **vector** when you need:\n\n- Client-side style customization or language switching\n- 3D perspective, custom camera angles, or dynamic theming\n- Lower total tile requests at scale\n- Sharp rendering on high-DPI displays without paying 4× bandwidth\n\nChoose **raster** when you need:\n\n- Support for older devices or renderers that don't understand MVT\n- A minimalist style where bandwidth per tile is very small\n- The absolute simplest integration path in Leaflet, WordPress, or a static site\n- Static images (for those, the [Stadia Maps Static Maps API](https:\u002F\u002Fstadiamaps.com\u002Fproducts\u002Fmaps\u002Fstatic-maps\u002F) is a different product, tailored for embedding images in emails or apps without a JS runtime)\n\n## How Do You Serve Vector and Raster Tiles with Stadia Maps?\n\nBoth formats use straightforward URL patterns. Replace `\u003Cstyle>` with any of the [Stadia Maps map styles](https:\u002F\u002Fdocs.stadiamaps.com\u002Fthemes\u002F).\n\n**Vector tile URL formats:**\n\n```text\nhttps:\u002F\u002Ftiles.stadiamaps.com\u002Fdata\u002Fopenmaptiles.json\nhttps:\u002F\u002Ftiles.stadiamaps.com\u002Fdata\u002Fopenmaptiles\u002F{z}\u002F{x}\u002F{y}.pbf\n```\n\n**Raster tile URL format:**\n\n```text\nhttps:\u002F\u002Ftiles.stadiamaps.com\u002Ftiles\u002F\u003Cstyle>\u002F{z}\u002F{x}\u002F{y}{r}.png\n```\n\nThe `{r}` placeholder handles HiDPI (\"retina\") display support. Replace it with `@2x` for 2× scaled images, or drop it for 256×256 output.\n\nAuthentication, EU-only endpoints, and the full list of supported zoom levels are covered in the [Vector Map Tiles](https:\u002F\u002Fdocs.stadiamaps.com\u002Fvector\u002F) and [Raster Map Tiles](https:\u002F\u002Fdocs.stadiamaps.com\u002Fraster\u002F) docs.\n\n## How to Switch from Raster to Vector Tiles\n\nThe [Switching to Vector Tiles guide](https:\u002F\u002Fdocs.stadiamaps.com\u002Fguides\u002Fswitching-your-maps-from-raster-to-vector-tiles\u002F) walks through the common migration paths.\n\n- **Switching to MapLibre GL JS (web).** The most feature-rich option. See the [MapLibre GL JS quickstart](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fvector-maps-with-maplibre-gl-js\u002F).\n- **Keeping Leaflet.** Add vector rendering support via the `maplibre-gl-leaflet` plugin. Swap `L.tileLayer` for `L.maplibreGL` and point at a Stadia Maps vector style URL. See the [Vector Tiles with Leaflet tutorial](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fvector-tiles-with-leaflet\u002F).\n- **React Leaflet.** Add a small component. See the [Vector Tiles with React Leaflet tutorial](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fvector-tiles-with-react-leaflet\u002F).\n- **OpenLayers.** Load the `ol-mapbox-style` plugin and call `olms.apply` with a Stadia Maps vector style URL.\n- **Mobile (iOS, Android, Flutter, React Native).** See the [Native and Multi-platform maps overview](https:\u002F\u002Fdocs.stadiamaps.com\u002Fnative-multiplatform\u002Foverview\u002F).\n\n## Where Vector vs. Raster Tile Comparisons Fall Short\n\nA few things worth knowing before you take any comparison table (this one included) as absolute.\n\n- **\"60% fewer tile requests\" is an average, not a guarantee.** The actual reduction depends on the level of detail, the size of the viewport, and how much users pan and zoom. The Stadia Maps guide reports it as an average across users who switched.\n- **Vector isn't universally faster.** Initial map load can involve more network requests for fonts, icons, and style resources. First-paint may feel slower even when total data is lower.\n- **Not every renderer handles MVT with the same fidelity.** The Stadia Vector docs explicitly note that OpenLayers rendering \"isn't quite as powerful as MapLibre GL JS, but it's the quickest migration path to most of the benefits.\" Same idea for the Leaflet plugin.\n- **Older devices matter.** If a meaningful part of your user base runs older embedded browsers or low-power devices, raster is often the safer default. The Stadia guide calls this out explicitly.\n- **Style customization has its own learning curve.** The flexibility of vector tiles only pays off if you actually build styles. If you never customize, the raster experience of Stadia's house styles is just as good visually.\n\n## Common Use Cases for Vector and Raster Map Tiles\n\nWhere each format shines, drawn from the Stadia Maps docs and product page.\n\n**Vector tile use cases:**\n\n- Interactive web and mobile apps that need custom styling, language switching, or 3D perspective\n- Marker clustering, polyline overlays, and polygon overlays in [MapLibre GL JS](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fclustering-styling-points-with-maplibre\u002F)\n- Data visualization on top of a customizable basemap\n- Applications where reducing total tile requests matters at scale\n\n**Raster tile use cases:**\n\n- WordPress sites and CMS integrations via the [Leaflet](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fwordpress-with-leaflet\u002F) or [Mapster](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fwordpress-with-mapster\u002F) plugins\n- Older devices or environments that cannot run a WebGL-based renderer\n- QGIS and other GIS tools that consume raster XYZ tile services\n- Minimalist styles like [Alidade Smooth](https:\u002F\u002Fdocs.stadiamaps.com\u002Fmap-styles\u002Falidade-smooth\u002F) where bandwidth per tile is already very small\n\n## Frequently Asked Questions\n\n### What is the difference between vector and raster map tiles?\n\nRaster map tiles are PNG or JPG images that get stitched together in a grid. Vector map tiles contain a mathematical description of the geometry plus structured data about each feature on the map, and get rendered client-side. Vector tiles allow dynamic styling, look sharp at any resolution, and typically reduce tile requests by around 60%. Raster tiles are simpler to render and battle-tested across older devices and rendering libraries.\n\n### Which is better, vector or raster map tiles?\n\nAccording to the [Stadia Maps Switching to Vector Tiles guide](https:\u002F\u002Fdocs.stadiamaps.com\u002Fguides\u002Fswitching-your-maps-from-raster-to-vector-tiles\u002F): \"Vector tiles offer greater flexibility, look great on any screen, and typically reduce costs by around 60%. However, if your application is targeting older devices or doesn't need a high level of detail, raster tiles are not necessarily a bad option.\"\n\n### Do vector map tiles cost less than raster map tiles?\n\nOn the Stadia Maps API, both vector and raster tile requests are [billed the same way](\u002Fpricing\u002F). Vector typically requires fewer total requests to render a comparable map. The Switching to Vector Tiles guide reports users switching to vector make approximately 60% fewer tile requests on average.\n\n### What format are Stadia Maps vector tiles served in?\n\nStadia Maps vector tiles are distributed in the widely-adopted Mapbox Vector Tile (MVT) format, with a schema compatible with [OpenMapTiles](https:\u002F\u002Fopenmaptiles.org\u002F). They render in MapLibre GL JS, MapLibre Native, Leaflet (via `maplibre-gl-leaflet`), OpenLayers (via `ol-mapbox-style`), and other MVT-compatible renderers.\n\n### Can I use vector tiles with Leaflet?\n\nYes. Leaflet can render Stadia Maps vector tiles via the [`maplibre-gl-leaflet`](https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-gl-leaflet) plugin. You swap `L.tileLayer` for `L.maplibreGL` and point at a Stadia Maps vector style URL. This is the quickest migration path from raster Leaflet to vector without switching frameworks. Full walkthrough in the [Vector Tiles with Leaflet tutorial](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fvector-tiles-with-leaflet\u002F).\n\n## Where to Go Next\n\n### From the Blog\n\nMore on maps and rendering from the Stadia Maps blog:\n\n- [How We Fixed Water Feature Rendering Across All Zoom Levels](\u002Fblog\u002Ffixing-missing-water-interactive-basemaps\u002F)\n- [2026 Satellite Imagery Update: 37M km² at 30cm Resolution](\u002Fblog\u002F2026-satellite-imagery-update\u002F)\n- [Custom Markers and POST Support for Static Maps](\u002Fblog\u002Fcustom-markers-in-static-map-images\u002F)\n- [Announcing Cacheable Static Maps](\u002Fblog\u002Fannouncing-cacheable-static-map-images\u002F)\n- [Our SwiftUI DSL Is Joining the MapLibre Family](\u002Fblog\u002Fmaplibre-swiftui-dsl\u002F)\n\n### Maps\n\n- [Map Tiles product page](\u002Fproducts\u002Fmaps\u002Finteractive-maps\u002F) for formats, styles, and library support\n- [Vector Map Tiles docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fvector\u002F) for tile URLs, authentication, and renderer support\n- [Raster Map Tiles docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fraster\u002F) for PNG tile URL formats and retina support\n- [Switching to Vector Tiles guide](https:\u002F\u002Fdocs.stadiamaps.com\u002Fguides\u002Fswitching-your-maps-from-raster-to-vector-tiles\u002F) for a full migration walkthrough\n- [Map Styles library](https:\u002F\u002Fdocs.stadiamaps.com\u002Fthemes\u002F) for the complete gallery of Stadia house styles\n- [Interactive Web Maps overview](https:\u002F\u002Fdocs.stadiamaps.com\u002Fmaps-for-web\u002F) for renderer selection and framework choices\n- [Custom Map Styling](https:\u002F\u002Fdocs.stadiamaps.com\u002Fcustom-styles\u002F) for building your own styles on top of the OpenMapTiles schema\n- [Maps product page](\u002Fproducts\u002Fmaps\u002F) for the full Maps lineup, and [pricing](\u002Fpricing\u002F)\n- [Static Maps product page](\u002Fproducts\u002Fmaps\u002Fstatic-maps\u002F) if you need pre-rendered map images instead\n",{"title":8,"description":583,"path":9,"published":584,"category":585,"rawbody":586},"A navigation SDK turns a route into a guided experience: snapping, instructions, rerouting, and UI. Learn what one has to do and how to choose between them.","2026-10-28","Routing & Navigation","---\ntitle: What Is a Navigation SDK?\ndescription: \"A navigation SDK turns a route into a guided experience: snapping, instructions, rerouting, and UI. Learn what one has to do and how to choose between them.\"\nauthor: Stadia Maps Team\ncategory: Routing & Navigation\nhead:\n  script: []\nimage: \u002Fimages\u002Fog\u002Fwhat-is-a-navigation-sdk.png\nimageAlt: What Is a Navigation SDK? Stadia Maps\nmodified: 2026-10-29\npublished: 2026-10-28\nterm: Navigation SDK\ntermDescription: A library that turns a route into a live guided experience, handling position snapping, instruction timing, rerouting, and the navigation interface.\n---\n\nA routing API gives you a route. A navigation SDK gets a person down it.\n\nThat gap is larger than it looks. The route is a one-time answer to \"how do I get there.\" Navigation is a loop that runs for the length of the trip: take a position fix, decide where on the route that is, decide whether the person is still on it, work out which instruction comes next and when to say it, and redraw the screen. A routing API does none of that.\n\n## Key Takeaways\n\n- A navigation SDK handles position snapping, instruction timing, off-route detection, rerouting, and the guidance UI.\n- It is not the same thing as a routing API. A navigation SDK needs a route, so it has to get one from somewhere.\n- [Ferrostar](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fferrostar\u002F) is a BSD-licensed open-source navigation SDK for iOS, Android, and web, with a shared Rust core and platform-native UI.\n- Whichever you choose, check license, platform coverage, how rerouting is triggered, and whether you can replace the location provider.\n\n## What a Navigation SDK Actually Does\n\nThe work runs continuously while a trip is in progress, and it splits into a few jobs.\n\n- **Location handling.** The SDK consumes a stream of positions and works out where on the route the user is. Ferrostar makes the [location provider replaceable](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fferrostar\u002F), which matters if your positions come from your own hardware or a simulator rather than the device.\n- **Off-route detection.** Deciding that a deviation is real rather than a bad fix. Ferrostar documents its off-route detection logic as customizable.\n- **Rerouting.** The [Ferrostar SDK](\u002Fproducts\u002Frouting-navigation\u002Fferrostar-navigation-sdk\u002F) provides \"support for real-time updates and rerouting,\" which means fetching a new route mid-trip and switching to it.\n- **Instructions.** The [routing layer](\u002Fproducts\u002Frouting-navigation\u002Fturn-by-turn-directions\u002F) supplies the maneuver instructions, with \"language flexibility with instructions in 25+ languages.\" The SDK decides when to surface each one.\n- **The guidance interface.** Ferrostar builds this from composable components in SwiftUI and Jetpack Compose, with a UI layer that uses MapLibre.\n\nEach is tractable alone. Running all of them against live position data, for the length of a trip, is where the work is.\n\n## Navigation SDK or Routing API?\n\nThey solve different halves of the same problem.\n\n- A [routing API](\u002Flearn\u002Fbest-routing-api\u002F) answers \"what is the path from A to B,\" returning geometry and turn-by-turn instructions as data.\n- A navigation SDK consumes that and runs the live trip.\n\nYou can use a routing API without a navigation SDK. Drawing a route line on a map, or showing an ETA, needs no navigation layer at all. The moment you want a user to follow the route in real time, you need the loop.\n\nGoing the other way is not really an option. A navigation SDK needs a route source, so choosing one means choosing or accepting a routing API behind it.\n\n## Open Source or a Vendor SDK?\n\nNavigation SDKs come from the same vendors that provide routing APIs, including Google Maps Platform, Mapbox, HERE Technologies, and TomTom, and from open-source projects. Terms, platform support, and pricing change, so check each vendor's own documentation rather than a third-party summary.\n\nAn open-source SDK gives you the source, which decides whether you can change the parts that assume a car on a road. Off-route logic tuned for highway driving behaves differently for someone walking, and a default location provider may not be the one you want if positions come from your own hardware or a simulator.\n\n### Ferrostar\n\n[Ferrostar](\u002Fproducts\u002Frouting-navigation\u002Fferrostar-navigation-sdk\u002F) is the open-source entry Stadia Maps maintains. The documented facts:\n\n- **License:** open source under a BSD license.\n- **Platforms:** iOS, Android, and web. The product page also lists progressive web apps.\n- **Architecture:** a shared core written in Rust with platform-native UI, built as composable components in SwiftUI and Jetpack Compose.\n- **Rendering:** the UI layer uses MapLibre, with Metal rendering supported.\n- **Customization:** off-route detection logic and the location provider are both replaceable.\n- **Travel modes:** described as being for \"foot, bike, car, and custom routing.\"\n- **Source:** [github.com\u002Fstadiamaps\u002Fferrostar](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fferrostar), with platform tutorials at [stadiamaps.github.io\u002Fferrostar](https:\u002F\u002Fstadiamaps.github.io\u002Fferrostar\u002F).\n\nUsing it with Stadia Maps basemaps and routing requires a Stadia Maps API key. The SDK documentation points to GitHub issues and the `#ferrostar` channel on the OSM US Slack for questions, with commercial support available through sales.\n\n## Choosing a Navigation SDK for a Mobile App\n\nThe navigation SDK sits between your route source and your UI, so these are the questions worth settling before you build on one.\n\n- **License.** Can you ship it in a commercial app, and can you modify it?\n- **Platform coverage.** Does it cover every platform you ship on, or will iOS, Android, and web each need a separate implementation?\n- **Routing lock-in.** Does the SDK work with a routing API of your choice, or only the vendor's?\n- **Rerouting control.** Can you change what counts as off-route, and how quickly a reroute fires?\n- **Location provider.** Can you feed it your own positions, from a fused provider, a simulator, or external hardware?\n- **Travel modes.** Does it handle the modes you need, or does it assume a car?\n- **UI customization.** Can you restyle the maneuver banner and progress views, or are you adopting the vendor's design?\n\n::faq-section\n---\nfaqs:\n  - question: What is a navigation SDK?\n    answer: A navigation SDK is a library that turns a route into a live guided\n      experience. It handles snapping the user's position to the route,\n      detecting when they have gone off it, requesting a reroute, timing\n      turn-by-turn instructions, and rendering the guidance interface. A routing\n      API provides the route; the navigation SDK runs the trip.\n  - question: What is the difference between a navigation SDK and a routing API?\n    answer: A routing API answers what the path from A to B is, returning geometry\n      and instructions as data. A navigation SDK consumes that route and runs\n      the live trip, including position snapping, off-route detection, rerouting\n      and the guidance UI. You can use a routing API on its own to draw a route\n      or show an ETA. Real-time guidance needs both.\n  - question: Is there an open-source navigation SDK?\n    answer: Yes. Ferrostar is an open-source navigation SDK available under a BSD\n      license, with a shared core written in Rust and platform-native UI for\n      iOS, Android, and web. Its source is at github.com\u002Fstadiamaps\u002Fferrostar.\n  - question: What is the best navigation SDK for a mobile app?\n    answer: The choice turns on how much of the navigation behavior you need to\n      change. Commercial SDKs come from the vendors that also provide routing\n      APIs, including Google Maps Platform, Mapbox, HERE Technologies, and\n      TomTom. Ferrostar is an open-source option under a BSD license, with\n      native UI components in SwiftUI for iOS and Jetpack Compose for Android,\n      and the same core on web. Check license, platform coverage, whether you\n      can use your own routing API, and whether off-route logic and the location\n      provider are replaceable.\n  - question: What platforms does Ferrostar support?\n    answer: Ferrostar supports iOS, Android, and web, with composable UI components\n      in SwiftUI and Jetpack Compose. The product page also lists progressive\n      web apps, and the documentation notes that the core runs on many embedded\n      architectures.\n  - question: Do I need a routing API to use a navigation SDK?\n    answer: Yes. A navigation SDK needs a route to guide along, so it has to get\n      that route from somewhere. Some SDKs work only with a specific vendor's\n      routing. Using Ferrostar with Stadia Maps basemaps and routing requires a\n      Stadia Maps API key.\n  - question: Can I change how a navigation SDK decides a user is off route?\n    answer: Check the SDK before you commit. Ferrostar documents off-route detection\n      logic and the location provider as customizable, which matters for travel\n      modes where the default assumptions about a car on a road do not hold.\n---\n::\n\n## Where to Go Next\n\n### Routing & Navigation\n\n- [Ferrostar SDK documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fferrostar\u002F) for setup and platform guides\n- [Ferrostar product page](\u002Fproducts\u002Frouting-navigation\u002Fferrostar-navigation-sdk\u002F)\n- [Turn-by-Turn Directions](\u002Fproducts\u002Frouting-navigation\u002Fturn-by-turn-directions\u002F) for the instructions a navigation SDK surfaces\n- [SDKs overview](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Foverview\u002F) for the full list of Stadia Maps SDKs\n- [Routing overview docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002F) for the endpoints behind a navigation experience\n",{"id":588,"bio":561,"extension":18,"jobTitle":561,"meta":589,"name":590,"sameAs":591,"slug":594,"stem":595,"twitterCreator":561,"type":596,"url":597,"__hash__":598},"authors\u002Fauthors\u002Fstadia-maps.yml",{},"Stadia Maps",[592,593],"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fstadia-maps\u002F","https:\u002F\u002Fgithub.com\u002Fstadiamaps","stadia-maps","authors\u002Fstadia-maps","Organization","https:\u002F\u002Fstadiamaps.com\u002F","jRSutfRcYEknA-OSdkWoPHgm7Iep6BJfLBIsMtzQONk",1794385874625]