{
  "slug": "triathlon-split",
  "title": "Triathlon Split & Finish Time Calculator",
  "heading": "Triathlon Split Calculator",
  "category": "fitness-health",
  "url": "https://www.revenuelab.fyi/toolbox/triathlon-split",
  "summary": "Swim, bike, run, and transition times for any triathlon distance.",
  "description": "Enter your paces for each leg plus transition estimates and get the full race timeline — including what each discipline contributes as a share of the day.",
  "formula": "Total = swim + T1 + bike + T2 + run.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=triathlon-split",
  "inputs": [
    {
      "id": "swimDist",
      "label": "Swim distance",
      "kind": "number",
      "hint": null,
      "default": 1900,
      "unit": "m",
      "min": 0,
      "max": null
    },
    {
      "id": "swimPace",
      "label": "Swim pace per 100 m",
      "kind": "number",
      "hint": null,
      "default": 110,
      "unit": "sec",
      "min": 40,
      "max": null
    },
    {
      "id": "bikeDist",
      "label": "Bike distance",
      "kind": "number",
      "hint": null,
      "default": 56,
      "unit": "mi",
      "min": 0,
      "max": null
    },
    {
      "id": "bikeMph",
      "label": "Bike speed",
      "kind": "number",
      "hint": null,
      "default": 18,
      "unit": "mph",
      "min": 5,
      "max": null
    },
    {
      "id": "runDist",
      "label": "Run distance",
      "kind": "number",
      "hint": null,
      "default": 13.1,
      "unit": "mi",
      "min": 0,
      "max": null
    },
    {
      "id": "runPace",
      "label": "Run pace",
      "kind": "number",
      "hint": null,
      "default": 9,
      "unit": "min/mi",
      "min": 4,
      "max": null
    },
    {
      "id": "t1",
      "label": "T1",
      "kind": "number",
      "hint": null,
      "default": 4,
      "unit": "min",
      "min": 0,
      "max": null
    },
    {
      "id": "t2",
      "label": "T2",
      "kind": "number",
      "hint": null,
      "default": 3,
      "unit": "min",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "total",
      "label": "Projected finish time",
      "format": "duration",
      "hint": null,
      "primary": true
    },
    {
      "id": "swim",
      "label": "Swim split",
      "format": "duration",
      "hint": null,
      "primary": false
    },
    {
      "id": "bike",
      "label": "Bike split",
      "format": "duration",
      "hint": null,
      "primary": false
    },
    {
      "id": "run",
      "label": "Run split",
      "format": "duration",
      "hint": null,
      "primary": false
    },
    {
      "id": "hours",
      "label": "Total hours",
      "format": "decimal",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Swim distance: 1900 m",
      "Swim pace per 100 m: 110 sec",
      "Bike distance: 56 mi",
      "Bike speed: 18 mph",
      "Run distance: 13.1 mi",
      "Run pace: 9 min/mi",
      "T1: 4 min",
      "T2: 3 min"
    ],
    "outputs": [
      "Projected finish time: 346",
      "Swim split: 35",
      "Bike split: 187",
      "Run split: 118",
      "Total hours: 5.77"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter swim distance (m).",
      "Enter swim pace per 100 m (sec).",
      "Enter bike distance (mi).",
      "Enter bike speed (mph).",
      "Enter run distance (mi).",
      "Enter run pace (min/mi).",
      "Enter t1 (min).",
      "Enter t2 (min).",
      "Read your projected finish time on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "swimDist": 1100,
        "swimPace": 66,
        "bikeDist": 34,
        "bikeMph": 10.799999999999999,
        "runDist": 7.859999999999999,
        "runPace": 5.3999999999999995,
        "t1": 2.4,
        "t2": 1.7999999999999998
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "swimDist": 1900,
        "swimPace": 110,
        "bikeDist": 56,
        "bikeMph": 18,
        "runDist": 13.1,
        "runPace": 9,
        "t1": 4,
        "t2": 3
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "swimDist": 3000,
        "swimPace": 176,
        "bikeDist": 90,
        "bikeMph": 28.8,
        "runDist": 20.96,
        "runPace": 14.4,
        "t1": 6.4,
        "t2": 4.800000000000001
      }
    }
  ],
  "limitations": [
    "Population formulas describe averages; individual bodies vary, especially at the extremes of height, age, or muscle mass.",
    "Results do not account for medical conditions, medication, or pregnancy.",
    "Use this as a directional reference, not a diagnosis — talk to a clinician before acting on it."
  ],
  "faq": [
    {
      "q": "Defaults look like a 70.3?",
      "a": "They are — 1.9 km swim, 56 mi bike, 13.1 mi run. Change the distances for sprint, Olympic, or full."
    },
    {
      "q": "How much do transitions matter?",
      "a": "5–8 minutes across both for age-groupers. It's the cheapest time you'll ever find, and it costs zero fitness."
    }
  ],
  "related": [],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Triathlon Split & Finish Time Calculator (https://www.revenuelab.fyi/toolbox/triathlon-split)"
}