Speedmap visualises GPS track data on a map, colour-codes your speed relative to road speed limits, and lets you play back the route with a moving car icon. You can pin notable events, cut sections out of a recording, and save trimmed subsets as new datasets.
Click Upload CSV in the header to import a GPS track. Any CSV with at least latitude and longitude columns is supported. A column-mapping dialog opens automatically:
40.7128,-74.0060) select that column for Latitude and choose Combined with Latitude column for Longitude.After import the route is snapped to roads via TomTom to retrieve real speed limits. A yellow banner appears if TomTom is unavailable and speed limits are estimated instead.
The route is drawn colour-coded by how much the recorded speed exceeds the road speed limit at each point:
The thresholds are adjustable in the Events sidebar (the two numbered fields next to the colour swatches).
Navigating the map:
Map styles — choose Street, Night, Hybrid, or Satellite from the buttons in the top-right corner of the map. The choice is saved between sessions.
The right panel lists every GPS point where the recorded speed exceeded the speed limit by at least the Min. over limit threshold.
The sidebar only lists events visible in the current map viewport. Pan or zoom to see more — the count updates automatically.
Events can be pinned, each assigned a distinct colour. The Pinned Points panel appears at the bottom of the sidebar when at least one point is pinned.
The playback bar sits above the events list in the sidebar. During playback a car icon moves along the route on the map and the events list scrolls to keep the current point in view.
| Button | Action |
|---|---|
| ❰❰ (double-left) | Play all segments in reverse — automatically pans between segments with a smooth animation |
| ❰ (single-left) | Play current segment in reverse — stops at the segment boundary |
| ▮▮ (pause) | Pause playback at the current position |
| ❱ (single-right) | Play current segment forward — stops at the segment boundary |
| ❱❱ (double-right) | Play all segments forward — automatically pans to the next segment and continues |
| ■ (stop) | Stop playback and return to the beginning of the range |
The speed selector (10×–100×) controls how fast real time is compressed during playback. The speed is automatically adjusted when you zoom the map — faster speeds at lower zoom levels, slower at street level. You can override this for any zoom level and the preference is saved.
Segments and gaps: If the GPS track has large time gaps (e.g. the tracker was parked and went to sleep), the route is split into segments. In single-play mode (>), playback stops at the end of each segment. In all-play mode (>>), the map smoothly pans to the next segment start and playback continues automatically.
Parking badges: When playback crosses a location where the vehicle was parked (zero speed followed by a data gap), a floating ⏸ stopped Xh Xm badge appears briefly on the map at the parking spot.
Traffic stop compression: At-a-light stops (zero speed with no data gap) are automatically speed-compressed so no single stop takes more than 3 seconds of playback time.
The timeline bar runs across the bottom of the screen. It has two rows:
Seeking: Click anywhere on the main timeline to move the playhead to that time. Click and drag to scrub.
Timeline zoom: Scroll the mouse wheel over the main timeline to zoom in or out, centred on the cursor. Use the + / − buttons in the timeline control bar for step zoom. Double-click the timeline to reset to 1×. At zoom > 1× you can also click and drag the timeline to pan it.
Navigation buttons: The ⏮ button jumps to the beginning of the route; ⏭ jumps to the end.
Current time is shown on the left of the control bar (real timestamp of the playhead position). The route end time is shown on the right.
Cuts mark sections of the route as excluded. Cuts are non-destructive — they hide sections from playback, the events list, and exported data, but the original data is preserved and cuts can be undone at any time.
Creating a cut (range):
Edge trim (single marker): You can also trim using just one marker. Set only an Out point to remove everything before it (trim the beginning of the track). Set only an In point to remove everything after it (trim the end of the track). Then press X as usual.
The In and Out buttons act as toggles — pressing again (or clicking the active button) clears that marker. If a placement cannot produce any cut (e.g. the markers are too close together or at a dead end of the track), the timeline shows a brief red flash at that position and the marker is not placed.
Selecting and deleting a cut: Click on a hatched grey cut region on the timeline to select it (it becomes darker with lighter hatch lines). Press Del or Backspace to restore the selected cut.
Undo: Ctrl+Z undoes the last cut or restore action.
Clear all cuts: The Clear Cuts button in the timeline control bar removes all cuts after a confirmation prompt.
Click Save as Dataset in the timeline control bar to save the current route (with all cuts applied) as a new permanent dataset. A dialog opens with an auto-generated name based on the date and time range. You can edit the name and add optional notes before saving.
The new dataset is immediately activated and added to the dataset selector at the top of the screen. Pinned points that fall within the saved subset are carried over.
Click the icon next to the dataset selector to open the Dataset Manager. It lists all stored datasets with their stats (point count, file size, distance, max speed).
timestamp, latitude, longitude, speed_mph).Switch between datasets using the dropdown selector in the header. The last active dataset is remembered and restored on next load.
The following state is automatically saved per dataset and restored when you return:
| Key | Action |
|---|---|
| Space | Play / Pause |
| Escape | Stop playback and return to start |
| → | Step playhead forward one GPS point |
| ← | Step playhead backward one GPS point |
| Shift+→ | Play all segments forward (>>) |
| Shift+← | Play all segments in reverse (<<) |
| I | Set / clear In point |
| O | Set / clear Out point |
| X | Cut the In→Out selection |
| Ctrl+Z | Undo last cut or restore |
| Del / Backspace | Restore (delete) the selected cut |
Shortcuts are disabled when a text input or dropdown is focused.