Cycling maps with the infrastructure drawn separately
Numbered node networks, separated cycleways, on-road lanes and MTB trails, each on its own layer. One style URL, no API key, no sign-up.
map.setStyle("https://styles.maptoolkit.org/cycling.json");
Nineteen layers for cycling alone
Cycling is the largest of the seven styles at 134 layers, and 19 of them are cycling infrastructure. Here is what each group does.
Numbered node networks
The junction-to-junction system used across the Netherlands, Belgium and parts of Germany. Node numbers and the segment references that connect them both render, from a dedicated label layer, so a route planned as a list of numbers can be followed on the map.
Four kinds of infrastructure
A cycleway beside a road, an on-road painted lane, a path where cycling is designated and an MTB trail are four separate layers. Each has tunnel and bridge variants, and there is a layer for where cycling is forbidden.
Route shields and labels
Cycle routes carry their own shields and labels, so a numbered long-distance route stays identifiable across the whole of its length.
Difficulty and network tags
mtb_scale, cycling_network and
surface come through on the road layer, so
technical grade, network level and whether a track is gravel or tarmac are
all filterable.
Shading tuned for route lines
One gentle hillshade pass and three multicoloured contour layers. Cycle routes are drawn as coloured lines across the whole map, so the relief is kept light to hold contrast under them.
Cycling points of interest
Bicycle-relevant POIs have their own label layer, and aerialways render with labels, which matters for routes that use a lift to gain height.
Every map using these tiles keeps the Maptoolkit logo and the copyright line visible. The attribution guide covers the exact requirement and the drop-in plugins for MapLibre and Leaflet.
Filter by network level and technical grade
cycling_network carries the OpenStreetMap hierarchy, so you can
show long-distance routes when the map is zoomed out and local networks only
once someone has zoomed in.
// cycling_network: lcn local, rcn regional, ncn national, icn international.
// Show only the long-distance networks until zoom 11.
map.addLayer({
id: 'long-distance-routes',
type: 'line',
source: 'mtk',
'source-layer': 'road',
maxzoom: 11,
filter: ['in', ['get', 'cycling_network'], ['literal', ['ncn', 'icn']]],
paint: { 'line-color': '#6A4FBF', 'line-width': 2.4 }
});
// mtb_scale is the technical grade, 0 to 6, for filtering MTB trails.
The full field list and the values each tag takes are in the outdoor tags reference.
Put your routes on top
This is a plain MapLibre style, so a recorded ride is a GeoJSON source and a line layer. Converting GPX to GeoJSON is a client-side step and nothing about the tiles constrains what you draw over them.
map.addSource('my-ride', { type: 'geojson', data: rideGeoJson });
map.addLayer({
id: 'my-ride-line',
type: 'line',
source: 'my-ride',
layout: { 'line-cap': 'round', 'line-join': 'round' },
paint: { 'line-color': '#E8551A', 'line-width': 4 }
});
Make it your route map
Open the Cycling style in MapMaker and change the infrastructure colours, the node label size or the whole palette. Easy Mode works through the design system with no JSON involved, Expert Mode opens the style code directly. In our opinion MapMaker is among the best map style editors available right now, and it is free to use with these tiles.
Frequently asked questions about Maptoolkit Cycling
At which zoom levels does the cycling detail appear?
Routes and their shields render from zoom 6, so a national network is visible on a country-wide view. Node numbers start at zoom 10. The detailed infrastructure, meaning the separated cycleway, the on-road lane and the designated path drawn apart from each other, starts at zoom 13, and the layer marking where cycling is forbidden at zoom 15. If a cycleway seems missing, check the zoom before checking the data.
Are one-way restrictions in the data?
Yes, and as two separate fields. The road layer carries oneway and, separately, oneway_bicycle, because a street that is one-way for cars is frequently two-way for bikes. Anything presenting itself as a cycling map needs the second field rather than inferring direction from the first.
Can I calculate routes with this?
No. These are display tiles, not a routing graph: there is no topology, no turn restrictions and no costing. Drawing a route needs a routing engine, and the Routing API on maptoolkit.com is the paid service for that. What the tiles give you is somewhere to draw the result.
Can I get gradients or an elevation profile out of it?
Not from the tiles. The contour lines and hillshading are cartographic, drawn to be read rather than measured, so sampling them for a climb profile will not give you usable numbers. Elevation per coordinate is the Elevation API on maptoolkit.com, a separate paid service.
Is the surface data good enough for gravel riding?
Partly. The surface tag comes through, so gravel, compacted and asphalt are distinguishable where OpenStreetMap has them, and coverage is uneven by region. OpenStreetMap's smoothness tag is not in the schema, so the tiles will tell you a track is gravel but not whether it is rideable on 32mm tyres.
What shows up outside the node-network countries?
Everything except the node numbers. The node label layer is only populated where the junction-to-junction system exists, so it is empty in most of the world, while routes, shields and the four kinds of infrastructure render everywhere OpenStreetMap has them mapped.
Can I use this for a bike rental or tour business?
Under the Community License, yes, if the organisation is under EUR 1 million annual consolidated revenue and has fewer than 10 full-time employees. Past either threshold the commercial tiles on maptoolkit.com apply. Non-commercial and community projects have no thresholds at all.
What are the rate limits?
Unregistered traffic gets 120 tiles per second sustained and 200 in burst per website, with a 40 tiles per second cap per visitor IP. Cached tiles do not count, and the edge cache absorbs most requests. There is no SLA on the community service, so it is not the right choice behind anything life-safety or billing-critical.
The rest of the outdoor range
Hiking maps
Waymarked route shields, SAC and via ferrata grades, nine path layers and four hillshade passes.
Ski and winter maps
Colour-coded piste difficulty, nordic trails, eight lift types and run numbers.
3D terrain
Add -3d to the style name for terrain, already configured
against the same elevation model.