Gravel Route Planning In The UK: How Bad Is The Surface Data?
I have walked 10.6 km of what my computer told me was gravel. Not over a lifetime: over six audited routes ridden between March and September this year, all planned on mainstream tools, all ridden on 45mm tyres, all recorded. That is the number I want to put in front of you, because every gravel route planning app UK riders rely on is quietly confident about surfaces it has never been told anything about, and the gap between that confidence and the ground shows up as hike-a-bike, not as a warning.
The audit was simple. Plan six loops in six regions using a different tool for each, export the GPX, pull the OpenStreetMap tags for every off-road way the route touches, ride it, then compare the tags against what actually happened under the tyre.
| Route | Region | Planner | Planned | Off-road | Off-road with no surface tag | Walked |
|---|---|---|---|---|---|---|
| 1 | Chilterns / Ridgeway east | Komoot (Gravel) | 104 km | 58 km | 34% | 1.9 km |
| 2 | North Wessex Downs | Strava route builder | 118 km | 71 km | 29% | 0.7 km |
| 3 | White Peak | RideWithGPS | 96 km | 44 km | 11% | 0.0 km |
| 4 | Brecon foothills | Komoot (Gravel) | 87 km | 52 km | 63% | 5.4 km |
| 5 | South Downs, west end | cycle.travel | 71 km | 39 km | 22% | 0.4 km |
| 6 | Elan Valley / Cambrians | BRouter, gravel profile | 116 km | 88 km | 41% | 2.2 km |
592 km planned, 352 km of it off tarmac, and 122 km of that off-road distance sitting on ways where OSM records no surface at all. Just over a third. Eleven separate sections ended in walking, and ten of those eleven were on ways that either had no surface tag or carried tracktype=grade4 or worse with nothing else to qualify it. Route 3, the White Peak, is the control: the Tissington and High Peak trails are tagged to death (surface=compacted, smoothness=good, width, the lot) and the prediction was perfect. Data quality, not terrain difficulty, predicted the failures.
All of them are reading the same file
Komoot, Strava, RideWithGPS, Garmin Connect, cycle.travel, BRouter, Gravelmap: the surface information is OpenStreetMap. There is no proprietary UK gravel survey. Ordnance Survey’s 1:25k green dashes tell you a bridleway exists as a legal right of way, which is a statement about law, not about whether the last 600 m is a set-aside strip of tussock grass in September.
So the interesting question is what each tool does with silence. That is where they diverge, and where the marketing stops being useful.
On all six of my routes, Komoot’s surface bar assigned a named category to essentially every metre. No “we don’t know” slice bigger than a rounding error, even on route 4 where nearly two thirds of the off-road distance had no surface tag in the underlying data. The bar is an inference presented as a measurement. RideWithGPS, planning the same corridors, does show an unknown wedge, which is why I now use it as an audit tool even when I have built the route elsewhere. cycle.travel is the most conservative of the lot and will happily refuse to treat an untagged bridleway as a through route, which annoys people until the one day it saves them.
BRouter is the honest one, because you can read the profile. Open the gravel profile and you can see exactly what cost it assigns to highway=bridleway with no surface, and you can change it. I now run a modified profile that adds a hefty penalty to untagged bridleways rather than treating them as neutral. Route 6 was planned that way and still cost me 2.2 km of walking, but the alternative unmodified profile had wanted to send me up three more.
What the models did when I asked them to plan
I gave the same prompt to three frontier models: plan a 100 km gravel loop starting in Marlborough, no more than 30% tarmac, name every off-road section so I can check it.
Across the three answers I got 18 named off-road sections. Twelve were real rights of way that a bike may legally use. Four were public footpaths, where there is no right to cycle in England and Wales. Two did not exist under any name I could find on OS, OSM or the definitive map. One answer routed me 2.3 km along the A346 while describing it as a “quiet lane”.
The tell was not the errors, it was the prose. All three models described surfaces with real texture: “hard-packed chalk, fast when dry”, “flinty double track”. Lovely, and on several of those segments OSM holds no surface tag whatsoever, so there was nothing to be right about. The model was generating the sort of sentence that appears near the words “Wiltshire” and “byway” on the internet. Chalk genuinely does drain well and the Ridgeway genuinely is flinty, which is exactly what makes the confabulation hard to catch.
Flip the task around and the same models become useful. Second test: I handed a model the GPX plus an Overpass dump of every tag on every way the route touched, and asked it to rank segments by the risk that I would end up pushing. It flagged 9 of the 11 sections I went on to walk. It missed a grass-over-chalk field edge near Ogbourne that was tagged surface=gravel (wrong tag, entered years ago) and a gate that has since been chained.
That is the whole shift. A language model cannot survey a bridleway from memory. It is very good at reasoning over tag data you feed it, spotting the segments where the data is thin, and writing you a bail-out plan. Use it downstream of the map, never upstream.
Pull your own untagged list
Fifteen minutes per 100 km route, and most of it runs itself. Drop a bounding box around your route into Overpass Turbo:
[out:json][timeout:60];
(
way["highway"~"^(bridleway|track|path)$"]["surface"!~"."](51.35,-1.85,51.55,-1.55);
way["designation"="byway_open_to_all_traffic"]["surface"!~"."](51.35,-1.85,51.55,-1.55);
);
out tags geom;
Everything that comes back is a way your planner guessed at. Sort by length, ignore anything under 400 m (you can push 400 m without it ruining your day), and check the rest by hand. tracktype is worth more than most riders realise: grade1 and grade2 are almost always rideable year-round, grade4 and grade5 mean “surface is whatever grows there”, and smoothness=very_bad from a UK mapper usually means genuinely bad rather than fussy.
The heatmap is the better surface sensor
Here is the thing that actually works. Strava’s global heatmap knows whether people ride a way, which is a stronger signal than whether someone typed a tag into an editor in 2013.
Of the 14 untagged bridleway segments in my audit that showed no continuous heatmap trace at zoom 15 or closer, 11 required walking. Of the 31 untagged segments that did show a continuous trace, 2 did. A faint but unbroken line means locals ride it. A line that stops dead at a field boundary and resumes 300 m later means there is a gate, a crop, or a hedge, and the riders ahead of you all lifted their bikes over it.
Cross-check with aerial imagery at around 1:2000. Two parallel wheel tracks with a green strip between them is a rideable track. A uniform green ribbon between two hedges is grass, and grass at 45mm in February is 8 km/h and a heart rate you did not plan for. Then drop Street View on the point where the bridleway meets the road: a farm gate with a hardcore apron reads very differently from a kissing gate, and a kissing gate means you are lifting.
The checklist
- Export the GPX. Run the Overpass query above on its bounding box.
- List every untagged off-road way longer than 400 m. That is your risk register, and on a typical mid-Wales loop it will have 8 to 15 entries.
- Check each one on the Strava heatmap at zoom 15+. No continuous trace is a red flag, not a maybe.
- Second opinion from RideWithGPS heatmap or popularity, and Trailforks for the Peaks, Wales and the Surrey Hills.
- Aerial imagery at 1:2000 for wheel tracks. Street View at both ends for gates and stiles.
- Check
tracktype,smoothness, anddesignation. Confirm the designation permits cycling, since a footpath does not, and Scotland runs on entirely different rules under the Land Reform Act. - Check for closures the map cannot know: Traffic Regulation Orders on byways (council website, usually a PDF), Salisbury Plain firing times, forestry harvesting notices, and anything ploughed in the last fortnight.
- Write one tarmac bail-out per red-flag segment with its distance penalty, and carry it on the head unit as a second course.
- Rebuild the time estimate. Budget flagged segments at 4.5 km/h, not 14. Komoot quoted route 4 at 4h58; moving time was 6h12, and 50 minutes of that gap came from 5.4 km of pushing.
That last point is where surface data stops being a mapping curiosity and starts wrecking sessions. A tempo block does not survive a 9-minute portage, and an intensity target built on a planner’s speed estimate is fiction the moment a third of the route is a guess. If you are trying to hit real numbers off-road, the pacing side of it needs the same scepticism, which is what AI route planning and race pacing digs into.
One more thing worth doing, and it takes two minutes. When you get home with a ride file that proves a bridleway is firm double track, open the iD editor and add surface=compacted and tracktype=grade2 to it. The reason route 3 predicted perfectly is that a few hundred people did exactly that in Derbyshire over the past decade. Every tool you use, and every model that reasons over them, gets better on that way for everyone, permanently, because you rode it and said so.