The short version
Network data
OpenStreetMap roads, paths, access rules, surfaces and bicycle-route relations.
Routing engine
A self-hosted BRouter service using AusBUG's custom bicycle profiles.
Rider preference
Paths, Paths / Lanes, or Paths / Lanes / Roads changes the cost of each option.
Decision
BRouter searches the connected network for the route with the lowest total cost.
Safe preference, not a safety guarantee
A low cost means a way matches the selected profile. It is not a certification that the infrastructure is safe, open, comfortable or suitable for every rider. Conditions can differ from the map, and every rider must use their own judgement.
From two points to one route
Waypoints
The start, finish and any points placed between them.
Preferences
A routing profile plus the unpaved and ferry switches.
Network
BRouter matches the points to its OpenStreetMap-derived network.
Cost search
Every candidate link receives access, distance, turn and elevation costs.
Result
The lowest-total-cost route is returned with geometry and route instructions.
Routes with intermediate waypoints are calculated one leg at a time so the route follows the points the rider deliberately placed. A waypoint is therefore an instruction, not merely a suggestion.
What a routing cost means
Researchers often call this cost impedance. A cost factor of 1 is the baseline. A factor of 4 makes each metre of that link count roughly like four baseline metres during route selection. It does not make the physical road four times longer, and it is not the same as the ETA.
Simplified model
total route cost ≈ Σ(distance × way cost) + turns + access transitions + elevation
BRouter evaluates the complete connected route. It does not greedily choose the nicest-looking street one intersection at a time.
Using the Paths profile
1 km residential street × cost 4 = 4,000
3 km cycleway × cost 1 = 3,000
The three-kilometre cycleway can win, despite being much longer.
Using Paths / Lanes / Roads
1 km residential street × cost 1 = 1,000
3 km cycleway × cost 1.5 = 4,500
The direct residential street is likely to win.
These examples deliberately omit turns, elevation, access penalties and small profile adjustments. They explain the trade-off; they do not reproduce a complete BRouter calculation.
The three AusBUG profiles
Paths
Makes a large detour worthwhile when it can keep the rider on dedicated paths.
cyabikepathPaths / Lanes
Balances dedicated paths, recognised cycle routes and lower-order streets.
cyabalancedPaths / Lanes / Roads
Prefers a more direct ride using residential streets and suitable roads.
cyaroadsRecognised cycling routes
In the balanced and roads profiles, an OpenStreetMap international, national, regional or local bicycle-route relation receives a baseline cost of 1 before applicable access, surface and direction penalties. The Paths profile deliberately ignores route-relation status and judges the way itself.
Cost factors by road and path type
The table below shows the normal base costs used by the current profiles. Lower is preferred. “Bicycle-designated” means the routing data includes a recognised bicycle permission or designation; it does not necessarily mean there is a protected lane.
| Typical way | Paths | Paths / Lanes | Paths / Lanes / Roads |
|---|---|---|---|
| Dedicated cycleway | 1 | 1 | 1.5 |
| Paved residential street | 4 | 1.1 | 1 |
| Paved service road | 4 | 1.3 | 1.2 |
| Tertiary road, bicycle-designated | 8 | 1 | 1 |
| Tertiary road, not bicycle-designated | 20 | 2 | 1 |
| Secondary road, bicycle-designated | 10 | 2 | 1.5 |
| Secondary road, not bicycle-designated | 30 | 5 | 3 |
| Primary road, bicycle-designated | 15 | 4 | 3 |
| Primary road, not bicycle-designated | 35 | 10 | 8 |
| Trunk road, bicycle-designated | Blocked | 6 | 10 |
| Trunk road, not bicycle-designated | Blocked | Blocked | 25 |
| Steps | 40 | 40 | 40 |
Values are rounded to omit a small 0.05 non-cycle-route adjustment.
The Paths profile’s unmarked tertiary, secondary and primary figures include its additional unsafe-road penalty of 5.
Track and path costs vary with surface, bicycle designation and OpenStreetMap track grade, so they cannot be represented by one honest number.
Access, surfaces and other rules
Legal bicycle access
Ways tagged private, closed to bicycles, requiring a sidepath, or otherwise inaccessible receive very high costs. A way cost of 10,000 is BRouter’s effective “does not exist” value.
Dismounting and walking
Where bicycle access is unavailable but pedestrian access exists—including an explicitbicycle=dismount section—AusBUG adds an access penalty of 4 to the normal way cost. This preserves some connections but is not a literal walking-speed model.
One-way streets
Bicycle one-way rules and mapped contraflow exceptions are respected. If walking against the direction is legally possible, BRouter can apply a penalty: 4 on a local way, rising to 20, 30 or 50 on tertiary, secondary or primary roads. Roundabouts receive 60.
Unpaved preference
Surface tags and track grades affect path costs. Turning on “avoid unpaved” adds 20 to known unpaved ways. This is a strong deterrent, not an absolute prohibition, so an unavoidable unpaved connection can still be returned.
Steps
Steps are currently allowed but receive a cost factor of 40. They should normally appear only when they solve a connection that would otherwise require a large detour.
Ferries
Ferries are allowed by default with a 5.67 distance factor and a fixed entry penalty of 10,000. Turning on “avoid ferries” changes their cost to 10,000, which removes them from the available network.
Turns
A normal turn has a fixed cost of 90. Roundabouts have no standard turn cost. Recognised bicycle routes also avoid the ordinary turn penalty, helping BRouter stay on a coherent signed route.
Elevation
The profiles are elevation-aware. They use BRouter’s bicycle physics model and elevation buffers, with a 1.5% cutoff to reduce sensitivity to small slopes and elevation noise. Elevation can therefore change the chosen line as well as the initial time estimate.
How ride time is estimated
The route cost above chooses the geometry. It is not presented to riders as minutes. BRouter returns an initial travel time, then AusBUG attempts to replace that with a community-based estimate after the route has drawn.
15 m
Route sampling interval
The route is sampled regularly to find nearby infrastructure speed data.
5+
Minimum observations
A segment needs at least five speed samples before its own average is used.
25 sec
Victorian signal allowance
Each clustered traffic-signal intersection found along a Victorian route adds an average delay.
- 1
AusBUG matches points along the selected route to nearby OpenStreetMap cycling-infrastructure segments.
- 2
Where enough aggregated rider observations exist, the segment’s observed average speed is used.
- 3
Where evidence is sparse, AusBUG falls back to an infrastructure-category average, then an overall average. The final fallback is 18 km/h.
- 4
In Victoria, mapped traffic signals along the route are clustered into intersections and an average 25-second delay is added for each one. No signal delay is currently added outside that dataset's coverage.
Route preference and ETA answer different questions
BRouter answers “which connected line best matches this preference?” The community model then answers “how long might riding that line take?” The fastest displayed ETA is not automatically the route with the lowest preference cost.
Route choice versus map colours
Routing profile
The profile decides which line BRouter returns. The three production profiles chiefly use road class, dedicated cycleway/path status, bicycle designation, route relations, surface, access and direction.
Infrastructure display
After routing, AusBUG interprets returned OpenStreetMap tags to colour sections as separated or shared paths, protected, buffered or basic lanes, sharrows and ordinary roads.
What production routing does not yet know
- It does not currently use live motor-traffic volumes, congestion or Google traffic data when choosing a bicycle route.
- It does not yet assign a formal Level of Traffic Stress (LTS) to every production road section and intersection.
- Emergency, flood, fire, crash and community-hazard map layers do not currently alter the BRouter cost automatically.
- The three production profiles do not comprehensively distinguish painted, buffered and physically protected on-road lanes during route selection.
- OpenStreetMap is community maintained. Missing, outdated or inconsistent tags can produce an unexpected route or colour.
- Routing tiles are snapshots rather than a live view of OpenStreetMap, so an OSM correction will not appear immediately.
- A cost model cannot observe temporary construction, surface damage, personal confidence, accessibility needs or conditions on the ground.
AusBUG is researching traffic-stress routing and richer road-volume inputs separately. They will not be described as production behaviour until their data, direction handling and route outcomes have been validated.
Common questions
Why did AusBUG use a road I was trying to avoid?
Most mismatches are penalised rather than absolutely blocked. If the safer network is disconnected, the alternative detour is extremely long, or OpenStreetMap lacks the expected tags, a short road section may still produce the lowest total cost. Try the Paths profile or place an intermediate waypoint.
Why is the Paths route so much longer?
Its residential-road cost is four times the dedicated-cycleway baseline, and major unmarked roads are penalised much more heavily. A substantial detour can therefore be intentional rather than an error.
Does ‘avoid unpaved’ guarantee a sealed route?
No. It adds a strong cost of 20 to known unpaved links. It cannot penalise an unknown or incorrectly mapped surface, and it can still use an unpaved link when that is the only practical connection.
Does AusBUG tell riders to walk through high-stress gaps?
Not automatically. It permits costly pedestrian-accessible links where cycling access is unavailable, including explicit dismount sections, but it does not currently convert every high-stress road into a walking segment.
Can I correct a routing problem?
Check the way in OpenStreetMap first. Correcting access, surface, cycleway, one-way or route-relation tagging improves the underlying public data. For an AusBUG profile issue, send us the start, finish, selected profile and a screenshot through the contact page.
Technical references
BRouter
The open-source, elevation-aware routing engine used by AusBUG.
BRouter profile guide
Technical definitions for costfactor, initialcost, elevation and effective exclusions.
BRouter cost functions
Why configurable bicycle routing is expressed as a programmable cost function.
OpenStreetMap
The open, community-maintained network data from which BRouter routing segments are built.
Want to discuss the methodology?
We welcome feedback from riders, researchers, planners and OpenStreetMap contributors.