{
  "slug": "gpx-simplify",
  "name": "gizza-ai/gpx-simplify",
  "version": "0.1.0",
  "title": "GPX Simplifier — Reduce Track Points with Douglas-Peucker — gizza.ai",
  "description": "Paste a GPX track and reduce its point count with Douglas-Peucker tolerance in meters while preserving route shape, endpoints, elevation and times.",
  "tags": [
    "gpx simplifier",
    "reduce gpx points",
    "douglas peucker",
    "gps track simplify",
    "gpx file size",
    "track point reduction",
    "route simplify",
    "gps cleanup"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/gpx-simplify/",
    "markdown": "https://gizza.ai/tools/gpx-simplify/index.md",
    "descriptor": "https://gizza.ai/tools/gpx-simplify/tool.json",
    "deep_link_example": "https://gizza.ai/tools/gpx-simplify/?input=%3Cgpx%3E%3Ctrk%3E%3Ctrkseg%3E%0A%3Ctrkpt%20lat%3D%2237.7749%22%20lon%3D%22-122.4194%22%3E%3Cele%3E10%3C%2Fele%3E%3Ctime%3E2026-08-06T10%3A00%3A00Z%3C%2Ftime%3E%3C%2Ftrkpt%3E%0A%3Ctrkpt%20lat%3D%2237.7750%22%20lon%3D%22-122.4193%22%3E%3C%2Ftrkpt%3E%0A%3Ctrkpt%20lat%3D%2237.7760%22%20lon%3D%22-122.4180%22%3E%3C%2Ftrkpt%3E%0A%3C%2Ftrkseg%3E%3C%2Ftrk%3E%3C%2Fgpx%3E&tolerance_meters=10&keep_every=0&decimals=6&output=gpx"
  },
  "cli": "gizza tool gpx-simplify '<gpx><trk><trkseg>\n<trkpt lat=\"37.7749\" lon=\"-122.4194\"><ele>10</ele><time>2026-08-06T10:00:00Z</time></trkpt>\n<trkpt lat=\"37.7750\" lon=\"-122.4193\"></trkpt>\n<trkpt lat=\"37.7760\" lon=\"-122.4180\"></trkpt>\n</trkseg></trk></gpx>'",
  "tool": {
    "description": "Reduce the point count of a GPX track using the Douglas-Peucker algorithm at a chosen tolerance in meters. Paste GPX XML; the tool reads <trkpt lat/lon> points, keeps endpoints and shape-critical bends, optionally keeps every Nth point, preserves kept points' elevation and time children, and returns a clean GPX 1.1 document or a summary. Use tolerance_meters to trade detail for size, decimals to control coordinate precision, and output='summary' to preview point reduction before exporting GPX.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "decimals": {
          "default": 6,
          "description": "Decimal places for output coordinates, 0–8. Six decimals is roughly 11 cm at the equator and is usually enough for GPX tracks.",
          "maximum": 8,
          "minimum": 0,
          "type": "integer"
        },
        "input": {
          "description": "The GPX document to simplify. The tool reads <trkpt lat=\"…\" lon=\"…\"> track points, preserves endpoint points plus any points needed to stay within the tolerance, and carries each kept point's <ele> and <time> children into a clean GPX 1.1 output.",
          "type": "string"
        },
        "keep_every": {
          "default": 0,
          "description": "Optional safety sampling interval: keep every Nth source point in addition to the Douglas-Peucker result. Use 0 (default) to rely only on the tolerance.",
          "minimum": 0,
          "type": "integer"
        },
        "output": {
          "default": "gpx",
          "description": "Return the simplified GPX document (default) or a short summary with original point count, kept point count, removal percentage, tolerance and approximate path lengths.",
          "enum": [
            "gpx",
            "summary"
          ],
          "type": "string"
        },
        "tolerance_meters": {
          "default": 10,
          "description": "Douglas-Peucker tolerance in meters. Higher values remove more intermediate points while allowing more shape deviation. 0 keeps every bend; 10 m is a practical default for hiking/running tracks.",
          "maximum": 1000,
          "minimum": 0,
          "type": "number"
        }
      },
      "required": [
        "input"
      ],
      "type": "object"
    }
  }
}