{
  "slug": "fit-file-decoder",
  "name": "gizza-ai/fit-file-decoder",
  "version": "0.1.0",
  "title": "FIT File Decoder — Summary, CSV, or GPX from a .fit Activity — gizza.ai",
  "description": "Decode a Garmin/ANT .fit activity file (pasted as base64) into a readable summary, a per-record CSV, or a GPX track — locally in your browser, no upload.",
  "tags": [
    "fit file decoder",
    "fit to csv",
    "fit to gpx",
    "garmin fit decoder",
    "decode fit file",
    "fit activity parser",
    "fit file viewer"
  ],
  "category": "utilities",
  "urls": {
    "page": "https://gizza.ai/tools/fit-file-decoder/",
    "markdown": "https://gizza.ai/tools/fit-file-decoder/index.md",
    "descriptor": "https://gizza.ai/tools/fit-file-decoder/tool.json",
    "deep_link_example": "https://gizza.ai/tools/fit-file-decoder/?data=Base64%20of%20your%20.fit%20file%20%E2%80%94%20starts%20with%20DhB%E2%80%A6%20and%20decodes%20to%20bytes%20beginning%20with%20the%20.FIT%20header%20signature&format=summary"
  },
  "cli": "gizza tool fit-file-decoder \"Base64 of your .fit file — starts with DhB… and decodes to bytes beginning with the .FIT header signature\"",
  "tool": {
    "description": "Decode a binary Garmin/ANT FIT activity file (supplied as base64) into readable output. Choose summary for the protocol/profile version, record count, time range, GPS bounding box and the session totals and averages (sport, distance, time, calories, speed, heart rate, power, ascent/descent); csv for one row per record with timestamp, latitude, longitude, altitude, distance, speed, heart rate, cadence and power; or gpx for a GPX 1.1 track with <ele>, <time> and heart-rate/cadence/power extensions. Handles little- and big-endian FIT, compressed timestamps, and developer fields (skipped). Positions are converted from semicircles to degrees; unknown messages are ignored, not errored. Runs locally.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "description": "The .fit file contents encoded as base64 (standard or URL-safe alphabet, whitespace tolerated). Decode the binary FIT activity file to base64 first; the raw bytes must start with the 12-byte FIT header carrying the \".FIT\" signature. Maximum 8 MiB decoded.",
          "type": "string"
        },
        "format": {
          "default": "summary",
          "description": "Output shape: summary (header, record count, time range, GPS bounding box and the session totals/averages), csv (one row per record with timestamp, position, altitude, distance, speed, heart rate, cadence and power), or gpx (a GPX 1.1 track with elevation, time and heart-rate/cadence/power extensions). Default summary.",
          "enum": [
            "summary",
            "csv",
            "gpx"
          ],
          "type": "string"
        }
      },
      "required": [
        "data"
      ],
      "type": "object"
    }
  }
}