I run cyclists.com, a library of cycling routes. Every route page tries to answer what a rider wants to know before setting off: how much of it is on busy roads, whether it is paved, where the water and cafés are. Nearly all of those answers come from OpenStreetMap, so I wanted to explain how we use the data and pass back a few things we found in it.
What we measure along a route
We don’t use Overpass. A few hundred routes would be unfair load on a public instance, so everything runs against local Geofabrik extracts. For each route line we sample a point every 100 m, take the nearest way within 80 m and read its tags:
Road class: highway=* grouped into cycle path, quiet street, minor road, main road (primary/secondary), major road (trunk) and motorway.
Cycle provision: highway=cycleway, any cycleway*=* tag that isn’t no, or bicycle_road=yes.
“Main roads without a cycle lane”: km on primary, secondary, trunk or motorway ways with none of the above.
Fast roads: km where maxspeed is 80 km/h or more (mph converted).
Surface: surface=* first; then tracktype; then the road class (a primary road with no surface tag counts as paved, a track as unpaved). Anything else is shown as “no data” rather than guessed.
Services: cafés, bakeries, shops, drinking water, toilets, bike shops and railway stations within a few hundred metres of the line, placed by km along the route, plus the longest stretch with none.
Where a sample point is more than 80 m from any way, it counts as unmapped. We say so on the page instead of filling the gap.
A typical result, for a loop in the Hajar mountains (Fujairah Loop via Fayyad and Minazif): “Most of it (42.6 km) is on main roads without a cycle lane, 16.4 km where the limit is 80 km/h or more. The first 30 km has no café, shop or water.” And for the Deeside Way out of Aberdeen: “62% is on cycle paths or roads with a cycle lane. 52% is mapped as paved and 47% as gravel or unpaved.”
Elevation comes from the Copernicus DEM, not from OSM or from the GPS.
Signed cycle routes as route pages
In Scotland and Wales we turned every route=bicycle relation into route pages: 177 sections in Scotland, 68 in Wales, each with a GPX file. Long routes are cut at towns into stages, so the Border Loop is a four-day tour. Ferries stay in the line but end a stage (Oban to Corran finishes at the Corran ferry).
The lesson: don’t chain a relation’s members in order. That broke at every one-way split and dual carriageway. It worked once we read each relation as a network instead:
- snap way ends to junctions within 50 m
- ride around roundabouts rather than along them
- prune dead-end spurs under 2 km
- bridge small breaks of up to 500 m once
- take the longest path through what is left
The surface split comes from the member ways’ own tags.
Relations we couldn’t read
These are the ones worth a look if you map in Scotland or Wales. I’m not saying they’re wrong: some may be deliberate, and I haven’t checked each on the ground.
Fragmented (members don’t join into a rideable line):
- NCN 73 (r11361) and NCN 753 (r2293737). My guess is that the ferry crossings aren’t members, so the island and mainland sections don’t connect.
- NCN 776 (r105443), NCN 83 (r1328554), NCN 1: Loch Leven to Dundee (r15978437), EuroVelo 12 in Scotland (r9476219)
- Radnor Ring (r32882), NCN 47 (r8201445), Rhondda Fawr Community Route (r8281902)
No name or ref, so we couldn’t tell riders what the route is:
- Scotland: r5497214, r10023468, r10023578, r10023686, r13317477, r15979588, r20395370
Generic names with no ref, e.g. “National Cycle Network National Route” (r116667), “National Cycle Network Route” (r1662719), “National Cycle Network” (r2810169), and one named just “885” (r2454549).
Two limits on our side rather than in the data. Routes that cross into England were cut off at the edge of the country extract. And a figure-of-eight route that rides one segment twice (the Gallovidian Gravel) comes out as one loop, because we don’t yet read a route that uses a way twice.
Attribution
All of this is © OpenStreetMap contributors under the ODbL, credited on every page. Thank you to everyone who tagged a surface, a speed limit or a café somewhere remote. It changes what we can tell a rider about a road they’ve never seen.
If you spot a route page that describes your area wrongly, every page has a “Let us know” link at the bottom, and I read them.
I run cyclists.com, a library of cycling routes. Every route page tries to answer what a rider wants to know before setting off: how much of it is on busy roads, whether it is paved, where the water and cafés are. Nearly all of those answers come from OpenStreetMap, so I wanted to explain how we use the data and pass back a few things we found in it.
What we measure along a routeWe don’t use Overpass. A few hundred routes would be unfair load on a public instance, so everything runs against local Geofabrik extracts. For each route line we sample a point every 100 m, take the nearest way within 80 m and read its tags:
highway=* grouped into cycle path, quiet street, minor road, main road (primary/secondary), major road (trunk) and motorway.highway=cycleway, any cycleway*=* tag that isn’t no, or bicycle_road=yes.maxspeed is 80 km/h or more (mph converted).surface=* first; then tracktype; then the road class (a primary road with no surface tag counts as paved, a track as unpaved). Anything else is shown as “no data” rather than guessed.Where a sample point is more than 80 m from any way, it counts as unmapped. We say so on the page instead of filling the gap.
A typical result, for a loop in the Hajar mountains (Fujairah Loop via Fayyad and Minazif): “Most of it (42.6 km) is on main roads without a cycle lane, 16.4 km where the limit is 80 km/h or more. The first 30 km has no café, shop or water.” And for the Deeside Way out of Aberdeen: “62% is on cycle paths or roads with a cycle lane. 52% is mapped as paved and 47% as gravel or unpaved.”
Elevation comes from the Copernicus DEM, not from OSM or from the GPS.
Signed cycle routes as route pagesIn Scotland and Wales we turned every route=bicycle relation into route pages: 177 sections in Scotland, 68 in Wales, each with a GPX file. Long routes are cut at towns into stages, so the Border Loop is a four-day tour. Ferries stay in the line but end a stage (Oban to Corran finishes at the Corran ferry).
The lesson: don’t chain a relation’s members in order. That broke at every one-way split and dual carriageway. It worked once we read each relation as a network instead: - snap way ends to junctions within 50 m - ride around roundabouts rather than along them - prune dead-end spurs under 2 km - bridge small breaks of up to 500 m once - take the longest path through what is left
The surface split comes from the member ways’ own tags.
Relations we couldn’t readThese are the ones worth a look if you map in Scotland or Wales. I’m not saying they’re wrong: some may be deliberate, and I haven’t checked each on the ground.
Fragmented (members don’t join into a rideable line): - NCN 73 (r11361) and NCN 753 (r2293737). My guess is that the ferry crossings aren’t members, so the island and mainland sections don’t connect. - NCN 776 (r105443), NCN 83 (r1328554), NCN 1: Loch Leven to Dundee (r15978437), EuroVelo 12 in Scotland (r9476219) - Radnor Ring (r32882), NCN 47 (r8201445), Rhondda Fawr Community Route (r8281902)
No name or ref, so we couldn’t tell riders what the route is: - Scotland: r5497214, r10023468, r10023578, r10023686, r13317477, r15979588, r20395370
Generic names with no ref, e.g. “National Cycle Network National Route” (r116667), “National Cycle Network Route” (r1662719), “National Cycle Network” (r2810169), and one named just “885” (r2454549).
Two limits on our side rather than in the data. Routes that cross into England were cut off at the edge of the country extract. And a figure-of-eight route that rides one segment twice (the Gallovidian Gravel) comes out as one loop, because we don’t yet read a route that uses a way twice.
AttributionAll of this is © OpenStreetMap contributors under the ODbL, credited on every page. Thank you to everyone who tagged a surface, a speed limit or a café somewhere remote. It changes what we can tell a rider about a road they’ve never seen.
If you spot a route page that describes your area wrongly, every page has a “Let us know” link at the bottom, and I read them.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | What 689 cycling routes look like when you measure them against OpenStreetMap | 0 | 7.47 | 16-09-2026 |
| 2 | Prioritizing Traffic Light Penalties with Traffic Counts | 0 | 7.7 | 16-09-2026 |
| 3 | Fehlende smootness-Daten in OSM | 0 | 13.35 | 10-09-2026 |
| 4 | OpenStreetMap Carto version v6.1.0 released | 0 | 6.46 | 10-09-2026 |
| 5 | OSM Edit MCP: reviewing local GPX surveys before road edits | 0 | 9.99 | 11-09-2026 |
| 6 | Die familienfreundliche Karte: kinderfreundlicheorte.de | 0 | 13.72 | 16-09-2026 |
| 7 | La communauté mondiale OpenStreetMap s’est réunie à Paris, nous y étions !! | 0 | 10.4 | 15-09-2026 |
| 8 | The non-Mercator manifesto | 0 | 6.79 | 10-09-2026 |
| 9 | Boiling | 0 | 6.7 | 10-09-2026 |
| 10 | Campagnolo’s road and gravel groupsets compared | 0 | 7.28 | 07-08-2026 |