{
  "id": "ftp",
  "version": "23d33f88aa0a",
  "status": "published",
  "name": "FTP Calculator",
  "question": "What is my FTP?",
  "summary": "Estimates cycling functional threshold power (FTP) as 95% of a 20-minute test, with watts per kilogram and the seven power training levels in watts.",
  "category": "sports",
  "subcategory": "fitness",
  "url": "https://www.acalculator.org/sports/ftp-calculator",
  "markdown": "https://www.acalculator.org/sports/ftp-calculator.md",
  "kind": "function",
  "method": "FTP = 0.95 × 20-minute average power; each level’s edges = FTP × its percent, rounded to whole watts.",
  "assumptions": [
    "The 20-minute test is an all-out, evenly paced effort after a warm-up; 95% of it estimates the power you could hold for about an hour.",
    "Levels follow the TrainingPeaks table as published, including its 1-point gaps (55% to 56%, 75% to 76% and so on).",
    "1 lb = 0.45359237 kg exactly."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "m": {
        "title": "I have",
        "description": "A 20-minute test result to estimate FTP from, or an FTP you already know.",
        "type": "string",
        "enum": [
          "test",
          "ftp"
        ]
      },
      "p20": {
        "title": "20-minute average power (W)",
        "description": "The average power of an all-out 20-minute effort, in watts.",
        "type": "number",
        "minimum": 1,
        "maximum": 3000
      },
      "ftp": {
        "title": "FTP (W)",
        "description": "Your functional threshold power in watts.",
        "type": "number",
        "minimum": 1,
        "maximum": 3000
      },
      "u": {
        "title": "Weight in",
        "description": "Kilograms or pounds for your body weight.",
        "type": "string",
        "enum": [
          "kg",
          "lb"
        ]
      },
      "wt": {
        "title": "Body weight (kg)",
        "description": "Your body weight in kilograms, for watts per kilogram. Leave it empty to skip.",
        "type": "number",
        "minimum": 1,
        "maximum": 1000
      },
      "wtlb": {
        "title": "Body weight (lb)",
        "description": "Your body weight in pounds, for watts per kilogram. Leave it empty to skip.",
        "type": "number",
        "minimum": 1,
        "maximum": 2200
      }
    }
  },
  "outputs": {
    "ftpW": {
      "label": "FTP",
      "description": "Functional threshold power: 95% of the 20-minute power, or the FTP you typed.",
      "format": "number"
    },
    "wkg": {
      "label": "Watts per kilogram",
      "description": "FTP ÷ body weight in kilograms.",
      "format": "number"
    },
    "z1": {
      "label": "Level 1: Active recovery",
      "description": "Active recovery: under 55% of FTP, in watts.",
      "format": "text"
    },
    "z2": {
      "label": "Level 2: Endurance",
      "description": "Endurance: 56% to 75% of FTP, in watts.",
      "format": "text"
    },
    "z3": {
      "label": "Level 3: Tempo",
      "description": "Tempo: 76% to 90% of FTP, in watts.",
      "format": "text"
    },
    "z4": {
      "label": "Level 4: Lactate threshold",
      "description": "Lactate threshold: 91% to 105% of FTP, in watts.",
      "format": "text"
    },
    "z5": {
      "label": "Level 5: VO2 max",
      "description": "VO2 max: 106% to 120% of FTP, in watts.",
      "format": "text"
    },
    "z6": {
      "label": "Level 6: Anaerobic capacity",
      "description": "Anaerobic capacity: 121% and above of FTP, in watts.",
      "format": "text"
    },
    "z7": {
      "label": "Level 7: Neuromuscular power",
      "description": "Neuromuscular power: no set percent of FTP, in watts.",
      "format": "text"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "m": "test",
      "p20": 250,
      "ftp": 240,
      "u": "kg",
      "wt": 75,
      "wtlb": 165
    },
    "outputs": {
      "ftpW": 237.5,
      "wkg": 3.1666666666666665,
      "z1": "up to 131 W",
      "z2": "133–178 W",
      "z3": "181–214 W",
      "z4": "216–249 W",
      "z5": "252–285 W",
      "z6": "287 W and up",
      "z7": "Short maximal sprints"
    },
    "text": "Your FTP is 237.5 W."
  },
  "examples": [
    {
      "given": {
        "m": "test",
        "p20": 250,
        "u": "kg",
        "wt": 75
      },
      "expect": {
        "ftpW": 237.5,
        "wkg": 3.1666666666666665,
        "z1": "up to 131 W",
        "z2": "133–178 W",
        "z3": "181–214 W",
        "z4": "216–249 W",
        "z5": "252–285 W",
        "z6": "287 W and up"
      },
      "source": "hand calculation in content.mdx: 250 × 0.95 = 237.5; 237.5 × 0.55 = 130.625 → 131; 0.56 → 133, 0.75 → 178.125 → 178; Python 3: Fraction; TrainingPeaks Help Center, How to Calculate Threshold Values for Power, Heart Rate or Pace (FTP = 95% of the best 20-minute power), https://help.trainingpeaks.com/hc/en-us/articles/204071934-How-to-Calculate-Threshold-Values-for-Power-Heart-Rate-or-Pace; TrainingPeaks, Power Training Levels (levels 1 to 7 as % of threshold power), https://www.trainingpeaks.com/blog/power-training-levels/"
    },
    {
      "given": {
        "m": "ftp",
        "ftp": 200,
        "u": "lb",
        "wtlb": 150
      },
      "expect": {
        "ftpW": 200,
        "wkg": 2.939496829131701,
        "z1": "up to 110 W",
        "z4": "182–210 W",
        "z6": "242 W and up"
      },
      "source": "hand calculation in content.mdx: 150 lb = 68.0388555 kg; 200 ÷ 68.0388555 = 2.9395; Python 3: Fraction; 200 × 0.91 = 182, × 1.05 = 210; NIST SP 811 (1 lb = 0.45359237 kg); TrainingPeaks, Power Training Levels (levels 1 to 7 as % of threshold power), https://www.trainingpeaks.com/blog/power-training-levels/"
    },
    {
      "given": {
        "m": "test",
        "p20": 300,
        "u": "kg"
      },
      "expect": {
        "ftpW": 285,
        "z2": "160–214 W",
        "z5": "302–342 W"
      },
      "source": "hand calculation in content.mdx: 300 × 0.95 = 285; 285 × 0.56 = 159.6 → 160; × 0.75 = 213.75 → 214; × 1.06 = 302.1 → 302; × 1.2 = 342; TrainingPeaks, Power Training Levels (levels 1 to 7 as % of threshold power), https://www.trainingpeaks.com/blog/power-training-levels/"
    }
  ],
  "sources": [
    "TrainingPeaks Help Center, How to Calculate Threshold Values for Power, Heart Rate or Pace (multiply the best recent 20-minute power by 95%). https://help.trainingpeaks.com/hc/en-us/articles/204071934-How-to-Calculate-Threshold-Values-for-Power-Heart-Rate-or-Pace (retrieved 2026-10-19)",
    "TrainingPeaks, Power Training Levels (Coggan levels 1 to 7 as % of threshold power). https://www.trainingpeaks.com/blog/power-training-levels/ (retrieved 2026-10-19)",
    "NIST Special Publication 811 (2008), Appendix B.8: 1 lb = 0.45359237 kg exactly. https://www.nist.gov/pml/special-publication-811 (retrieved 2026-10-19)"
  ],
  "related": [
    "vo2-max",
    "rpe"
  ],
  "changelog": []
}
