Hi all,
gritmaps.com is an app that takes a planned workout from your calendar and finds a loop where the climbs & headwinds line up with your effort blocks.
Climbs and headwinds for effort blocks, descents and tailwind for recoveries.
That’s the idea in one picture: a tempo block from the workout placed on a +7.9 % climb, into an 11 km/h headwind.
Signup on https://gritmaps.com and try it out! It’s in beta and I’d like your help to make it an essential tool for structured training outdoors. Feedback welcome and feel free to vote on what I should build next (poll at the end) ![]()
How it works
You plan the session in Intervals.icu as usual:
Gritmaps reads it from your calendar:
Route search is treated as an optimisation problem: from your start point it generates candidate loops in 8 compass directions and simulates physics, leading to a score for how well the terrain fits the session among other criteria. Some flexibility is allowed for adjusting the workout durations (inversely proportional to the intensity: hard sprints can only be adjusted by a few seconds, recovery up to couple minutes).
The physics: a simulation runs over every road segment: gravity, rolling resistance (tyre and surface), aero drag, and the wind forecast for the time you’ll pass that spot. Your FTP and weight (with the bike’s) feed it, taken from Intervals.icu. The predicted ride time is grounded in the physics and power as you follow the workout (the ride in the Timeline shot further down for instance was planned at 1h 36m and took 1h 35m).
Elevation comes from national LiDAR where it exists (0.5–2 m in Switzerland) and Copernicus 30 m elsewhere. Efforts interrupted by junctions, traffic lights or villages are penalised. It can also route hill repeats, and use spare time you give it to reach better terrain. And you can add up to 5 waypoints (a café, a climb you want in), the loop passes through every one.
Recovery rides work too, since it keeps you off the hard climbs.
Surface profiles. Routing runs on GraphHopper, the open-source engine komoot also uses, but with profiles I fine-tuned myself. There are five: two asphalt (major roads, quiet roads), two gravel (smooth, rough) and one MTB.
I spent time over the summer refining the profile rules by riding myself but that’s where your feedback can also help ![]()
To your device. One click pushes the course and the terrain-adapted workout to Garmin Connect or Wahoo. Each workout step ends at a distance on the route, so it fires where the climb starts. The app is still missing the real-time update component, it’s one of my next projects. GPX route and FIT workout can also be exported for other devices.
After the ride. The Timeline compares planned and actual. This ride shows 97 % time in target, a 62 % execution match, 1h 36m planned against 1h 35m actual, and a map coloured by heart-rate zone. It can sync the ride to Strava as an optional report, even though right now I’m waiting for the obscure approval process to increase the athlete cap.
What’s next
It’s free, go signup on https://gritmaps.com and I can’t wait for your feedback!
Below some ideas for what comes after, feel free to vote
- Live re-matching mid-ride via a connect IQ and wahoo ELMENT add-on: miss a turn and the rest of the workout moves onto the terrain still ahead
- Rain radar & temperature on the route with associated scoring
- Traffic exposure: keep off busy roads
- Native phone app (installable)
- Native phone app has turn-by-turn navigation with re-routing
- Running & trail running support
- Something else (tell me in a reply)











