Export sourced photo positions to GPX
Choose supported original JPEGs, inspect explicit GPS UTC and keep a complete GPX, provenance and original-photo package.
Keep originals and check explicit GPS time
Turn the embedded GPS positions in original trip photos into a sparse GPX track or waypoint set. Keep every source photo and audit exact GPS UTC ordering, equal-time ambiguity and coordinate provenance.
1–500 original JPEGs, 10 MiB each and 100 MiB total. Filename labels allow up to 512 UTF-8 bytes; the operating-system file picker may impose a shorter basename limit.
GPSDateStamp and GPSTimeStamp must explicitly provide Gregorian UTC in years 0001–9999. Hours/minutes are integers and seconds must be exact to at most 9 decimal places. No local-clock, camera-time, filename or file-time fallback; leap seconds and recurring fractions are unsupported.
- Choose all original JPEG photos for the trip.
- Select track or waypoints, set the track gap threshold and confirm WGS84 only if you know the missing datum.
- Run and inspect every UTC, source index, coordinate and ambiguity row.
- Download the ZIP; open GPX in a compatible reader and use JSON plus originals to audit provenance.
Choose connections and datum deliberately
Declared WGS-84/WGS84 is supported. A missing datum requires your explicit WGS84 assumption; a declared different datum is always refused. Source rational coordinates remain exact in JSON; GPX decimals truncate toward zero to 12 places. Exact +180° longitude is represented as −180° with an equivalence flag.
Every photo becomes one point. Exact UTC sorts the points; equal timestamps retain selection order and are marked ambiguous. Track segments split only when an adjacent time gap is strictly greater than the selected 0–86400-second threshold; waypoint mode has no track segments.
These are sparse photo positions, not a measured continuous route. No road matching, interpolation, geocoding or GPX elevation is added. Original altitude/ref/version and every present GPS field type, count, source span and SHA256 are retained; critical fields also have raw hex. For a GPS field with rawHex:null, read the original JPEG at the report’s absolute valueOffset for byteLength bytes; its SHA256 identifies those exact raw bytes.
- Use waypoint mode when a line between photos would suggest a path you cannot establish.
- A gap of exactly 3600 seconds stays in the same segment at the default threshold; 3600 seconds plus 1 ns starts another.
- Equal GPS UTC times retain source selection order and remain explicitly ambiguous.
Open every complete deliverable
The screen lists every point and copies a bounded scalar summary. Download photo-gps-package.zip for all original JPEG bytes, photo-points.gpx, complete photo-points.json and formula-safe quote-all photo-points.csv. CSV text is apostrophe-prefixed; JSON and original bytes preserve exact text.
For a GPS field with rawHex:null, read the original JPEG at the report’s absolute valueOffset for byteLength bytes; its SHA256 identifies those exact raw bytes.
| File | Purpose | Preserved |
|---|---|---|
| originals/photo-NNNN.jpg | Audit the selected source | Every original JPEG byte; source filename remains in JSON/CSV |
| photo-points.gpx | Import sparse track or waypoints | Every position and explicit GPS UTC, source name and index |
| photo-points.json | Audit complete source and GPS records | Every point, exact rationals, all GPS field spans/types/counts/hashes and critical raw hex |
| photo-points.csv | Review all points in a spreadsheet | Apostrophe-prefixed text; JSON retains exact values |
Recognize support and recover from a refusal
Baseline 8-bit SOF0 with one interleaved scan and terminal EOI; one Exif APP1 with classic little- or big-endian TIFF and GPS version 2.3/2.4. Progressive JPEG, BigTIFF, multiple-image MPF, JUMBF/APP11, XMP, trailers and unsupported structures refuse the whole queue.
Per photo: at most 4096 JPEG markers, 4 IFD directories, 512 entries per directory and 1024 entries. The entire queue allows 100000 IFD entries. Unknown GPS tags, aliased/cyclic directories, overlapping structures, malformed values or required missing fields fail atomically.
Protective output guards are GPX 4 MiB, JSON 8 MiB, CSV 8 MiB and stored ZIP 128 MiB; stricter input budgets dominate them. No photo is silently skipped and no partial package is returned on refusal or cancellation.
Processing stays in this browser; no files, names or coordinates are uploaded. The parser checks bounded JPEG/Exif structure without decoding pixels or certifying source GPS accuracy, complete JPEG/Exif conformance or device compatibility.
Any unsupported, malformed, missing-field or over-budget photo stops the entire queue. Choose supported originals or correct the source before retrying. Cancellation discards unfinished output; rerun the same selected files.
References
- M_K_Hubbert — trip photos to GPX
Complete first-person request reviewed: share photo positions as a trip GPX without manually drawing a route. No original JPEGs, browser preference, region or demand volume supplied.
- Anna — GPX from geotagged photos
Her later purpose was restoring GPS to edited photos; the subsequent ART metadata-setting resolution is retained. Her original JPEG profile and GPX coverage are unknown.
- GPX 1.1 schema
Defines supported GPX output structure; schema validity does not certify a measured route or source GPS accuracy.
- CIPA Exif standards
Exif GPS field definitions and source rational values; this tool supports the declared finite GPS 2.3/2.4 profile.
Tools in this category
Expand a tool to see its steps, options and supported formats, then open its workspace.
Photo GPS to GPXExport every supported local JPEG GPS position in explicit UTC order, with originals, source records and complete GPX/JSON/CSV ZIP.
Turn the embedded GPS positions in original trip photos into a sparse GPX track or waypoint set. Keep every source photo and audit exact GPS UTC ordering, equal-time ambiguity and coordinate provenance.
Steps
- Choose all original JPEG photos for the trip.
- Select track or waypoints, set the track gap threshold and confirm WGS84 only if you know the missing datum.
- Run and inspect every UTC, source index, coordinate and ambiguity row.
- Download the ZIP; open GPX in a compatible reader and use JSON plus originals to audit provenance.
Available options
- GPX output
- Sparse track · Waypoint set
- Track gap threshold (seconds)
- 3600
Split only when the adjacent UTC gap is strictly greater; unused in waypoint mode.
- I know a missing datum is WGS84
- Off by default
Only for an absent GPS datum; a declared other datum always refuses.
Capabilities and limits
- 1–500 original JPEGs, 10 MiB each and 100 MiB total. Filename labels allow up to 512 UTF-8 bytes; the operating-system file picker may impose a shorter basename limit.
- Baseline 8-bit SOF0 with one interleaved scan and terminal EOI; one Exif APP1 with classic little- or big-endian TIFF and GPS version 2.3/2.4. Progressive JPEG, BigTIFF, multiple-image MPF, JUMBF/APP11, XMP, trailers and unsupported structures refuse the whole queue.
- Per photo: at most 4096 JPEG markers, 4 IFD directories, 512 entries per directory and 1024 entries. The entire queue allows 100000 IFD entries. Unknown GPS tags, aliased/cyclic directories, overlapping structures, malformed values or required missing fields fail atomically.
- GPSDateStamp and GPSTimeStamp must explicitly provide Gregorian UTC in years 0001–9999. Hours/minutes are integers and seconds must be exact to at most 9 decimal places. No local-clock, camera-time, filename or file-time fallback; leap seconds and recurring fractions are unsupported.
- Declared WGS-84/WGS84 is supported. A missing datum requires your explicit WGS84 assumption; a declared different datum is always refused. Source rational coordinates remain exact in JSON; GPX decimals truncate toward zero to 12 places. Exact +180° longitude is represented as −180° with an equivalence flag.
- Every photo becomes one point. Exact UTC sorts the points; equal timestamps retain selection order and are marked ambiguous. Track segments split only when an adjacent time gap is strictly greater than the selected 0–86400-second threshold; waypoint mode has no track segments.
- These are sparse photo positions, not a measured continuous route. No road matching, interpolation, geocoding or GPX elevation is added. Original altitude/ref/version and every present GPS field type, count, source span and SHA256 are retained; critical fields also have raw hex. For a GPS field with rawHex:null, read the original JPEG at the report’s absolute valueOffset for byteLength bytes; its SHA256 identifies those exact raw bytes.
- The screen lists every point and copies a bounded scalar summary. Download photo-gps-package.zip for all original JPEG bytes, photo-points.gpx, complete photo-points.json and formula-safe quote-all photo-points.csv. CSV text is apostrophe-prefixed; JSON and original bytes preserve exact text.
- Protective output guards are GPX 4 MiB, JSON 8 MiB, CSV 8 MiB and stored ZIP 128 MiB; stricter input budgets dominate them. No photo is silently skipped and no partial package is returned on refusal or cancellation.
- Processing stays in this browser; no files, names or coordinates are uploaded. The parser checks bounded JPEG/Exif structure without decoding pixels or certifying source GPS accuracy, complete JPEG/Exif conformance or device compatibility.