Meet rurouter — the engine behind rooot's routes
Most route planners answer one question:
What's the fastest way from A to B?
We wanted something different.
What if you're on a gravel bike and actively looking for forest roads?
What if you're planning a multi-day bikepacking trip and want to avoid brutal climbs?
What if you're carrying a packraft and need to combine rivers, lakes, and trails into a single journey?
Those aren't edge cases for us.
They're the reason rooot exists.
To make that possible, we built our own routing engine from scratch.
It's called rurouter.
Written in Rust and designed specifically for outdoor adventures, rurouter powers every route you create on rooot — from a quick local gravel ride to a multi-day alpine expedition.
Here's what makes it different.
Tunable, not one-size-fits-all
Most routers give you a handful of fixed modes: "bike", "foot", "car". rurouter
gives you 13 activity profiles, each tuned for how that activity actually
feels on the ground:
- Bike: gravel, mountain bike, road bike, bikepacking, city bike
- Foot: hiking, trail running, trekking, walking, jogging
- Water (beta): canoe, kayak, packraft
And every profile exposes sliders and toggles — climb avoidance, terrain
difficulty, surface preference, traffic aversion, e-bike assist, ferries on/off,
and more. Want a road-bike route that stays on explicitly paved surfaces
only? Flip one switch. Want a gravel route that seeks out unpaved tracks
and avoids main roads? Drag the surface slider. Planning a loaded bikepacking
trip and want to avoid every avoidable climb? There's a toggle for that too.
The magic part: any combination of those settings just works, instantly.
There's no menu of pre-canned presets — you can dial in exactly the route
character you want, and rurouter computes a fresh, optimal route for it.
Fast — no matter how far
Long routes are where most routers fall apart: ask for a 300 km bikepacking
traverse and you wait, and wait. rurouter is built on a technique called
Customizable Contraction Hierarchies, which makes the common profiles
distance-independent — a cross-country route returns as quickly as a
cross-town one. Tweak a slider into uncommon territory and it still answers in a
second or two. You stay in flow while planning; the engine keeps up.
It actually knows the terrain
rurouter routes on real-world detail, not just road classes:
- Elevation-aware. It bakes in SRTM elevation data, so it understands
climbs and descents — and you can tell it how much you hate (or love) hills.
Every route comes back with a clean elevation profile. - Surface-aware. Asphalt, gravel, dirt, cobbles, singletrack — it knows the
difference and weights them per profile. Your road bike won't get sent down a
rocky doubletrack; your gravel bike will happily take the forest road. - Difficulty-aware. Hiking and trail profiles respect the SAC alpine scale
and MTB technical scale, so "moderate" and "expert" mean what they should.
Safe by design
A hard rule, baked into the engine below every profile: it will never route a
cyclist or pedestrian onto a motorway. No matter how you tune the sliders,
autobahns and their ramps are simply off-limits. Routing should never put you
somewhere dangerous to save a few minutes.
Rivers, too
This is the part we're most excited about. rurouter has a water layer —
navigable rivers and lakes — stitched together with land and portage
connectors. For canoe, kayak, and packraft trips it routes you down the water,
and when it hits a weir, a drop, or a waterfall, it doesn't pretend you can
paddle over it: it carries you around — that's the portage — and flags the
hazard on the map. Paddle-and-hike packrafting routes fall out naturally,
because the engine treats water and land as one connected world. (Water routing
is in beta — we'd love your feedback.)
Beyond A-to-B
rurouter isn't just point-to-point. It powers the planning features that make
rooot more than a map:
- Round trips & loops — give it a start, a distance, and a vibe, and it
fans out loops in every direction. - Discover tours — explore a region by route quality, not just distance.
- Multi-day & hut-to-hut — it strings together overnight stops (huts,
shelters, campsites) into a coherent multi-day plan. - Isochrones — "how far can I get in 2 hours?" as a shape on the map.
- Escape routes — fastest ways out to the nearest shelter or trailhead from
wherever you are. - Rendezvous — a fair meeting point for two parties starting apart.
All of it POI-aware: viewpoints, peaks, water sources, huts, and trailheads are
first-class citizens.
Why we built it
We loved BRouter's hackable, opinionated profiles — but it struggled with long
routes. We respected Valhalla's speed — but its costing was too rigid and its
long-distance shortcuts loved to hug big roads. So we took the best of both: a
deeply tunable cost model that you can shape to your activity, on top of a
contraction-hierarchy core that stays fast at any distance. Then we added the
outdoor things that mattered to us — real terrain awareness, alpine difficulty,
a hard no-motorway rule, and water.
It's running under rooot today. Plan a route, drag the sliders, and you're
talking to rurouter. Go find something good.
— the rooot team