x-route: An open-source, offline-first route planner with proper elevation filtering (BRouter + GPX)

Free, local-first alternative to Strava Route Builder: x-route (Open Source MIT)

Category: General Discussion or Equipment & Software
Tags: route-planner, gpx, brouter, elevation, open-source


Hi everyone,

Like many here who use Intervals.icu to escape corporate walled gardens, I grew tired of the current state of modern route builders. Between Strava locking route creation behind an annual subscription, Komoot paywalling offline regions, and web planners spitting out absurd elevation profiles (showing 28% gradients on flat highway bridges due to raw 30m DEM sampling), I wanted a clean, athlete-focused tool.

I built x-route — a modern, browser-based, offline-first route planner for cyclists and runners. It is 100% free and open-source (MIT).

Key Features tailored for endurance athletes:

  1. Noise-Filtered Elevation Profiles

    • Applies Gaussian spatial low-pass filtering and physical slope limiters to eliminate raw DEM grid aliasing.
    • Dual-threshold deadband (10m hysteresis standard) to prevent phantom climbing elevation gain.
    • 11-level gradient color mapping (from gentle yellow 1-3% to deep purple >15% walls) with an interactive cursor showing distance, altitude, and instantaneous slope.
  2. Local-First & Offline-Capable

    • Everything is stored locally in your browser via IndexedDB (Dexie).
    • Zero login required. No server tracks your home location, commutes, or secret training spots.
  3. Routing Engines & Basemaps

    • BRouter-powered routing profiles (Road, Gravel, MTB, Run, Hike) + freehand manual line drawing.
    • Basemaps include CyclOSM (cycling infrastructure), OpenTopoMap (topographic contours), Satellite, and vector basemaps with 2D/3D pitch controls.
  4. GPX Toolkit & Track Utilities

    • Native GPX 1.1 import & export parsed in Web Workers (multi-megabyte GPX files parse instantly without freezing the UI).
    • Track tools: Douglas-Peucker simplification, route reversal, midpoint split, and lasso box waypoint deletion.

Links

I built this as an open-source project for the community. If you have any feedback regarding elevation smoothing parameters, GPX compatibility with Garmin/Wahoo/Hammerhead, or routing tweaks, I’d love to hear your thoughts!

3 Likes

Looks good on first sight.

Would it be possible to adapt the estimated moving time for example by setting an average power value?

1 Like

Very good idea. The current estimated time is indeed a bit aggressive—it’s calculated using an internal algorithm. If we want to factor in power, we actually also need to take the power-to-weight ratio into account. :grinning_face:

Thanks same feedback for me I just draw a quick loop that I ran yesterday and it looks nice I really like the route profile bottom of the screen with colors showing up/down hill segments. Trail run could be another activity to consider. Estimating moving time could be a thing on its own there are many things that will influence, and I guess you first want to focus on the prime use of the tool (drawing and planning a route).

I’d recommend developping “My Routes” a bit more: filtering on distance, elevation (plus or minus), ratio (for my trail runs I endup very often calculating elevation/distance ratio and choosing a route for a specific workout requiring a specific ratio range). Just some ideas :wink:

A “Print” capability would also be nice with improved layout. I have couple of running groups I’m coaching and quite often I prepare the route then have to print to show to participants. You will see that it’s not easy to find a tool that offers nice print layouts, very often you end up having issues to fit the trace in the A4 paper, and displaying all kind of info next to the route.

Just some ideas and good luck for your development.

Would be nice to have the option to have the option of filtering based on road classification.

For example:

I want the route to only choose cycle paths and roads with less traffic.

I think these are classified as highway=tertiary & highway=cycleway in OpenStreetMap.

1 Like

Ah right. Could also be a simple slide in the first step from slow to pro :slight_smile:
And would be nice to see the time during planning.

Both Bikerouter (more user-friendly based on brouter) and brouter support that with ‘profiles’.

If the app could use your browser saved profile?

Thanks!I’ll try. :heart_hands:

Thanks so much for trying it out! I really appreciate your feedback and suggestions based on your experience. Adding filters to the “My Routes” section definitely needs some careful thought to balance functionality with a clean UI/UX. Regarding the print feature—did you mean the browser’s native print function? That’s a great catch! I’ll prioritize fixing this bug first. As for the filter feature, I’ll take some time to think through how to best integrate it.

Thanks again! :heart_hands:

2 Likes

First of all, thank you so much for your feedback!
I don’t think building full user profiles into the platform is really necessary. The core goal of x-route has always been laser-focused on delivering the ultimate route planning experience, and users usually already know their own stats anyway. That said, if we were to leverage that information to estimate distance and travel time, that could actually be really valuable—and definitely a feature worth building! :rofl: