Indoor · Ride

FTP test (20 min)

Tuesday, 06 October 2026 · 19:59Z2Indoor TrainerSmart trainerNew power bests: 5 min, 8 min, 10 min, 15 min, 20 min

Route

Route

Key data

Distance
35.2km
Moving time
1:05 h
total 1:05:00
Elevation
0m
Avg speed
32.5km/h
max 38.3 km/h
Avg power
200W
2.68 W/kg · max 310 W
Normalized Power
230W
3.08 W/kg
Avg heart rate
–
Avg cadence
90rpm
Calories
819kcal
780 kJ of work
Training Stress
80TSS
FTP 268 W · IF 0.86
Relative Effort
–

Streams

Power, heart rate, cadence, speed & elevation · one hover for all – the map follows

Time in power zones

FTP on ride date 268 W · raw sampling (gaps >10 s excluded)
  • Z1Active recovery · ≤ 147 W31%20 min
  • Z2Endurance · 148–201 W31%20 min
  • Z3Tempo · 202–241 W0%0 min
  • Z4Threshold · 242–281 W16%11 min
  • Z5VO2max · 282–322 W22%14 min
  • Z6Anaerobic · 323–402 W0%0 min
  • Z7Neuromuscular · ≥ 403 W0%0 min

Time in HR zones

Stored at sync · boundaries not stored

No heart rate second-by-second data

Power curve

This ride vs. bests 2026 and all-time

This ride – 1 min: 291 W · 3.90 W/kg, 5 min: 289 W · 3.87 W/kg, 20 min: 283 W · 3.79 W/kg

Performance analysis

Intensity Factor
0.86
NP ÷ FTP
Variability Index
1.15
NP ÷ avg power – 1.0 = very steady
Efficiency Factor
–
NP ÷ avg heart rate – rises with a better base
Perceived exertion
4/ 10

Aerobic decoupling (Pa:HR)

Only for rides ≥ 40 min with power + HR.

Fueling for this ride

During: 30–45 g carbs/h – banana, bar, sports drink

Drink: 500–750 ml/h

After: Normal, balanced meal

Laps

5 laps
1Warm-up10.10 km19:5930.3161––900
2Opener3.15 km4:5937.9289––900
3Recovery4.71 km9:5928.3134––900
420 min test12.54 km19:5937.7283––900
5Cool-down4.71 km9:5928.3134––900

Notes & raw data

Description

No description on Strava.

All data

