tuliq
Runs in your browser

GPX Cleaner

Checks every <trk>/<trkseg> track in a GPX file for the point-to-point problems a map view doesn't surface: a point that exactly repeats its predecessor's coordinates (a duplicate GPS fix), a timestamp earlier than the one before it (a clock jump or bad log merge), a gap of more than five minutes between consecutive timestamped points, and a point-to-point speed implying faster than roughly 360 km/h (almost certainly a bad fix, not real movement). Timestamp-based checks only run where both points in a pair have a <time>. Duplicate-point removal is the one fix applied automatically on request — dropping an exact repeat can't lose information a neighboring identical point didn't already carry — producing a cleaned copy for download. Deliberately out of scope for this version: stationary-cluster detection, elevation-spike detection, and route simplification/smoothing all need a tunable algorithm choice rather than a clear threshold. Nothing is uploaded; every check and fix runs in your browser.

Nothing is uploaded — read and checked directly in your browser.

About this tool

A GPS logger's raw track is rarely as clean as it looks once you check point-to-point instead of just glancing at the map. This tool checks four things across every <trk>/<trkseg> in a GPX file: a point that exactly repeats its predecessor's coordinates (a duplicate GPS fix — common, and the one issue this tool can also fix automatically, since dropping an exact repeat can't lose any information a neighboring identical point didn't already carry), a timestamp earlier than the one before it (a clock jump or a bad log merge — a real problem for anything computing pace or duration), a gap of more than five minutes between consecutive timestamped points (often a legitimate pause, but worth knowing about), and a point-to-point speed implying faster than roughly 360 km/h (almost certainly a bad GPS fix or a clock error, not real movement). Timestamp-based checks only run where both points in a pair actually have a <time> — a GPX file with no timestamps at all still gets the duplicate-point check, just not the time-based ones. Deliberately out of scope for this version: stationary-cluster detection, elevation-spike detection, and route simplification/smoothing all need a tunable algorithm choice rather than a single clear threshold, so they're left for a possible later version rather than guessed at here. Nothing is uploaded; every check and every fix happens in your browser.

What you can do

  • Checks a GPX track for duplicate points, timestamp problems, and physically implausible speed jumps
  • A jump of ~360 km/h between two consecutive points is flagged as almost certainly a bad fix
  • Automatically removes exact duplicate points on request — the one fix that can't lose information
  • Nothing is uploaded — every check runs entirely in your browser

How to use

Step 1

Pick a GPX file

Checks every <trk>/<trkseg> track in the file — waypoints and routes aren't in scope.

Step 2

Checks run automatically

Duplicate points, backward timestamps, long gaps, and implausible speeds, per track segment.

Step 3

Review, then download

A findings report, or a cleaned copy with exact duplicate points removed.

Example

A finding looks like this:

GPX.IMPLAUSIBLE_SPEED

Point #142 to #143 implies a speed of 8,204 km/h — almost certainly a bad GPS fix or clock error, not real movement.

That's a single bad fix, not a real 8,000 km/h moment — worth knowing about before that point skews a pace or distance calculation downstream.

How your data is handled

This tool is labeled 🟢 Browser: your file is read directly via your browser's File API and every check runs entirely client-side — nothing is uploaded, and there's no server involved anywhere in this tool. No AI model is used; every finding is a deterministic, explainable rule.

Frequently asked questions

Does this check waypoints or routes, or only tracks?+

Only <trk>/<trkseg> tracks. Waypoints (<wpt>) are standalone points with no time-series meaning, and routes (<rte>) typically don't carry per-point timestamps either — the checks here (timestamp order, gaps, speed) only make sense for an ordered, timestamped sequence of fixes.

My GPX file has no timestamps at all — is this tool still useful?+

The duplicate-point check still runs fully. Timestamp order, time-gap, and speed checks are skipped for any pair missing a timestamp on either side — with no timestamps anywhere, that's every pair, so those three checks simply won't produce findings rather than erroring.

Why is a time gap only an observation, while a backward timestamp is an error?+

A gap is routinely legitimate — a rest stop, a phone put away mid-hike. A timestamp that moves backward is a genuine logical impossibility for a single recorded track; there's no ordinary scenario that produces it, which is why it's treated as a real problem rather than just worth a look.

Why does duplicate-point removal happen automatically but nothing else does?+

Because it's the only fix here that's provably lossless — a point at the exact same coordinates as the one before it adds no information a neighboring identical point didn't already carry. A bad timestamp or an implausible speed jump can't be "corrected" without guessing at what the right value should have been, so those stay as findings for you to look at rather than being silently altered.

Does this simplify or smooth my track?+

No — this version only removes exact duplicate points. Simplification (reducing point density while preserving shape) and smoothing (filtering out GPS jitter) are different problems with their own trade-offs, and aren't part of this tool.

Related tools