Routing costs: what they are and how to read them🔗
The BRouter routing engine behind Bikerouter does not optimize for shortest
distance alone. It optimizes for a routing cost score computed per segment
from the active profile (.brf) and summed for the full route.
What is a routing cost?🔗
A profile assigns a costfactor to each way segment (optionally with
uphill/downhill variants). Segment cost is built from:
- distance cost (
distance × effective costfactor) - turn cost
- elevation cost
- optional node and initial costs
The route's total cost is the sum of those segment costs.
Cost values are in meter-equivalents: with a costfactor of 1.0, a 100 m segment contributes 100 cost units.
So routing cost is a profile-dependent score, not money and not travel time.
Why values around 1.0 matter🔗
Profiles are built around costfactor >= 1. A costfactor of 1.0 is the baseline
(segment cost roughly equals segment length).
A Mean cost factor near 1.0 means the route is close to what the profile considers ideal on average. Higher values indicate less preferred conditions for that profile (for example climbs, rough surface, detours, access penalties, or many sharp turns).
Important: Mean cost factor is affected not only by way costfactor, but also by turn/elevation/node/initial costs.
Total cost vs. mean cost factor🔗
- Total cost: sum of all segment costs. Best for comparing alternatives of similar length.
- Mean cost factor:
total cost / track length(dimensionless, because both values are meter-based). Best for comparing routes of different lengths.
How to use cost values in practice🔗
Use cost values as relative indicators, not absolute labels.
Most useful comparisons:
- same route, different profiles
- same profile, different alternatives
For fair comparison, keep constant:
- profile and profile options
- start/end/via points
- routing data version (
.rd5files)
Important limits🔗
- Cost numbers are profile-specific; values from different profiles are not directly comparable.
- Ways with very high costfactor are effectively excluded from routing (
>= 10000). - Elevation impact is buffered/configurable, so hill penalties are not a fixed per-meter constant.