Choose a GPX source
Compare the quickest paths for iPhone, Apple Watch, Garmin, COROS, and Suunto.
How to get a GPX file →GPX photo geotagging on iPhone & iPad
Import a GPX track, choose camera photos in Apple Photos, then match each capture time to the route. Correct the camera clock and approve only the locations that make sense.
Last updated
The 30-second workflow
Do not have a track yet?
The useful GPX is a recorded activity with timestamps—not simply a route you planned on a map.
Compare the quickest paths for iPhone, Apple Watch, Garmin, COROS, and Suunto.
How to get a GPX file →Use Strava, OsmAnd, Gaia GPS, Guru Maps, WorkOutDoors, or an Apple Watch workout.
Recording instructions →Download the recorded workout from Garmin Connect, the COROS app, or the Suunto app.
Watch export instructions →GPX requirements
Segment breaks remain safety boundaries. For supported structure, troubleshooting and error messages, see the detailed GPX requirements.
How the suggested point is chosen
LensPin checks timestamps and segment structure, not just drawn geometry.
Clock, time zone, and daylight saving
Many cameras store local time without a time-zone offset, so travel or daylight-saving changes can shift a whole batch.
Apply the known difference only during scanning and matching.
Align one remembered place, then review the rest of the batch.
Use both sources together
A nearby iPhone photo can support the GPX point. If the sources disagree, LensPin downgrades the suggestion for review.
Your track is ready
The review screen keeps the route evidence attached to the photo instead of reducing the result to a pin.
LensPin shows the points before and after the adjusted capture time, their interval, and whether they belong to one continuous segment.
If the photo falls outside coverage or beside a segment break, the detail view explains the boundary instead of hiding it.
When both sources are enabled, agreement can support the GPX result and a large disagreement sends it to Review.
GPX parsing stays on the device, and the imported track is not retained after you restart the workflow.