Geotag photos from a GPX track.
Match each photo's timestamp to your GPS track, preview the pins, then download geotagged copies. Files never leave your device.
Timestamps, not guesses
We read DateTimeOriginal from each JPEG, apply your camera→GPS offset, find bracketing track points, and interpolate position by time. Photos outside the track or past the max-gap tolerance stay unmatched — never silently placed.
Offset is the step forums get wrong
Camera clocks drift and travel across timezones. Set the offset so camera wall-clock lines up with GPS UTC (positive if the camera is behind). Without that, every pin is wrong by hours. Need to fix the timestamps first? Use the camera clock / timezone offset tool, then come back here.
Nothing is uploaded
Parsing, matching, and EXIF writing all run in your browser (in a Web Worker so large batches stay responsive). Originals are never modified — you download copies. Already have GPS in EXIF? Map a photo folder to scrub the shoot on a map and export GeoJSON/KML.
Common questions
- How does geotagging from a GPX track work?
- We read DateTimeOriginal from each JPEG, apply your camera→GPS offset, find bracketing track points, and interpolate position by time. Photos outside the track or past the max-gap tolerance stay unmatched — never silently placed.
- Why do I need a timezone / camera clock offset?
- Camera clocks drift and travel across timezones; GPS tracks are in UTC. Without the offset, every pin is wrong by hours. Use the offset tool first if timestamps need a bulk fix.
- What happens to unmatched photos?
- They are listed as unmatched. We do not guess a location. Tighten or loosen max-gap, fix the offset, or check that the track covers that shoot.
- Are originals uploaded or overwritten?
- Neither. Everything runs in your browser. You download geotagged copies; originals are never modified in place. Free batches are JPEG today — RAW/HEIC writing is a later paid path.