I love riding GPS routes on my Tacx trainer, but I wasn't happy with the built-in functionality for changing the elevation profile of a ride. The built-in smoothing is very slow and still leaves a lot of spikes in elevation. It is next to impossible to remove steep downhill grades that I don't want as part of my indoor training.

The GPX Smoother lets you load a GPX file and apply a few different "smoothing" algorithms to the elevation. The resulting GPX file can be saved to a file and then imported back into your Tacx trainer software.

Smooth - uses simple box-score smoothing to smooth the elevation over 5 points.
Set Range - lets you set the maximum and minimum slope.
Flatten - lets you set the maximum change in slope between any two points.

Slide the triangular handles on the smaller graph to select only a portion of the ride to smooth. This allows you create a ride similar to a Slope-Distance Catalyst ride.

The code for the GPX Smoother is on github at https://github.com/brenzy/gpx-smoother.

This is a work in progress. Drop me a line at to request changes or report issues.

Functionality Change(January 21, 2019):
When an elevation tag is missing, the GPX Smoother will add an elevation tag containing the same value as the previous point. If there is no elevation in the GPX file an arbitrary value of 100 metres will be used for elevation.

New Functionality (January 1, 2015):
Added elevation profile and changed slope to a step chart.

New Functionality (November 1, 2014):
Added a Distance vs. Slope graph for Kostya, added "Hide Original" checkbox, swap order of min and max slope boxes.

New Functionality (September 13, 2014):
Added the ability to adjust the number of points to smooth over and the ability to shift the slope upwards or downwards. Marcel, thanks for sending along these two changes!

New Functionality (March 8, 2014):
Add ability to add elevation from Google Maps Elevation Service.

New Functionality (January 26, 2014):
Added zoom to the selected portion of the ride.

New Functionality (January 12, 2014):
Use the drag handles to select the portion of the ride to be smoothed.

Bug Fix (January 7, 2014):
Trying to download large files will crash the browser. Added a message to use the copy and paste method instead. Thanks Guy!

New Functionality (December 12, 2013):
The ability to update the name and description fields of the gpx file was added. A download link was also added to make it easier to get the results.

New Functionality (November 24, 2013):
GPX files that are exported from other programs (like Map My Ride), often do not contain elevation data. The Tacx software will not import GPX files if the elevation is missing (or set to zero on the first point). The smoother will now insert an elevation of 100 metres when an elevation is missing. To get the correct elevation values, import the resulting GPX back into the Tacx trainer editor and select "Altitude" - "Load From Web".

1. Select a gpx file:
Missing elevation tags have been added and set to the value of the previous point or 100 metres.
2. If your gpx file does not contain elevation data, you can add elevation values. This could be a slow process, depending on the number of points in your gpx file. The elevation service is subject to usage limits of 25,000 total locations per 24 hour period, so this functionality may be temporarily unavailable.
3. Smooth the data:
4. Check out the resulting slope. Hover over a point to see details:
Original New Slope
Average Slope:
5. Slide the triangles in the graph below to zoom in on a portion of the ride and to select that portion of the ride to be smoothed.
8. Try different smoothing:
This file is too large to download, please copy and paste the result in step 6 instead.
8. If the download button does not work, copy (right click, Select all, Copy) the contents of the box below (which contains the resulting gpx) and save to a gpx file.