Outdoor · GravelRide
Morning Ride
Route
Coloured by HR zone
Key data
- Distance
- 44.8km
- Moving time
- 1:34 h
- total 1:35:27
- Elevation
- 102m
- 30–57 m
- Avg speed
- 28.5km/h
- max 38.8 km/h
- Avg power
- –
- no power meter
- Normalized Power
- –
- Avg heart rate
- 152bpm
- max 170 bpm
- Avg cadence
- 88rpm
- Calories
- 881kcal
- 838 kJ of work
- Training Stress
- –
- FTP 247 W
- Relative Effort
- 150
- Temperature
- 24°C
Streams
Power, heart rate, cadence, speed & elevation · one hover for all – the map follows
Time in power zones
Legacy · Sync FTP unknown · boundaries not stored
No power second-by-second data
Time in HR zones
HR zones on ride date · raw sampling (gaps >10 s excluded)
- Z1Recovery · ≤ 128 bpm1%1 min
- Z2Endurance · 129–146 bpm21%20 min
- Z3Tempo · 147–160 bpm63%59 min
- Z4Threshold · 161–172 bpm15%14 min
- Z5Maximum · ≥ 173 bpm0%0 min
Power curve
This ride vs. bests 2025 and all-time
No power data
Performance analysis
- Intensity Factor
- –
- NP ÷ FTP
- Variability Index
- –
- NP ÷ avg power – 1.0 = very steady
- Efficiency Factor
- –
- NP ÷ avg heart rate – rises with a better base
- Perceived exertion
- –
Aerobic decoupling (Pa:HR)
Only for rides ≥ 40 min with power + HR.
Fueling for this ride
During: 60 g carbs/h – gel, bar or sports drink
Drink: 500–750 ml/h
After: ~30 g protein + 70–90 g carbs within 1–2 h
Laps
5 laps
| 1 | Lap 1 | 10.00 km | 21:59 | 27.3 | – | 145 | 160 | 85 | 35 |
| 2 | Lap 2 | 10.00 km | 21:06 | 28.4 | – | 149 | 164 | 82 | 24 |
| 3 | Lap 3 | 10.00 km | 20:38 | 29.1 | – | 155 | 164 | 85 | 15 |
| 4 | Lap 4 | 10.00 km | 20:29 | 29.3 | – | 157 | 170 | 81 | 20 |
| 5 | Lap 5 | 4.84 km | 10:10 | 28.5 | – | 157 | 170 | 76 | 9 |
Segments
1 segment
| Canal de l'Ourcq: Pantin–Bobigny | 4.08 km | 0.0 % | 8:43 | 28.1 | – | 148 |
Notes & raw data
Description
Drizzle all morning, so I kept it short.
All data
Show raw data
{
"id": "demo-0115",
"name": "Morning Ride",
"sport_type": "GravelRide",
"start_date": "2025-06-14T06:13:14Z",
"start_date_local": "2025-06-14T08:13:14",
"trainer": false,
"distance": 44844.5,
"moving_time": 5663,
"elapsed_time": 5727,
"total_elevation_gain": 101.7,
"average_watts": 148,
"average_heartrate": 152,
"metrics": {
"source": "streams",
"hr_distribution": {
"version": 1,
"method": "right-sample-dt-0-10s",
"samples": [
[
76,
1
],
[
78,
1
],
[
80,
1
],
[
83,
1
],
[
85,
1
],
[
87,
1
],
[
88,
1
],
[
90,
1
],
[
92,
1
],
[
94,
1
],
[
95,
1
],
[
96,
1
],
[
98,
1
],
[
100,
1
],
[
101,
1
],
[
102,
1
],
[
103,
1
],
[
104,
1
],
[
106,
2
],
[
107,
1
],
[
108,
1
],
[
109,
1
],
[
110,
2
],
[
111,
1
],
[
112,
1
],
[
113,
2
],
[
114,
1
],
[
115,
1
],
[
116,
2
],
[
117,
2
],
[
118,
3
],
[
119,
2
],
[
120,
2
],
[
121,
2
],
[
122,
1
],
[
123,
3
],
[
124,
1
],
[
125,
1
],
[
126,
1
],
[
127,
1
],
[
128,
5
],
[
129,
8
],
[
130,
15
],
[
131,
14
],
[
132,
20
],
[
133,
22
],
[
134,
19
],
[
135,
23
],
[
136,
29
],
[
137,
37
],
[
138,
46
],
[
139,
62
],
[
140,
75
],
[
141,
78
],
[
142,
96
],
[
143,
110
],
[
144,
133
],
[
145,
183
],
[
146,
231
],
[
147,
220
],
[
148,
269
],
[
149,
287
],
[
150,
244
],
[
151,
283
],
[
152,
202
],
[
153,
245
],
[
154,
279
],
[
155,
292
],
[
156,
319
],
[
157,
243
],
[
158,
232
],
[
159,
204
],
[
160,
226
],
[
161,
228
],
[
162,
173
],
[
163,
190
],
[
164,
99
],
[
165,
57
],
[
166,
44
],
[
167,
23
],
[
168,
20
],
[
169,
23
],
[
170,
2
]
]
},
"hr_curve": {
"60": 167,
"300": 163,
"1200": 159,
"3600": 156
},
"metric_sources": {
"np": "summary"
}
},
"type": "GravelRide",
"workout_type": null,
"timezone": "(GMT+02:00) Europe/Paris",
"utc_offset": 7200,
"strava_url": "https://www.strava.com/activities/demo-0115",
"commute": false,
"manual": false,
"private": false,
"visibility": "everyone",
"flagged": false,
"gear_id": "bdemo3",
"gear_name": "Gravel All-Road",
"device_name": "Bike computer",
"elev_high": 57,
"elev_low": 29.6,
"average_speed": 7.919,
"max_speed": 10.77,
"device_watts": false,
"weighted_average_watts": null,
"max_watts": null,
"kilojoules": 838.1,
"has_heartrate": true,
"max_heartrate": 170,
"average_cadence": 87.9,
"average_temp": 24,
"suffer_score": 150,
"calories": 881,
"perceived_exertion": null,
"kudos_count": 12,
"comment_count": 0,
"athlete_count": 1,
"photo_count": 0,
"achievement_count": 0,
"pr_count": 0,
"start_latlng": [
48.85,
2.28
],
"end_latlng": [
48.85,
2.28
],
"location_city": null,
"location_country": null,
"geo": {
"start": "Paris",
"region": "Île-de-France",
"country": "FR",
"countries": [
"FR"
],
"regions": [
"Île-de-France"
],
"places": [
{
"name": "Paris",
"region": "Île-de-France",
"country": "FR"
},
{
"name": "Pantin",
"region": "Île-de-France",
"country": "FR"
},
{
"name": "Bobigny",
"region": "Île-de-France",
"country": "FR"
},
{
"name": "Bondy",
"region": "Île-de-France",
"country": "FR"
}
]
},
"summary_polyline": "y`diHu{|LaBwCWh@eU_^mAs@}@}AwJiEmGwIuJwO_FmJ}A}E}@wEsBeFc@sFCRKer@x@mCo@qI[cg@`A_GiG_EKc@g@[@Yp@iDt@YdSi{@hE_[`ByVhA{Ez@oIfBsJv@oGGw@bAaGMs@ck@aXuMq~@wBuJYh@e@s@_@oCF_@iChFEd@k@CK]uEwAsDuI}@l@|@m@{@wB_RzMwABeAc@s[mWSmBwJeIOeCyGXGQaAnAw@Ei@r@AdAq@x@g@OWoC}D{JV[h@vALO_@}@^|@MNi@wA[TwTyj@xBsCaUck@e@OwN}^uDcK{@kEJe@_A_OLmLYe@NaDKY`@aGLEXqHhDu@fAiFjGiAIwAHvAkGhAgAhFiDt@o@lOaCk@oAaL}DeLsAyF_EcKiFyKsc@ykAfFcS|GsZbRtJrAmPd@kC_FuBx@eFe@Sd@Ry@dF~EtBxAgG|CaHRaBIgAWc@_FqAM{SS[Jy@mBwAE[v@qAxG{BC[eCx@uBaSiAuFgVesBD[kJsu@r@wA{Fyd@|AKLUvIKClABmAwIJMULTvIKClABmAwIJMT}AJzFxd@s@vAjJru@EZfVdsBhAtFtB`SdCy@BZyGzBw@pADZlBvAKx@RZLzS~EpAVb@HfAS`B}C`HyAfG_FuBx@eFe@Sd@Ry@dF~EtBe@jCsAlPcRuJ}GrZgFbSrc@xkAhFxK~DbKrAxF|DdLnA`L`Cj@n@mOhDu@fAiFjGiAIwAHvAkGhAgAhFiDt@YpHMDa@`GJXO`DXd@MlL~@~NKd@z@jEtDbKvN|^d@N`Ubk@yBrCvTxj@ZUh@vALO_@}@^|@MNi@wAWZ|DzJVnCf@Np@y@@eAh@s@v@D`AoAFPxGYNdCvJdIRlBr[lWdAb@vAC~Q{Mz@vB}@l@|@m@rDtItEvAJ\\j@BDe@hCiFG^^nCd@r@Xi@vBtJtMp~@bk@`XLr@cA`GFv@w@nGgBrJ{@nIiAzEaBxViE~ZeSh{@u@Xq@hDAXf@ZJb@hG~DaA~FZbg@n@pIy@lCJdr@BSb@rFrBdF|@vE|A|E~ElJtJvOlGvIvJhE|@|AlAr@dU~]Vi@`BvC",
"laps": [
{
"name": "Lap 1",
"lap_index": 1,
"split": 1,
"start_date_local": "2025-06-14T08:13:14",
"elapsed_time": 1319,
"moving_time": 1319,
"distance": 10004.8,
"total_elevation_gain": 34.7,
"average_speed": 7.585,
"max_speed": 9.95,
"average_cadence": 85,
"device_watts": false,
"average_heartrate": 145.1,
"max_heartrate": 160,
"start_index": 0,
"end_index": 1319
},
{
"name": "Lap 2",
"lap_index": 2,
"split": 2,
"start_date_local": "2025-06-14T08:35:13",
"elapsed_time": 1266,
"moving_time": 1266,
"distance": 10000.4,
"total_elevation_gain": 24.1,
"average_speed": 7.899,
"max_speed": 10.72,
"average_cadence": 82.3,
"device_watts": false,
"average_heartrate": 149.3,
"max_heartrate": 164,
"start_index": 1319,
"end_index": 2585
},
{
"name": "Lap 3",
"lap_index": 3,
"split": 3,
"start_date_local": "2025-06-14T08:56:19",
"elapsed_time": 1238,
"moving_time": 1238,
"distance": 10001.3,
"total_elevation_gain": 14.6,
"average_speed": 8.079,
"max_speed": 10.77,
"average_cadence": 84.8,
"device_watts": false,
"average_heartrate": 154.6,
"max_heartrate": 164,
"start_index": 2585,
"end_index": 3823
},
{
"name": "Lap 4",
"lap_index": 4,
"split": 4,
"start_date_local": "2025-06-14T09:16:57",
"elapsed_time": 1229,
"moving_time": 1229,
"distance": 10000.6,
"total_elevation_gain": 19.5,
"average_speed": 8.137,
"max_speed": 10.37,
"average_cadence": 81.4,
"device_watts": false,
"average_heartrate": 156.8,
"max_heartrate": 170,
"start_index": 3823,
"end_index": 5052
},
{
"name": "Lap 5",
"lap_index": 5,
"split": 5,
"start_date_local": "2025-06-14T09:37:26",
"elapsed_time": 610,
"moving_time": 610,
"distance": 4837.4,
"total_elevation_gain": 8.8,
"average_speed": 7.93,
"max_speed": 9.72,
"average_cadence": 76.2,
"device_watts": false,
"average_heartrate": 157.1,
"max_heartrate": 170,
"start_index": 5052,
"end_index": 5662
}
],
"splits_metric": [],
"segment_efforts": [
{
"name": "Canal de l'Ourcq: Pantin–Bobigny",
"segment_id": "demo-seg-paris-ourcq",
"distance": 4080.9,
"elapsed_time": 523,
"moving_time": 523,
"average_watts": null,
"device_watts": null,
"average_heartrate": 147.6,
"max_heartrate": 159,
"average_cadence": 79.4,
"pr_rank": null,
"kom_rank": null,
"average_grade": 0,
"climb_category": 0,
"city": "Pantin",
"achievements": [],
"start_index": 1769,
"end_index": 2292
}
],
"best_efforts": [],
"streams": "/streams/demo-0115.json",
"external_id": null,
"synced": {
"summary": "2025-06-14T08:47:37.000Z",
"detail": "2025-06-14T08:47:37.000Z",
"streams": "2025-06-14T08:47:37.000Z"
}
}