Mind the Surface

App reports

How OpenStreetMap-based maps draw unpaved roads, November 2026

By julcnx · Last updated 13 November 2026

How each map draws a road that changes from paved to unpaved. The web maps were compared on six such roads (Namibia C38, Bolivia RN3, Nepal NH48, Iceland 54, Australia 27, Alberta 40, zoom 15); the phone apps were checked by hand. The proposal and the five styles are in the article.

Data says what the map's data or tiles know about the surface, so whether a change is a style change only. Tracks and paths says how the map draws highway=track and paths, which an Unpaved signal on roads is best kept distinct from; they were compared on seven more views full of them (Thailand and Switzerland, zoom 15 and 14). Styles that fit lists the article's five styles (1 grain fill, 2 dashed centre line, 3 dashed fill, 4 dashed casing, 5 dashed fill full width) that look like none of the map's tracks, paths or tunnels; "4 on main roads" means the dashed outline only on red, orange and yellow roads. "To check" means not verified yet; corrections are welcome as a GitHub issue.

Show it, keep the class

Map Open source Unpaved on main roads Data Tracks and paths Styles that fit Where to ask
OSM Carto (openstreetmap.org) yes Every class from zoom 6: a fine grain in the class colour Full surface; explicit lists of unpaved values, so unknown values such as laterite are drawn as paved Brown dashes, rhythm by tracktype; paths salmon dots 1 (in use) GitHub
Americana yes Every class from zoom 12: lighter dashes of the class colour Paved or unpaved, from OpenMapTiles, only from zoom 12 None drawn Any; 5 in use GitHub
DMD2 no Every class seen: dark dashes in the fill Counts laterite as unpaved (seen on test roads in its web planner) Coloured dashes inside the line, like its unpaved roads 3 in use DMD forum
CyclOSM yes From zoom 14, primary and below, as cycling surface dashes. surface=unpaved is in none of its lists (75% of unpaved km) and trunks get no surface rule Full surface and smoothness (explicit lists) Dark green dashes by bike type; paths teal dots Its own dashes, in the road colour GitHub
Tracestrack Topo partly Secondary and below: a dashed outline. Primary and trunk: no difference A list of unpaved values that includes laterite; a value it does not know is drawn as paved (seen on test roads) Brown dashes; its unpaved minor roads look close to them 1, 3; 4 on main roads (as today) GitHub
cycle.travel no (built with its maker's open tilemaker and glug) A dashed dark outline; a secondary keeps its yellow (Canada), a tertiary turns from cream to white on its unpaved section (Switzerland). Map data in Europe and North America only A list of unpaved values: rock, cement and asphalt_lanes drawn as paved (seen on test roads); tracktype counts Brown dashed and dotted lines, no outline; paved tracks drawn as minor roads; paths green dots 4 in use (tunnels not checked) OSM forum

Show it, partly

Map Open source Unpaved on main roads Data Tracks and paths Styles that fit Where to ask
OsmAnd yes Only with the "Road surface" or "Road quality" overlay, off by default, from zoom 14 Full surface, smoothness and tracktype Default style: grey-green dashes by tracktype; paths dark grey dashes. Off-road style: black dashes on a tan underlay, paths dark red dashes; its "Road surface integrity" option recolours roads by surface, replacing the class colour. The OsmAnd web map uses the OSM Carto style instead 1, 3, 4 GitHub (#9465)
Locus Map no Depends on the map theme; not on the LoMaps web map To check Web map: thin dark dashes, tracks and paths alike 1, 3, 4 Helpdesk ideas

Show it, lose the class

Map Open source Unpaved on main roads Data Tracks and paths Styles that fit Where to ask
Humanitarian (HOT) yes Every class from zoom 11, but the road takes the residential colour, so an unpaved primary looks like a minor street Paved whitelist; untagged unclassified and residential roads count as unpaved Same fill as its unpaved roads, plus dashes; paths dots Keep the class colour; then 1, 2, or 4 on main roads GitHub (#104)
Ride with GPS no Drawn as dashed brown lines, like tracks Paved or unpaved, from zoom 10; untagged roads and values it does not know, such as laterite, count as paved Two brown dashed lines on a pale fill, like its unpaved roads 1, 3; 4 on main roads Help center
OsmAnd Motorcycle styles yes Primary to residential with a gravel or dirt surface drawn like tracks; motorway and trunk never Full surface and tracktype Five colour categories by surface and track type: green dashes for dirt and tracks without a grade, brown for easier ones; paths red dashes. Unpaved roads below trunk take the track colour and width 1, 3, 4, on the road's own class colour instead of the track look GitHub discussion #22
AdvOSM (Garmin maps) no: style rules not published (the TYP file can be read from any map) Every class except service, as one yellow dashed line, so an unpaved trunk looks like an unpaved minor road surface, smoothness, tracktype and width; warning icons for bad smoothness, low tracktype grades and narrow roads Tracks white dashes between grey edges, thinner than roads; closed tracks red dashes; footpaths red dashes 1, 2, 3, 4 in the class colour Contact form on the site
Gaia GPS (Gaia Topo) no surface is not used. Tertiary, unclassified and residential roads with smoothness very_bad or worse, or 4wd_only=yes, are drawn as tracks; trunk, primary and secondary never. The premium Overland layer shows surfaces smoothness (very_bad or worse) and 4wd_only, only to turn a minor road into a track Light brown-yellow fill with a dashed outline; paths dark grey dashes 1, 3; 4 on main roads Community forum

Do not show it

Map Open source Unpaved on main roads Data Tracks and paths Styles that fit Where to ask
Organic Maps, CoMaps yes No Paved or unpaved, with good or bad, already in the map data (used for routing only) Olive dashes, the same for every track; paths brown dashes; footways white dashes 1, 3; 4 below primary (tunnels have a dashed outline) GitHub (#8485)
OSMF Shortbread (vector.openstreetmap.org) yes No Full surface in the tiles from zoom 11 None in the Spirit style; thin black dots on osm.org 1, 3 (tunnels have a dashed outline) Spirit PR #93 (open)
MapTiler (Streets, Outdoor) no No Paved or unpaved, from OpenMapTiles, from zoom 12 Thin plain lines; tan dashes in the layer on osm.org 1, 3, 5 MapTiler support
Komoot no No; surfaces only in the route summary No surface in the map tiles, only tracktype; surfaces come from its routing data Own "Track" category: cream with a brown edge 1, 2, 3 Help center
Mapy.com (basic map) no No Surface classes for minor ways only (asphalt, hardened road, field track); none on main roads Thin dark grey dashes 1, 3, 4 Community forum, ideas
Kurviger no Only on the planned route, not on the map To check Faint thin grey lines Any Forum
AllTrails no No Tiles not checked; the map draws laterite, unpaved and gravel roads alike Dashed double line; paths grey dots 1, 3; 4 on main roads Help center
Maps.me no No To check Dark olive dashes, the same for every track; paths brown dashes; footways white dashes (as Organic Maps) 1, 3 Help center
Guru Maps no No To check Brown dashes, no grade difference seen; paths thin light grey dashes 1, 3, 4 (tunnels not checked) Documentation, support in the app
OpenTopoMap yes No; surface only on paths Full surface Thin solid black lines by tracktype; paths black dots 1, 3, 4 GitHub
Thunderforest (OpenCycleMap, Transport, Outdoors) no No No surface on roads; surface only on paths (Outdoors tiles) White line with a dashed grey outline (Transport: faint grey lines) 1, 3; 4 on main roads Contact
Stadia Maps (Alidade Smooth, Outdoors) no No Paved or unpaved, OpenMapTiles-compatible tiles, from zoom 12 Thin plain lines Any Support
Strava no No Paved or unpaved on roads from zoom 12, finer values on tracks; untagged roads and values it does not know, such as laterite, get none Cream with a brown edge; paths dark green dashes 1, 2, 3 Community Hub ideas
CalTopo no No To check Heavy black dashes; paths red dashes 1 Feature requests
Protomaps basemap yes No No surface in the tiles: a schema change comes first Thin plain lines Any, after a schema change GitHub

Where the classifier goes

For open-source maps: where the surface is classified today, and which ready-made version of the paved whitelist fits. All versions pass the same 67 test cases.

Map Where the surface is classified Version to use
OSM Carto SQL lists in project.mml SQL
CyclOSM SQL in views.sql SQL
Humanitarian (HOT) SQL CASE in project.yml (repository archived in March 2025) SQL
Any osm2pgsql flex or tilemaker pipeline Lua import script Lua
OSMF Shortbread (Spirit) The style itself: tiles carry the raw surface A whitelist expression in the style; JavaScript as reference
Americana, MapTiler, Stadia, OpenFreeMap Upstream in OpenMapTiles (SQL) and Planetiler (Java) Whitelist upstream; SQL as reference
OsmAnd Rendering style rules (the map files carry surface) Rules in the rendering style
Organic Maps, CoMaps The map generator already has a paved whitelist Nothing: style change only
Protomaps No surface in the tiles Schema change first

Tile schemas

A style can only draw what its tiles carry.

Schema Used by Surface From zoom
OpenMapTiles Americana, MapTiler, Stadia, OpenFreeMap Paved or unpaved 12
Shortbread OSMF vector tiles Full surface and tracktype 11
OsmAnd (OBF) OsmAnd Full surface, smoothness and tracktype 12 to 14
Organic Maps (MWM) Organic Maps, CoMaps Paved or unpaved, good or bad with the road
Protomaps Protomaps basemap None
Mapbox Streets v8 Mapbox-based maps Paved or unpaved, where OSM has it not documented