While this might not exactly be the best time to roll out a new feature focused on exploring the outside world around us running or cycling, it’s still a super cool new bit of functionality that will keep you distracted for a while sitting in your living room lockdown. Strava has just launched their new routes feature that automatically creates routes on the fly at variable distances for running or cycling, taking into account the companies massive data on where people are actually going, as well as preferences for elevation and surface type.
It’s vaguely like Garmin’s Round Trip Routing function that’s been on their units for years, but appears to be a fair bit better and more flexible in most cases. Both in how you define routes (such as road times), but also in how they route. It’s not always a circle. It could for example be an out and back, or even a ‘Y’ shaped route. And it’s super fast.
But is it worthwhile, or perhaps even better than a local? Well, I dig into that. Oh – one more thing. This new feature does require a Strava Summit membership (of any sort). As expected, eventually Strava was going to start adding more value for people paying into their platform.
In any case, on with the show, and if you want the total walk-through in a video, simply hit play:
Otherwise, keep reading. Or, do both. Multi-tasking and all that.
First things first, ensure you’re on the latest version of the Strava app. For iOS users, you need to be at 143.0.0 or higher, and for Android users should be the same as well. As always, it may take a little bit of time for these to filter their way out to the world through various App Store platforms (but they have begun to be distributed).
Next, open Strava and tap on the ‘Explore’ button at the bottom, then tap ‘Explore Routes’.
That’ll open up a page that’ll start pondering life for a little a few seconds, showing you a view of the world. A few seconds later it’ll come back with three routes, based on default parameters at the top of the page. As part of that though, it’ll warn you that it’s based on the data they have, not an actual human inside a hamster wheel giving you these. As such, sometimes data-driven routes might need human judgement applied.
Now, the way it works is that at the top of the page you’ve got five levers to dork with, the are:
Location (to start/end): You can specify current location, or choose any address/place on earth, or just tap a spot. Ride/Run: This is specifying the sport type. The company is starting with these two for now. Distance: You can select a distance in either kilometers or metric. There’s a few options here from 1mi to 100mi. Elevation: Whether you want flat, hilly, or throw your hands in the air like you don’t care Surface: Paved, dirt, or surprise me.
So, let’s start with a 30mi/50km ride from nearby the DCR Studio as a good example. First, in my case I tapped the start of the park nearby. By default it’ll use your exact location this moment, but being able to choose a different starting location is useful. Especially if you’re sitting at the baggage claim of an airport waiting for luggage, but want to plan a route from your hotel a few hours from now. Or, you want to find a route from a mutual starting point. You can also simply type the name of a place in too:
Next, I’ll leave the default at ‘Ride’ ,and then we’ll select our desired distance. In my case, I’m going to go with a 30mi/50km ride. You can see some of the different pre-defined levels here:
For those in metric, here’s the run/ride screenshots. For running, there’s also 2KM & 50KM option that didn’t fit in the screenshot:
Finally, in my case I’m going to leave the two elevation options at the default. I have no elevation around Amsterdam anyway, and realistically there’s even fewer off-road routes around here.
With that, it comes back with three choices. They aren’t precisely 30 miles. One is 33.9mi, one is 31.9mi, and one is 36mi.
As you can see, they go off in various directions to form giant loops. We’ll discuss whether or not they suck a bit later. I can tap on when, then choose ‘See details’ to get more info about it:
The above includes information like the exact surface type of the route as well as the elevation plot. It also has an estimate for how long it’ll take me (a metric I’d say is definitely not correct).
Interestingly, you can give feedback on the route too:
Also, before we go forward, you can toggle various map layers, including satellite and even the Strava heatmap, in case you want to take a closer look at what people are actually doing around you:
If you tap the Save button, it’ll show your route within the Strava route viewer, where you can give it a new name and save it for realz. Also, by default it’ll be favorited. This means it’ll automatically sync to some 3rd party devices and platforms. For example, a Wahoo bike computer will automatically sync in new favorited routes.
Finally, you can go ahead and execute the route from the Strava App if you want to:
All of this is the same on running as well, for example, here I asked it for a 5-mile route, first of any type (left, below), and then unpaved (right, below):
In the case of the unpaved route, it didn’t really know, but kinda lucked out. You can see if I open the route profile, it shows the white section as unspecified. The part I circled below is actually unpaved, whereas the remainder is paved. Still, it’s not a bad swag at things. And in fact, looking at another one of the options isn’t horrible either. Most of the route it gives me here is unpaved, even if it didn’t know that for certain.
Ok, so good stuff – silly easy to use. And, you’ll find you’ll get both slightly and significantly different routes if you adjust the starting points slightly. So it’s not always exactly the same.
Strava says that the routes are generated based on looking at everything from the routes where people ride, where they tend to start/end, elements they tend to include or divert towards, plus bits like road type and average speed on those sections. They say it’s not perfect, but they thing it’s largely at the point of being valuable for folks today, even if some people aren’t allowed outdoors.
How it works:
Before we dive into whether or not I think the routing engine is worth it, I figured I’d talk about how it all works under the covers.
The first piece of this is actually figuring out what’s a road or path. This may sound like a silly or obvious thing, but it’s probably the biggest challenge. See, when people upload data to Strava, it doesn’t upload in a file that says “User rode bike down Main street, turned left onto Clanker Bike Path”. Rather, it just uploads a slew of data points, usually one GPS coordinate for each second. That’s it. No street names, no ‘turn left or right’ intentions, etc… Just GPS plots.
So Strava first has to figure out if the user was actually on a road, and to do that, they have to map all these data points to real world maps. This is called ‘map matching’. Strava has roughly 3 billion activities (billion with a B) in its database from roughly 50 million people. They believe that covers about half of the world’s trails and roads. But all of that data has to be normalized to figuring out what’s real or not. What’s a GPS error versus someone on a different path. To do that they break it down to one block at a time. Where there isn’t a block marker, they then look at the next point two roads or trails intersect. Below shows that snapping process for a single section of road and how people move up/down that road, as well as onto other nearby roads.
The points you see above are what Strava calls ‘intersections’, and are basically where a block ends/begins, or a trail ends/begins. Between those intersections are what Strava calls ‘edges’, and this is what it allows you to route between. This is of course transparent to you, but under the covers what Strava is doing is setting up a constellation of these intersections and edge points, or effectively waypoints, that it routes you through. By snapping you to these edges, Strava can increase the confidence they aren’t routing you off on some random track that doesn’t exist in real-life.
The next piece of the puzzle is when you tell Strava where you want to start. When you do that, Strava goes off and looks for the nearest edge to begin you from. It’s like getting on a bus or a train – it needs you to get on at a station. Mind you, that doesn’t mean you need to start at a street corner. You can start anywhere on a known road/path (try it, you’ll see).
You can see below when someone zoomed in to try and create a route around Golden Gate Park, it is showing some of the waypoints that are common starting points within that realm. Strava is taking this a step further than just looking at roads, and saying ‘Where do people often start/end in this area?” – and then once they know that, they start to look at where those people go from that point (again, over thousands or hundreds of thousands of data sets).
Next, they look at the heatmap. But not the entire Strava heatmap. Rather, the heatmap for that starting point. And that’s a super specific thing. So what you see below is the green dot of the defined starting point (same as above actually). From that starting point, Strava then looks at the heatmap of where people tend to go. As you can see, logically, most people that start close to that waypoint tend to stay within the park. A few then wander out towards the coast and connect to other parks. But most stay within.
As such, that’s one of the factors that drives route creation. The above three screenshots were from Strava. But to demonstrate this, I then cracked open the app and selected the same starting point and told it to create 5KM & 10KM routes. As you can see, it seems to drive users onto some of those heatmaps. But not exclusively. But certainly, it’s a part of it:
Finally, remember that it’s not just popularity. Strava still has to then account for hills vs not, and surface type as well. So those selections would naturally override (to a degree) straight popularity routing.
Is it any good?
As one who, till recently, travelled quite a bit – I figured I’d put a handful of cities to the test that I know well from a riding/running standpoint. I figure I’d see whether Strava’s algorithmically. The key thing I’d be looking at was whether or not these routes were something I’d want to actually ride or run, or whether my local knowledge would best it.
In the case of cycling specifically, I’d be looking heavily at whether or not Strava minimized the use of lower-speed but higher volume commuter paths. These could easily trick the algorithm into thinking they were good for workouts due to the high volume of people using them implying they were good bike routes, when in reality, they were less ideal for trying to a good workout. How often would this actually occur? Let’s dig in.
Let’s look at three 30-mile routes it’s giving me right now for cycling.
Route 1: First, looking at the 36.9mi Waver-Nieuwveens route. That’s a solid route. I’ve written elements of this frequently, though never exactly what this is proposing. Still, it’s a perfect route. In fact, I’d argue of all the routes that I’ve seen the app generate over the last week, this is as good as any local would give you:
Route 2: Next, is the Vondelpark route. This is one route that I too have also done some variations on. It’s not a bad route, and it definitely mixes it up. It properly uses Vondelpark as the bike superhighway it is, and then sorta takes you into the city (less ideal, but unavoidable once you exit Vondelpark) before edging out off the side towards the bay. Once you cross the bridge, it’s really nice. And the return is pretty nice too – super efficient. I’ve actually saved this ride, this is a keeper.
Route 3: Last is the Buikslotermeerdijk route. Err…nope. It’s not that it’s a bad route in terms of structuring. It’s just a pointless route. The initial part across the city sucks. It’s slow, normally packed with tourists blocking in bike lanes, and lots of stop and go. That said, I have used that exact route to exit the city across the water, via the ferry many times, just like this route does. However, anyone that does that is doing so to ride much further into the beautiful farmlands and bay routes that direction. Instead, this basically crosses the mess of a city, merely to draw a dick-pic and then turn-around again:
And the return, while well-meaning on some sections, is still mostly a mess for anyone training to maintain speed. Now, I’ll say it’s not a ‘bad route’ overall. If you’d never ridden a ride from Amsterdam before, you’d probably think it was pleasant (as some parts are). Maybe even fun in the city. But the time to cross the city (25-30 mins), only to then re-cross it (another 25-30 mins) means only a portion of your riding is good. Whereas the entire southern region from where I’m located fantastic. Now again, if I had asked to do a 60-mile ride, and it came back with those same intro/outro areas – awesome, totally acceptable.
And in fact, I just tried that, and on the last one, it uses those same in/out routes. And it creates a route that’s highly rated by any local (as are the other two routes it created). I’ve ridden those roads as part of various routes, they’re great.
So, what about running? Sure, I just placed a different dot closer to home, and tried to give that a whirl for a 5-mile routes:
The short version of this recap is that 2 of 3 are great routes that I and any local would give you the same variant of. Well done. The 3rd route (Stadionweg one) is a big of a cumbersome mess that would be hard to follow if you didn’t know the area, and isn’t anything special. Nothing wrong with it in terms of a route per se, but not one I’d try and recommend to someone travelling to the area.
Let’s change it up again: How ‘bout a quick look at route in Paris? I put in my old address there to see what it would come up with for a 10-mile run:
There are elements of those routes that I’d run, but nobody would willingly say that was a ‘an awesome route’. I’d never take any out of towner on those routes. Again, a small fraction of those routes are great pieces, but even a local wouldn’t set out to run those routes unless times were really desperate. It’s just waaaay to much stop and go. Especially given I started it across the street from Notre Dame, which puts you virtually atop the biggest running highways of Paris along the Seine in both directions for dozens of kilometers.
And in case you’re wondering, cycling is mixed. When I tried 60-mile routes, I got good stuff. But bringing it down to 40-mile routes and it’s a messy. I’ve done variants of all these routes, and what it came up with is so-so. For example the D-10 route is mostly OK. And the Avenue de Gravelle route is perhaps 75% OK (some parts are just slow through neighborhoods that I’d skip). And the Route de Pecq is just excessively in the city on main non-ideal routes.
I could literally do this all day long, judging routes around the world from the countless cities I’ve run or rode in. But, I think you get the idea.
It’d say on the whole, the majority of the route are good – especially longer routes. The more rope you give it, the better the routes get. It’s the shorter routes from city starting points that seem to struggle a bit in spreading their wings. It’s almost like sometimes it really wants to show you a creative route, rather than just giving you a beautiful out and back.
Oh, it does however sometimes give you out and backs, or Y’s, or others. See below.
One of those routes is good, the other is a hot mess.
I’m actually impressed. I had relatively low expectations for such a feature, mostly because it feels like every time we see companies try and do automated route generation, it either ends up being too stiff or too focused on data driven by commuters – which aren’t really ideal for workouts (where sustained speed and non-stops are of higher importance). In the vast majority of scenarios I throw at the new routing function, it handles that balance fairly well.
It’s not perfect though, especially for shorter routes, and especially closer to cities for cycling where it has to ‘get out first’. In those cases it seems to try to err on the side of giving you creativity over optimal functionality. It’s sorta like when I would do a creative new route in a city, and my coach would come back with a comment post-workout of ‘That looked like a nice scenic run, but missed the point of the target zones due to the stop and go nature’. Of course, sometimes a scenic run is the goal – and so the flip side of this is that Strava may nail those aspects.
Still, the more distance you give the feature, the better it gets. Virtually all of the longer cycling routes I give the app are superb for the areas I’ve tried, and many of the running ones too. I’ve been favoriting all sorts of great routes the last few days that I hope to get to try sometime this spring or summer. Routes that I wouldn’t have thought to do, but clearly look awesome. And the same is even true of some of the running routes it’s spit out, for areas that I’ve poked at a bit, but never really stitched together into some sweet looking trail or otherwise quiet runs.