Show raw data
{
  "id": "demo-0223",
  "name": "FTP test (20 min)",
  "sport_type": "Ride",
  "start_date": "2026-09-30T02:59:30Z",
  "start_date_local": "2026-09-29T19:59:30",
  "trainer": true,
  "distance": 35249,
  "moving_time": 3900,
  "elapsed_time": 3900,
  "total_elevation_gain": 0,
  "average_watts": 200,
  "average_heartrate": null,
  "metrics": {
    "source": "streams",
    "power_distribution": {
      "version": 1,
      "method": "right-sample-dt-0-10s",
      "samples": [
        [
          120,
          1
        ],
        [
          125,
          35
        ],
        [
          130,
          338
        ],
        [
          135,
          653
        ],
        [
          140,
          160
        ],
        [
          145,
          13
        ],
        [
          150,
          24
        ],
        [
          155,
          225
        ],
        [
          160,
          567
        ],
        [
          165,
          323
        ],
        [
          170,
          58
        ],
        [
          175,
          2
        ],
        [
          260,
          4
        ],
        [
          265,
          11
        ],
        [
          270,
          75
        ],
        [
          275,
          169
        ],
        [
          280,
          381
        ],
        [
          285,
          380
        ],
        [
          290,
          280
        ],
        [
          295,
          141
        ],
        [
          300,
          49
        ],
        [
          305,
          7
        ],
        [
          310,
          3
        ]
      ]
    },
    "power_curve": {
      "1": 310,
      "5": 299,
      "10": 297,
      "15": 294,
      "20": 295,
      "30": 293,
      "60": 291,
      "120": 290,
      "180": 290,
      "300": 289,
      "480": 283,
      "600": 283,
      "900": 283,
      "1200": 283,
      "1800": 234,
      "2700": 223,
      "3600": 205
    },
    "decoupling_pct": null,
    "metric_sources": {
      "np": "streams",
      "variability_index": "np+summary"
    },
    "np": 230,
    "variability_index": 1.15
  },
  "type": "Ride",
  "workout_type": null,
  "timezone": "(GMT-07:00) America/Vancouver",
  "utc_offset": -25200,
  "strava_url": "https://www.strava.com/activities/demo-0223",
  "commute": false,
  "manual": false,
  "private": false,
  "visibility": "everyone",
  "flagged": false,
  "gear_id": "bdemo4",
  "gear_name": "Indoor Trainer",
  "device_name": "Smart trainer",
  "elev_high": null,
  "elev_low": null,
  "average_speed": 9.038,
  "max_speed": 10.65,
  "device_watts": true,
  "weighted_average_watts": 230,
  "max_watts": 310,
  "kilojoules": 780,
  "has_heartrate": false,
  "max_heartrate": null,
  "average_cadence": 90.1,
  "average_temp": null,
  "suffer_score": null,
  "calories": 819,
  "perceived_exertion": 4,
  "kudos_count": 4,
  "comment_count": 0,
  "athlete_count": 1,
  "photo_count": 0,
  "achievement_count": 0,
  "pr_count": 0,
  "start_latlng": null,
  "end_latlng": null,
  "location_city": null,
  "location_country": null,
  "geo": null,
  "summary_polyline": null,
  "laps": [
    {
      "name": "Warm-up",
      "lap_index": 1,
      "split": 1,
      "start_date_local": "2026-09-29T19:59:30",
      "elapsed_time": 1199,
      "moving_time": 1199,
      "distance": 10100,
      "total_elevation_gain": 0,
      "average_speed": 8.424,
      "max_speed": 8.51,
      "average_cadence": 90.1,
      "average_watts": 160.7,
      "device_watts": true,
      "start_index": 0,
      "end_index": 1199
    },
    {
      "name": "Opener",
      "lap_index": 2,
      "split": 2,
      "start_date_local": "2026-09-29T20:19:30",
      "elapsed_time": 299,
      "moving_time": 299,
      "distance": 3145.9,
      "total_elevation_gain": 0,
      "average_speed": 10.521,
      "max_speed": 10.65,
      "average_cadence": 90.1,
      "average_watts": 289.3,
      "device_watts": true,
      "start_index": 1200,
      "end_index": 1499
    },
    {
      "name": "Recovery",
      "lap_index": 3,
      "split": 3,
      "start_date_local": "2026-09-29T20:24:30",
      "elapsed_time": 599,
      "moving_time": 599,
      "distance": 4714,
      "total_elevation_gain": 0,
      "average_speed": 7.87,
      "max_speed": 10.14,
      "average_cadence": 90.1,
      "average_watts": 134.1,
      "device_watts": true,
      "start_index": 1500,
      "end_index": 2099
    },
    {
      "name": "20 min test",
      "lap_index": 4,
      "split": 4,
      "start_date_local": "2026-09-29T20:34:30",
      "elapsed_time": 1199,
      "moving_time": 1199,
      "distance": 12541.4,
      "total_elevation_gain": 0,
      "average_speed": 10.46,
      "max_speed": 10.56,
      "average_cadence": 89.9,
      "average_watts": 282.9,
      "device_watts": true,
      "start_index": 2100,
      "end_index": 3299
    },
    {
      "name": "Cool-down",
      "lap_index": 5,
      "split": 5,
      "start_date_local": "2026-09-29T20:54:30",
      "elapsed_time": 599,
      "moving_time": 599,
      "distance": 4710.3,
      "total_elevation_gain": 0,
      "average_speed": 7.864,
      "max_speed": 10.08,
      "average_cadence": 90.2,
      "average_watts": 134,
      "device_watts": true,
      "start_index": 3300,
      "end_index": 3899
    }
  ],
  "splits_metric": [],
  "segment_efforts": [],
  "best_efforts": [],
  "streams": "/streams/demo-0223.json",
  "external_id": null,
  "synced": {
    "summary": "2026-09-30T05:04:30.000Z",
    "detail": "2026-09-30T05:04:30.000Z",
    "streams": "2026-09-30T05:04:30.000Z"
  }
}