Ohmforge GPS Trip Stats (GPX → speed and distance)
GPX track in: distance, moving time, average and maximum speed, climb and km splits.
How it works
Reads a GPX track from a bike computer, sports watch, phone app or Ohmforge's Pocket instruments speedometer and works out the trip: distance along the WGS84 ellipsoid, total, moving and stopped time, average, moving-average and maximum speed, elevation gain and loss, a speed profile and per-kilometre splits. Speeds come from positions and times, so jittery GPS points do not inflate the maximum.
- Distances are geodesics on the WGS84 ellipsoid between consecutive points (Karney's algorithm, the same geodesic code as RavingDesk). The GPX file is read with RavingDesk's safe XML reader; track segments stay separate, so a pause between segments adds time but no distance.
- Points are grouped into windows that span at least the chosen number of seconds. Each window gives one speed (distance ÷ time); windows slower than the stop speed count as stopped time, the fastest full window is the maximum speed. Averages: distance ÷ total time and distance ÷ moving time.
- Elevation gain and loss count only changes larger than the noise threshold (hysteresis), because GPS heights scatter by several metres. Splits interpolate the time at each full kilometre.
- The optional jitter filter drops points that lie closer than the given distance to the last kept point (the last point of each segment always stays), which removes the zig-zag a phone records while standing or walking slowly.
GPS positions scatter by a few metres, more under trees and between buildings; distances and maximum speeds from a phone are estimates. Never read a phone speedometer while driving or riding.
Sources
- Karney, C. F. F. (2013): Algorithms for geodesics, J. Geodesy 87 (Springer)
- GPX 1.1 Schema Documentation (TopoGrafix)
Part of Ohmforge
-
Ohmforge Virtual electronics workbench
Draw a circuit, switch it on, and measure it with real-feeling bench instruments.
Related tools
- RavingDesk GPS File Converter (GPX ↔ KML ↔ GeoJSON) – Convert GPX, KML and GeoJSON, simplify tracks and get length, climb, descent and duration.
- Ohmforge Magnetic Declination (WMM2025) – Magnetic declination, inclination and field strength for any place and date (2025–2030).
How to use the Ohmforge GPS Trip Stats tool
Get distance, moving time, average and maximum speed, climb and kilometre splits from a GPX track, with filters for GPS scatter.
What it is for
You recorded a ride, run or walk and want the numbers: distance, moving time, average and top speed, climb. Every fitness app counts a little differently. This tool reads a standard GPX track and works it out openly, with settings you can see and change.
It handles tracks from bike computers, sports watches, phone apps and the speedometer in Ohmforge's Pocket instruments. A trip logged there and downloaded as GPX gives the same numbers here. Distances are measured along the WGS84 ellipsoid, and speeds come from positions and times, never from a device's own speed field.
It needs a time on every track point. A route drawn on a map without times gives no speeds, and the tool tells you so.
Worked example
The second example is a phone recording of a walk: about 5 minutes out, a 10-minute coffee break (the recording paused, so the file has two track segments) and 7 minutes back. The phone recorded a point every 3 seconds with a few metres of scatter. With the stop speed at 1.5 km/h, a 15-second speed window and no jitter filter:
- Distance 1.33 km, moving time 11:57, total time 22:00.
- Moving average 6.7 km/h, maximum 9.0 km/h.
That is too fast for a walk. The scatter makes the track zig-zag, and every zig adds distance. Set the jitter filter to 8 m and run it again:
- Distance 1.05 km, moving time 11:54.
- Moving average 5.3 km/h, maximum 7.3 km/h, climb 7 m.
- A note says 141 points closer than 8 m to the previous one were left out.
The real path was about 0.98 km at 5 km/h, so the filtered result is much closer. The pause between the segments counts as stopped time and adds no distance.
How to read the result
- Distance follows the ground along the ellipsoid; climbing does not add to it.
- Moving time adds up the speed windows faster than the stop speed. Total time runs from the first to the last point, including pauses.
- Moving average is distance ÷ moving time, the number most cyclists quote. Average over total time includes every stop.
- Maximum speed is the fastest window of at least the chosen length. Longer windows ignore single GPS jumps.
- Climb counts only rises larger than the elevation noise threshold, because GPS heights scatter by several metres.
- Kilometre splits show time and speed for each full kilometre; the last split is the rest.
Tips and common mistakes
- For walking with a phone, try a jitter filter of 5–10 m. For cycling and driving, scatter matters less; leave it at 0.
- A maximum speed that looks absurd usually comes from one bad fix. Lengthen the speed window to 10 or 15 seconds.
- Set the stop speed to suit the activity: 1–2 km/h for walking, 3–5 km/h for cycling.
- Pausing and resuming a recording creates a new segment. That is good: the pause is not drawn as a straight line.
- Barometric heights from a watch are much steadier than GPS heights. Lower the elevation threshold for them.
- Never read a phone speedometer while you drive or ride. Look at the numbers afterwards.
FAQ
Why does my app show a different distance?
Apps smooth, snap to roads or drop points in different ways. This tool shows the raw geodesic distance with an optional, visible jitter filter, so you can see where the difference comes from.
Does the tool use the speed stored in my GPX file?
No. Speeds come from positions and times only, so files from all devices are treated alike.
Can I analyse a route without times?
You get an error, because every point needs a time stamp. Routes from planners have none; use RavingDesk's GPS converter for their distance.
Is my track uploaded anywhere?
The tool processes the file in memory to answer the request and does not keep it. In Ohmforge's speedometer, the trip stays in your browser until you download it.
Guide last updated:
For scripts and AI agents
- JSON API:
POST https://ohmforgegpstripstats.usefulweb.app/api/v1/calculate(same calculation as this page) - Interface description: OpenAPI 3.1 · AI guide: llms.txt
- MCP server (Streamable HTTP):
https://ohmforgegpstripstats.usefulweb.app/mcp· tool nameohmforge_gps_trip_stats
Example request
curl -s -X POST https://ohmforgegpstripstats.usefulweb.app/api/v1/calculate \
-H 'content-type: application/json' \
-d '{…see OpenAPI examples…}'