Route
Route
Key data
- Distance
- 34.6km
- Moving time
- 1:05 h
- total 1:05:00
- Elevation
- 0m
- Avg speed
- 31.9km/h
- max 37.5 km/h
- Avg power
- 190W
- 2.50 W/kg · max 295 W
- Normalized Power
- 219W
- 2.88 W/kg
- Avg heart rate
- 155bpm
- max 181 bpm
- Avg cadence
- 90rpm
- Calories
- 779kcal
- 742 kJ of work
- Training Stress
- 80TSS
- FTP 255 W · IF 0.86
- Relative Effort
- 122
Streams
Power, heart rate, cadence, speed & elevation · one hover for all – the map follows
Time in power zones
FTP on ride date 255 W · raw sampling (gaps >10 s excluded)
- Z1Active recovery · ≤ 140 W31%20 min
- Z2Endurance · 141–191 W31%20 min
- Z3Tempo · 192–230 W0%0 min
- Z4Threshold · 231–268 W14%9 min
- Z5VO2max · 269–306 W24%16 min
- Z6Anaerobic · 307–383 W0%0 min
- Z7Neuromuscular · ≥ 384 W0%0 min
Time in HR zones
HR zones on ride date · raw sampling (gaps >10 s excluded)
- Z1Recovery · ≤ 128 bpm1%1 min
- Z2Endurance · 129–146 bpm57%37 min
- Z3Tempo · 147–160 bpm3%2 min
- Z4Threshold · 161–172 bpm3%2 min
- Z5Maximum · ≥ 173 bpm35%23 min
Power curve
This ride vs. bests 2025 and all-time
This ride – 1 min: 277 W · 3.64 W/kg, 5 min: 275 W · 3.61 W/kg, 20 min: 269 W · 3.53 W/kg
Performance analysis
- Intensity Factor
- 0.86
- NP ÷ FTP
- Variability Index
- 1.15
- NP ÷ avg power – 1.0 = very steady
- Efficiency Factor
- 1.42
- NP ÷ avg heart rate – rises with a better base
- Perceived exertion
- –
Aerobic decoupling (Pa:HR)
-16.6 %Stable – strong aerobic base
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
| 1 | Warm-up | 9.90 km | 19:59 | 29.7 | 153 | 142 | 148 | 90 | 0 |
| 2 | Opener | 3.09 km | 4:59 | 37.2 | 275 | 174 | 181 | 90 | 0 |
| 3 | Recovery | 4.62 km | 9:59 | 27.8 | 128 | 140 | 177 | 90 | 0 |
| 4 | 20 min test | 12.31 km | 19:59 | 37.0 | 269 | 176 | 180 | 90 | 0 |
| 5 | Cool-down | 4.62 km | 9:59 | 27.8 | 128 | 142 | 175 | 90 | 0 |
Notes & raw data
Description
No description on Strava.
All data
Show raw data
{
"id": "demo-0140",
"name": "FTP test (20 min)",
"sport_type": "VirtualRide",
"start_date": "2025-08-24T04:38:17Z",
"start_date_local": "2025-08-24T06:38:17",
"trainer": false,
"distance": 34571.6,
"moving_time": 3900,
"elapsed_time": 3900,
"total_elevation_gain": 0,
"average_watts": 190.3,
"average_heartrate": 154.6,
"metrics": {
"source": "streams",
"power_distribution": {
"version": 1,
"method": "right-sample-dt-0-10s",
"samples": [
[
115,
2
],
[
120,
62
],
[
125,
534
],
[
130,
515
],
[
135,
88
],
[
140,
3
],
[
145,
84
],
[
150,
467
],
[
155,
502
],
[
160,
135
],
[
165,
7
],
[
250,
5
],
[
255,
36
],
[
260,
183
],
[
265,
324
],
[
270,
362
],
[
275,
345
],
[
280,
169
],
[
285,
62
],
[
290,
13
],
[
295,
1
]
]
},
"power_curve": {
"1": 295,
"5": 283,
"10": 281,
"15": 280,
"20": 279,
"30": 278,
"60": 277,
"120": 276,
"180": 276,
"300": 275,
"480": 269,
"600": 269,
"900": 269,
"1200": 269,
"1800": 223,
"2700": 213,
"3600": 196
},
"decoupling_pct": -16.6,
"hr_distribution": {
"version": 1,
"method": "right-sample-dt-0-10s",
"samples": [
[
72,
1
],
[
75,
1
],
[
77,
1
],
[
80,
1
],
[
82,
1
],
[
84,
1
],
[
86,
1
],
[
87,
1
],
[
89,
1
],
[
91,
1
],
[
93,
1
],
[
95,
1
],
[
96,
1
],
[
98,
1
],
[
100,
1
],
[
101,
1
],
[
103,
1
],
[
104,
1
],
[
105,
1
],
[
106,
1
],
[
107,
1
],
[
108,
1
],
[
110,
1
],
[
111,
1
],
[
112,
1
],
[
113,
1
],
[
114,
1
],
[
115,
1
],
[
116,
2
],
[
117,
1
],
[
118,
1
],
[
119,
2
],
[
120,
2
],
[
122,
2
],
[
123,
2
],
[
124,
1
],
[
125,
1
],
[
126,
1
],
[
127,
1
],
[
128,
5
],
[
129,
1
],
[
130,
3
],
[
131,
1
],
[
132,
2
],
[
133,
2
],
[
134,
3
],
[
135,
4
],
[
136,
18
],
[
137,
78
],
[
138,
195
],
[
139,
225
],
[
140,
290
],
[
141,
235
],
[
142,
184
],
[
143,
341
],
[
144,
366
],
[
145,
232
],
[
146,
49
],
[
147,
29
],
[
148,
22
],
[
149,
7
],
[
150,
7
],
[
151,
7
],
[
152,
11
],
[
153,
6
],
[
154,
5
],
[
155,
9
],
[
156,
6
],
[
157,
8
],
[
158,
4
],
[
159,
8
],
[
160,
4
],
[
161,
6
],
[
162,
7
],
[
163,
7
],
[
164,
8
],
[
165,
11
],
[
166,
8
],
[
167,
8
],
[
168,
9
],
[
169,
20
],
[
170,
13
],
[
171,
14
],
[
172,
13
],
[
173,
35
],
[
174,
59
],
[
175,
187
],
[
176,
403
],
[
177,
319
],
[
178,
188
],
[
179,
133
],
[
180,
35
],
[
181,
5
]
]
},
"hr_curve": {
"60": 180,
"300": 177,
"1200": 176,
"3600": 156
},
"metric_sources": {
"np": "streams",
"variability_index": "np+summary",
"efficiency_factor": "np+summary"
},
"np": 219,
"variability_index": 1.151,
"efficiency_factor": 1.417
},
"type": "VirtualRide",
"workout_type": null,
"timezone": "(GMT+02:00) Europe/Berlin",
"utc_offset": 7200,
"strava_url": "https://www.strava.com/activities/demo-0140",
"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": 8.865,
"max_speed": 10.43,
"device_watts": true,
"weighted_average_watts": 219,
"max_watts": 295,
"kilojoules": 742.2,
"has_heartrate": true,
"max_heartrate": 181,
"average_cadence": 90,
"average_temp": null,
"suffer_score": 122,
"calories": 779,
"perceived_exertion": null,
"kudos_count": 3,
"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": "2025-08-24T06:38:17",
"elapsed_time": 1199,
"moving_time": 1199,
"distance": 9902.2,
"total_elevation_gain": 0,
"average_speed": 8.259,
"max_speed": 8.32,
"average_cadence": 90,
"average_watts": 152.9,
"device_watts": true,
"average_heartrate": 141.8,
"max_heartrate": 148,
"start_index": 0,
"end_index": 1199
},
{
"name": "Opener",
"lap_index": 2,
"split": 2,
"start_date_local": "2025-08-24T06:58:17",
"elapsed_time": 299,
"moving_time": 299,
"distance": 3087.6,
"total_elevation_gain": 0,
"average_speed": 10.326,
"max_speed": 10.43,
"average_cadence": 90,
"average_watts": 275.4,
"device_watts": true,
"average_heartrate": 173.6,
"max_heartrate": 181,
"start_index": 1200,
"end_index": 1499
},
{
"name": "Recovery",
"lap_index": 3,
"split": 3,
"start_date_local": "2025-08-24T07:03:17",
"elapsed_time": 599,
"moving_time": 599,
"distance": 4618,
"total_elevation_gain": 0,
"average_speed": 7.71,
"max_speed": 9.98,
"average_cadence": 90,
"average_watts": 127.6,
"device_watts": true,
"average_heartrate": 140.4,
"max_heartrate": 177,
"start_index": 1500,
"end_index": 2099
},
{
"name": "20 min test",
"lap_index": 4,
"split": 4,
"start_date_local": "2025-08-24T07:13:17",
"elapsed_time": 1199,
"moving_time": 1199,
"distance": 12308.4,
"total_elevation_gain": 0,
"average_speed": 10.266,
"max_speed": 10.36,
"average_cadence": 89.9,
"average_watts": 269.1,
"device_watts": true,
"average_heartrate": 175.8,
"max_heartrate": 180,
"start_index": 2100,
"end_index": 3299
},
{
"name": "Cool-down",
"lap_index": 5,
"split": 5,
"start_date_local": "2025-08-24T07:33:17",
"elapsed_time": 599,
"moving_time": 599,
"distance": 4618.7,
"total_elevation_gain": 0,
"average_speed": 7.711,
"max_speed": 9.86,
"average_cadence": 89.8,
"average_watts": 127.6,
"device_watts": true,
"average_heartrate": 142.2,
"max_heartrate": 175,
"start_index": 3300,
"end_index": 3899
}
],
"splits_metric": [],
"segment_efforts": [],
"best_efforts": [],
"streams": "/streams/demo-0140.json",
"external_id": null,
"synced": {
"summary": "2025-08-24T06:43:17.000Z",
"detail": "2025-08-24T06:43:17.000Z",
"streams": "2025-08-24T06:43:17.000Z"
}
}