DeskGyver

Speed Auditor — GPX vs Posted Speed Limits

Upload a GeoJSON of road speed limits and a GPX track to audit every point against the posted limit. Get per-segment max & average speeds, a speeding breakdown, and an overall driver behavior grade. Runs entirely in your browser.

Frequently Asked Questions

What format does the speed-limit GeoJSON need to be in?
A FeatureCollection of LineString or MultiLineString features representing road centerlines. Each feature should have a posted-speed property — common names like maxspeed, speed_limit, speedlimit, or speed are auto-detected. Values like "35 mph", "50 km/h", or plain numbers are all supported.
How is each GPX point matched to a road?
Every track point is projected onto the nearest road centerline within a configurable tolerance (default 25 m). Points farther than the tolerance are flagged "off-network" and excluded from the compliance score, exactly the same way points on roads with unknown limits are excluded.
Where does the speed value come from?
If your GPX file has a <speed> tag (Garmin and most fleet exports do, in m/s), that value is used. Otherwise speed is computed from the time and distance between consecutive points using the haversine formula. You can force "always compute" if you don't trust the recorded values.
How is the driver grade calculated?
The grade is the percentage of matched-known-limit points that were within the posted speed, with a small severity penalty when the peak overage is large. A ≥ 95%, B ≥ 85%, C ≥ 70%, D ≥ 55%, F < 55%. Points on unknown segments are not counted for or against the driver.
Are my files uploaded?
No. Both files are parsed and audited entirely in your browser. Nothing is sent to a server.

Related Tools