{
  "slug": "gpx-merge",
  "name": "gizza-ai/gpx-merge",
  "version": "0.1.0",
  "title": "GPX Merge — Combine Multiple GPX Files Into One Track — gizza.ai",
  "description": "Merge several GPX files, tracks, routes and waypoints into one GPX 1.1 file, ordered chronologically by timestamp. Runs in your browser; nothing is uploaded.",
  "tags": [
    "gpx merge",
    "combine gpx files",
    "merge gpx tracks",
    "join gpx",
    "gpx combiner",
    "gps track merge",
    "gpx joiner online"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/gpx-merge/",
    "markdown": "https://gizza.ai/tools/gpx-merge/index.md",
    "descriptor": "https://gizza.ai/tools/gpx-merge/tool.json",
    "deep_link_example": "https://gizza.ai/tools/gpx-merge/?input=%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Cgpx%20version%3D%221.1%22%3E%3Ctrk%3E%3Cname%3EMorning%3C%2Fname%3E%3Ctrkseg%3E%0A%20%20%3Ctrkpt%20lat%3D%2252.100%22%20lon%3D%225.100%22%3E%3Ctime%3E2024-01-01T08%3A00%3A00Z%3C%2Ftime%3E%3C%2Ftrkpt%3E%0A%3C%2Ftrkseg%3E%3C%2Ftrk%3E%3C%2Fgpx%3E&merge_mode=single-track&sort_by_time=true&dedupe=true&include_waypoints=true&track_name=Merged%20track"
  },
  "cli": "gizza tool gpx-merge '<?xml version=\"1.0\"?>\n<gpx version=\"1.1\"><trk><name>Morning</name><trkseg>\n  <trkpt lat=\"52.100\" lon=\"5.100\"><time>2024-01-01T08:00:00Z</time></trkpt>\n</trkseg></trk></gpx>'",
  "tool": {
    "description": "Merge multiple GPX files, tracks, routes, and waypoints into a single GPX 1.1 document. Paste one or more GPX documents concatenated together (each may keep its own <?xml?>/<gpx> root); every <trk>/<trkseg>/<trkpt>, <rte>/<rtept> (routes are read as track points), and <wpt> is collected regardless of which document it came from. Choose merge_mode: 'single-track' combines every point into one continuous <trkseg>, 'single-track-multi-segment' keeps the original segment breaks (pauses / multi-day stages) as separate <trkseg>s in one <trk>, and 'separate-tracks' keeps each source track as its own <trk> with its name. With sort_by_time on (the default) points/segments/tracks are ordered chronologically by their <time> timestamp (untimed points keep input order and sort last); turn it off to preserve input order. dedupe drops consecutive duplicate points (same lat/lon/time) within a segment — handy where merged files overlap at their join. include_waypoints (default on) carries <wpt> markers into the output. track_name names the merged track (default \"Merged track\"). Coordinates, elevation, and timestamps are preserved verbatim, so precision survives the merge. Runs fully locally, no network access.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "dedupe": {
          "default": false,
          "description": "Drop consecutive duplicate points (identical lat, lon, and time) within each segment — useful when merged files overlap at their join. Default false.",
          "type": "boolean"
        },
        "include_waypoints": {
          "default": true,
          "description": "Carry <wpt> waypoints (name, desc, sym, elevation, time) from every source into the merged file. When off, waypoints are dropped and only tracks and routes are merged. Default true.",
          "type": "boolean"
        },
        "input": {
          "description": "One or more GPX documents to merge, pasted as text. Concatenate several files one after another (each may keep its own <?xml?> and <gpx> root); every <trk>, <rte>, and <wpt> from every document is collected. Routes (<rte>/<rtept>) are read as track points. Coordinates, elevation, and timestamps are preserved verbatim.",
          "type": "string"
        },
        "merge_mode": {
          "default": "single-track",
          "description": "How the merged file is laid out. 'single-track' (default) combines every point into one continuous <trkseg>. 'single-track-multi-segment' keeps the original segment breaks (pauses, multi-day stages) as separate <trkseg>s inside one <trk>. 'separate-tracks' keeps each source track as its own <trk>, preserving its name.",
          "enum": [
            "single-track",
            "single-track-multi-segment",
            "separate-tracks"
          ],
          "type": "string"
        },
        "sort_by_time": {
          "default": true,
          "description": "Order the merged points (single-track), segments (multi-segment), or tracks (separate-tracks) chronologically by their <time> timestamp. When off, the input order is preserved. Points with no timestamp keep their input order and sort after timed points. Default true.",
          "type": "boolean"
        },
        "track_name": {
          "default": "Merged track",
          "description": "Name for the merged track (single-track modes) and the fallback name for any unnamed source track (separate-tracks mode). Default \"Merged track\".",
          "type": "string"
        }
      },
      "required": [
        "input"
      ],
      "type": "object"
    }
  }
}