GitHub Repo Source GitHub

XYZ Raster Tiles Sources

A collection of xyz raster tiles for use in maps built for mobile devices, QGIS and MapLibre Styles. This repo gives sample URLs to various raster xyz sources.

Created by in Summer 2020 for use in production of our #mapsForNonProfits.

Sample Tile XYZ: selecting the XYZ URL will copy


Usage & License: OpenStreetMap

Natural Earth Tiles

Usage & License: Natural Earth Tiles

Stamen watercolor

Usage & License: Stamen watercolor

Stamen terrain

Usage & License: Stamen terrain

Stamen toner

Usage & License: Stamen toner

ArcGIS World Imagery

Usage & License: ArcGIS World Imagery


Usage & License: USDA NAIP

Mapbox or MapLibre Style

Tiles for use in Mapbox or MapLibre for mobile or web applications, can easily be configured. See the styles directory for sample style JSON. These styles follow the TileJSON v3.0.0 specification.

You can also find several styles hosted by See

See the Mapbox documentation or MapLibre documentation on details for how to add raster tiles to your style.


See examples of several style.json in is a quick, simple tool for creating, viewing, and sharing maps.

You can use to add in xyz raster tiles:

  • Hover over Meta > Add map layer
    • You will prompted for a Layer URL, you can add in one of the xyz layers from above
    • Add in a Layer name
    • You can toggle layers via the checkboxes in the lower right hand corner


These tiles can easily be pulled into QGIS. From the QGIS documentation site:

You can add other services that use the XYZ Tile protocol by choosing New Connection in the XYZ Tiles context menu (right-click to open).

TileServer GL

You can inspect “Vector and raster maps with GL styles” before they are installed onto production or mobile by using TileServer GL.

# Create a short alias for TileServer GL
alias tsgl="docker run --rm -it -v $(pwd):/data -p 8080:8080 maptiler/tileserver-gl"
tsgl -v
tsgl -h

MapKit with TileOverlay


See the details for iOS & tvOS at

// coordinate the loading and management of the tiles
let urlTemplate = "{z}/{x}/{y}.png"
let overlay = MKTileOverlay(urlTemplate: urlTemplate)
overlay.canReplaceMapContent = true
overlay.minimumZ = 8
overlay.maximumZ = 19
overlay.tileSize = CGSize(width: 256, height: 256)

// handle the actual drawing of the tiles on the map
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    if overlay is MKTileOverlay {
        let renderer = MKTileOverlayRenderer(overlay:overlay)
        return renderer
    return MKTileOverlayRenderer(tileOverlay: overlay as! MKTileOverlay)


See the details for MapKit JS:

See a live demo of MapKit JS with an OpenStreetMap tile overlay:

var map = new mapkit.Map("map");

const openstreetmap = "{z}/{x}/{y}.png"
var customOverlay = new mapkit.TileOverlay(openstreetmap);

customOverlay.minimumZ = 2;
customOverlay.maximumZ = 16;
customOverlay.opacity = 1.0; = {
    lang: mapkit.language

Example of XYZ rasters in iOS