HYROX Stockholm 2025: Open Men results

1,805 finishers on 18 Dec 2025. Typical finish 1:24:46, fastest 10% under 1:09:13. Back to the analysis.

# Athlete Age Time Behind 1st Runs Stations Rox Ski Push Pull BBJ Row Carry Lunge WB
1 Erik Woodward 🇳🇴 NOR1st of 347 aged 30-34 30-34 55:44 28:06 23:14 4:28 3:52 1:55 2:53 2:57 3:59 1:06 2:41 3:51
2 Aljaž Ploj 🇸🇮 SLO1st of 280 aged 25-29 25-29 55:54 0:10 25:25 26:10 4:23 3:59 2:00 3:21 3:16 4:09 1:33 2:58 4:54
3 Reece Mc Ginley 🇮🇪 IRL2nd of 280 aged 25-29 25-29 55:59 0:15 28:03 23:28 4:33 4:08 2:05 2:52 2:52 4:08 1:20 2:43 3:20
4 Oskar Karlsson 🇸🇪 SWE1st of 190 aged 16-24 16-24 57:05 1:21 28:33 23:45 4:52 3:54 2:11 3:01 2:49 4:02 1:24 2:53 3:31
5 Adrian Lindgren 🇳🇴 NOR3rd of 280 aged 25-29 25-29 57:34 1:50 28:39 24:27 4:33 4:00 1:58 3:00 3:17 3:58 1:18 2:53 4:03
6 Matas Gedziunas 🇱🇹 LTU2nd of 190 aged 16-24 16-24 57:42 1:58 28:47 24:15 4:45 3:59 2:05 3:08 3:09 4:04 1:15 2:59 3:36
7 Burak Edis Emiroğlu 🇹🇷 TUR2nd of 347 aged 30-34 30-34 58:17 2:33 28:30 24:47 5:06 4:04 2:16 2:59 2:33 4:11 1:31 2:59 4:14
8 Tom Jones 🇬🇧 GBR3rd of 347 aged 30-34 30-34 58:54 3:10 29:09 23:56 5:53 3:42 1:46 2:25 3:40 3:55 1:08 3:18 4:02
9 Pontus Petrelius Risberg 🇸🇪 SWE4th of 347 aged 30-34 30-34 59:05 3:21 28:57 25:11 5:02 3:57 1:18 3:00 4:02 4:07 1:25 3:00 4:22
10 Iain Irving 🇬🇧 GBR1st of 234 aged 40-44 40-44 59:23 3:39 30:07 24:10 5:10 4:08 1:59 3:01 2:42 4:17 1:30 2:41 3:52
11 David Queiroz 🇵🇹 POR5th of 347 aged 30-34 30-34 59:38 3:54 29:43 25:03 4:55 3:55 2:12 3:01 2:52 4:14 1:40 3:08 4:01
12 Tyler Spence 🇬🇧 GBR6th of 347 aged 30-34 30-34 59:44 4:00 29:00 26:08 4:41 4:06 2:01 3:24 3:52 4:11 1:30 2:29 4:35
13 Johan el Bitar 🇫🇷 FRA4th of 280 aged 25-29 25-29 59:52 4:08 29:03 26:05 4:49 4:04 1:50 3:07 3:51 4:18 1:20 3:23 4:12
14 Andreas Fransén 🇸🇪 SWE3rd of 190 aged 16-24 16-24 59:52 4:08 29:01 26:14 4:42 4:07 1:46 3:43 3:39 4:13 1:18 3:33 3:55
15 Fabian Schuster 🇦🇹 AUT7th of 347 aged 30-34 30-34 1:00:04 4:20 29:27 26:02 4:40 4:05 1:51 3:27 3:32 4:16 1:21 3:15 4:15
16 Owen Drew 🇬🇧 GBR8th of 347 aged 30-34 30-34 1:00:09 4:25 28:53 26:32 4:48 3:55 1:52 3:19 3:53 4:02 1:56 3:17 4:18
17 Ryan Waterhouse 🇬🇧 GBR5th of 280 aged 25-29 25-29 1:01:02 5:18 29:58 26:24 4:44 3:55 2:11 3:38 3:43 4:04 1:29 3:11 4:13
18 Sam Dewar 🇬🇧 GBR1st of 324 aged 35-39 35-39 1:01:17 5:33 30:46 25:43 4:53 4:09 2:23 3:09 3:18 4:11 1:44 2:49 4:00
19 Joshua Lewis 🇬🇧 GBR4th of 190 aged 16-24 16-24 1:01:33 5:49 28:38 28:06 4:52 4:11 1:52 3:26 3:26 4:20 1:21 2:49 6:41
20 William Samuelsson 🇸🇪 SWE9th of 347 aged 30-34 30-34 1:01:36 5:52 30:49 25:57 4:55 3:51 1:47 3:02 3:32 4:12 1:21 3:19 4:53
21 Julian Lehrer 🇩🇪 GER2nd of 324 aged 35-39 35-39 1:01:38 5:54 30:25 25:57 5:21 3:53 2:02 2:50 3:48 4:22 1:27 3:30 4:05
22 Julien Demarteau 🇧🇪 BEL10th of 347 aged 30-34 30-34 1:01:55 6:11 30:40 25:52 5:27 4:16 2:04 3:54 2:53 4:14 1:14 3:31 3:46
23 Antoine Boulai 🇫🇷 FRA11th of 347 aged 30-34 30-34 1:02:00 6:16 29:56 27:06 5:02 4:10 2:02 3:32 3:36 4:09 1:22 3:06 5:09
24 Adam Treschow 🇸🇪 SWE1st of 198 aged 45-49 45-49 1:02:04 6:20 29:12 27:31 5:24 4:05 1:43 3:29 3:18 4:10 1:19 3:25 6:02
25 Daire Plunkett 🇮🇪 IRL3rd of 324 aged 35-39 35-39 1:02:04 6:20 29:03 27:50 5:15 4:07 2:15 3:49 4:03 4:26 1:19 3:24 4:27
26 Joona Karonen 🇫🇮 FIN12th of 347 aged 30-34 30-34 1:02:06 6:22 30:16 26:34 5:21 4:07 1:38 3:11 3:55 4:15 1:24 3:38 4:26
27 Marcus Karlsson 🇸🇪 SWE13th of 347 aged 30-34 30-34 1:02:08 6:24 31:26 25:55 4:51 4:05 2:20 3:05 3:32 4:09 1:28 3:18 3:58
28 Jérémy Espagnol 🇫🇷 FRA14th of 347 aged 30-34 30-34 1:02:09 6:25 29:43 27:12 5:18 4:11 1:57 3:23 3:23 4:24 1:43 3:54 4:17
29 Djibril Diallo 🇫🇷 FRA4th of 324 aged 35-39 35-39 1:02:25 6:41 31:50 24:50 5:50 3:57 2:10 3:10 3:07 4:15 1:36 3:25 3:10
30 Linus Holmsäter 🇸🇪 SWE2nd of 234 aged 40-44 40-44 1:02:27 6:43 29:10 28:29 4:54 4:04 1:49 3:36 3:48 4:15 1:34 3:37 5:46
31 Andre Sødlund 🇳🇴 NOR6th of 280 aged 25-29 25-29 1:02:30 6:46 31:05 26:35 4:56 4:14 1:51 3:30 3:37 4:23 1:28 3:20 4:12
32 Dirk Schulke 🇩🇪 GER5th of 324 aged 35-39 35-39 1:02:35 6:51 31:47 25:26 5:28 4:04 2:18 3:16 3:10 4:15 1:26 3:32 3:25
33 Tor Leander 🇸🇪 SWE7th of 280 aged 25-29 25-29 1:02:37 6:53 31:51 25:12 5:38 3:47 1:52 3:15 3:43 4:09 1:21 3:07 3:58
34 Gordon Bieling 🇩🇪 GER3rd of 234 aged 40-44 40-44 1:02:41 6:57 30:52 26:50 5:05 4:00 2:05 2:57 3:44 4:20 1:37 3:55 4:12
35 Gustav Bertelsen 🇩🇰 DEN5th of 190 aged 16-24 16-24 1:02:45 7:01 31:33 26:04 5:13 4:02 1:59 3:22 3:43 4:10 1:42 3:33 3:33
36 Guille Mariscal 🇪🇸 ESP6th of 324 aged 35-39 35-39 1:02:45 7:01 31:08 26:25 5:17 4:05 2:28 3:18 3:14 4:23 1:47 3:23 3:47
37 Jack Mullane 🇮🇪 IRL8th of 280 aged 25-29 25-29 1:02:57 7:13 31:07 26:54 5:01 4:15 2:11 3:26 3:23 4:17 1:46 2:58 4:38
38 Vinzent Torstensson 🇸🇪 SWE9th of 280 aged 25-29 25-29 1:03:02 7:18 33:10 24:34 5:23 3:56 2:04 3:05 3:07 3:49 1:28 3:25 3:40
39 Sylvianno Lortal 🇫🇷 FRA10th of 280 aged 25-29 25-29 1:03:05 7:21 31:07 27:09 4:53 4:06 2:30 3:07 3:30 4:16 1:25 3:48 4:27
40 Valerio Sicurella 🇮🇹 ITA4th of 234 aged 40-44 40-44 1:03:13 7:29 29:05 29:32 4:41 4:14 2:12 4:16 4:33 4:29 1:22 4:23 4:03
41 Simon Foss Jensen 🇩🇰 DEN7th of 324 aged 35-39 35-39 1:03:15 7:31 28:13 30:12 4:54 4:19 2:04 4:06 4:34 4:03 1:59 4:31 4:36
42 Loïc Manine 🇫🇷 FRA11th of 280 aged 25-29 25-29 1:03:16 7:32 29:25 28:57 4:59 4:00 2:18 3:25 4:08 4:15 1:33 3:48 5:30
43 Hippolyte Goueslain 🇫🇷 FRA6th of 190 aged 16-24 16-24 1:03:19 7:35 30:35 27:45 5:04 4:22 2:47 3:28 3:03 4:20 1:43 3:52 4:10
44 Damien Brenard 🇧🇪 BEL15th of 347 aged 30-34 30-34 1:03:25 7:41 29:32 29:12 4:46 4:13 2:00 3:05 3:38 4:22 1:29 5:10 5:15
45 Tobias Jäger 🇸🇪 SWE8th of 324 aged 35-39 35-39 1:03:27 7:43 28:35 29:39 5:18 4:02 1:58 3:25 3:53 4:13 1:17 4:08 6:43
46 Alexander Aristia Rojas 🇸🇪 SWE16th of 347 aged 30-34 30-34 1:03:31 7:47 32:30 25:37 5:26 4:00 1:41 3:03 3:07 4:11 1:50 3:46 3:59
47 Jan Agertoft Nielsen 🇩🇰 DEN5th of 234 aged 40-44 40-44 1:03:31 7:47 30:46 27:07 5:43 3:53 2:19 3:14 4:02 4:33 1:22 3:26 4:18
48 Robin Forest 🇫🇷 FRA12th of 280 aged 25-29 25-29 1:03:46 8:02 31:03 27:33 5:14 4:12 2:51 3:27 3:02 4:28 1:27 3:43 4:23
49 Teun Alberts 🇳🇱 NED17th of 347 aged 30-34 30-34 1:03:53 8:09 31:22 27:13 5:21 4:03 2:07 3:21 4:35 4:18 1:33 3:30 3:46
50 Anders Lillhager 🇸🇪 SWE9th of 324 aged 35-39 35-39 1:03:56 8:12 30:44 27:49 5:28 4:01 2:13 3:15 3:47 4:13 1:44 3:51 4:45
51 Kristoffer Hjärtström 🇸🇪 SWE10th of 324 aged 35-39 35-39 1:04:04 8:20 31:30 27:27 5:12 4:06 2:02 3:20 4:30 4:14 1:32 3:23 4:20
52 Jad Cherqaoui 🇲🇦 MAR7th of 190 aged 16-24 16-24 1:04:06 8:22 30:14 28:48 5:08 4:14 2:31 3:51 3:10 4:25 1:44 3:54 4:59
53 Fredrik Olsson 🇸🇪 SWE6th of 234 aged 40-44 40-44 1:04:10 8:26 30:49 27:54 5:33 4:05 2:11 3:42 3:54 4:14 1:18 3:53 4:37
54 Callum Crosby 🇬🇧 GBR13th of 280 aged 25-29 25-29 1:04:14 8:30 32:13 26:33 5:33 4:07 2:10 3:22 3:37 4:18 1:30 3:23 4:06
55 Ludvig Nilheim 🇸🇪 SWE2nd of 198 aged 45-49 45-49 1:04:14 8:30 30:54 28:22 5:04 3:58 1:46 3:30 4:11 4:31 1:27 3:55 5:04
56 Markus Norberg Väyrynen 🇸🇪 SWE14th of 280 aged 25-29 25-29 1:04:19 8:35 32:36 25:15 6:34 4:07 2:12 3:24 3:16 4:22 1:31 3:03 3:20
57 Romain Maleuvre 🇫🇷 FRA15th of 280 aged 25-29 25-29 1:04:24 8:40 32:12 27:14 5:03 4:01 2:14 3:39 3:34 4:20 1:40 3:41 4:05
58 Jakob Sande 🇳🇴 NOR11th of 324 aged 35-39 35-39 1:04:24 8:40 30:41 28:38 5:10 4:09 2:21 3:57 4:33 4:20 1:20 3:36 4:22
59 Søren Sandager Petersen 🇩🇰 DEN12th of 324 aged 35-39 35-39 1:04:26 8:42 33:26 25:41 5:25 4:09 2:14 3:02 3:25 4:09 1:22 3:49 3:31
60 Romain Marchese 🇫🇷 FRA13th of 324 aged 35-39 35-39 1:04:36 8:52 30:12 29:29 4:59 4:18 2:20 3:29 3:37 4:28 1:45 3:43 5:49
61 Michael Girvan 🇬🇧 GBR18th of 347 aged 30-34 30-34 1:04:40 8:56 31:56 27:48 5:02 4:04 2:17 3:36 3:13 4:31 1:41 3:29 4:57
62 Mark Abbott 🇮🇪 IRL16th of 280 aged 25-29 25-29 1:04:48 9:04 30:12 29:20 5:20 4:22 2:21 3:51 3:43 4:49 1:33 4:01 4:40
63 Charel Tanson 🇱🇺 LUX8th of 190 aged 16-24 16-24 1:04:50 9:06 32:25 27:04 5:24 4:05 1:57 3:26 3:53 4:15 1:52 3:03 4:33
64 Jordan Douglas Peters 🇦🇺 AUS19th of 347 aged 30-34 30-34 1:04:51 9:07 30:33 28:53 5:30 4:06 2:02 4:12 3:29 4:31 1:44 3:04 5:45
65 Brandon Hassan 🇮🇪 IRL9th of 190 aged 16-24 16-24 1:04:52 9:08 32:00 27:52 5:06 4:30 2:06 3:29 3:14 4:34 1:29 3:45 4:45
66 Daniel Widjaja 🇨🇭 SUI7th of 234 aged 40-44 40-44 1:05:02 9:18 32:05 27:42 5:20 4:24 2:40 3:26 3:27 4:16 1:37 3:40 4:12
67 Brun Keller 🇩🇪 GER20th of 347 aged 30-34 30-34 1:05:08 9:24 32:18 27:23 5:32 4:09 2:26 3:07 4:02 4:19 1:42 3:31 4:07
68 William Briend 🇫🇷 FRA17th of 280 aged 25-29 25-29 1:05:10 9:26 30:28 28:57 5:50 4:01 2:02 4:05 4:09 4:11 1:14 3:47 5:28
69 Louis Belson 🇬🇧 GBR21st of 347 aged 30-34 30-34 1:05:11 9:27 31:36 28:17 5:24 4:00 2:18 3:53 3:26 4:14 1:31 3:45 5:10
70 Mantas Jencius 🇱🇹 LTU22nd of 347 aged 30-34 30-34 1:05:13 9:29 33:17 26:26 5:35 4:01 1:52 3:23 3:42 4:07 1:24 3:06 4:51
71 Sam Unsworth 🇬🇧 GBR23rd of 347 aged 30-34 30-34 1:05:20 9:36 31:22 28:05 5:58 4:19 2:23 3:29 3:54 4:33 1:29 3:45 4:13
72 Andrey Kalinin HYROX3rd of 198 aged 45-49 45-49 1:05:26 9:42 29:19 30:22 5:50 4:04 2:48 3:56 4:40 4:26 1:19 3:55 5:14
73 Enzo Jacomino 🇫🇷 FRA18th of 280 aged 25-29 25-29 1:05:28 9:44 33:43 26:10 5:41 4:04 2:14 3:11 3:42 4:16 1:27 3:30 3:46
74 Hampus Ericson 🇸🇪 SWE19th of 280 aged 25-29 25-29 1:05:29 9:45 31:10 28:50 5:35 4:08 2:20 3:44 4:36 4:21 1:44 3:37 4:20
75 Alex Rodríguez Tynninen 🇸🇪 SWE20th of 280 aged 25-29 25-29 1:05:31 9:47 28:58 30:57 5:41 4:04 3:03 3:14 4:21 4:24 1:28 4:06 6:17
76 Ioannis Papikas 🇬🇷 GRE14th of 324 aged 35-39 35-39 1:05:36 9:52 32:37 26:37 6:26 4:06 2:02 3:42 3:10 4:16 1:28 2:44 5:09
77 Joacim Lundqvist 🇸🇪 SWE15th of 324 aged 35-39 35-39 1:05:41 9:57 31:27 28:49 5:30 4:07 2:33 3:46 3:40 4:22 1:12 4:37 4:32
78 Mohammad Jafar 🇰🇼 KUW16th of 324 aged 35-39 35-39 1:05:42 9:58 31:40 28:58 5:09 4:02 2:50 4:04 4:19 4:20 1:44 3:09 4:30
79 Patrick Paul 🇩🇪 GER8th of 234 aged 40-44 40-44 1:05:46 10:02 31:08 29:27 5:16 4:06 2:06 3:12 3:32 4:28 1:42 3:40 6:41
80 Marcel Arnold 🇨🇭 SUI9th of 234 aged 40-44 40-44 1:05:48 10:04 31:46 28:55 5:12 4:13 2:33 3:44 4:07 4:27 1:26 3:30 4:55
81 Kyle Whitelaw 🇬🇧 GBR21st of 280 aged 25-29 25-29 1:05:51 10:07 30:23 30:26 5:06 4:13 2:31 3:32 3:42 4:15 1:34 4:33 6:06
82 Calum Hepworth 🇬🇧 GBR22nd of 280 aged 25-29 25-29 1:05:52 10:08 32:18 27:49 5:50 3:56 2:14 3:47 4:11 4:35 2:04 2:42 4:20
83 Olly Luck 🇬🇧 GBR10th of 190 aged 16-24 16-24 1:05:55 10:11 31:10 29:34 5:14 4:17 2:44 3:54 3:26 4:25 1:56 3:58 4:54
84 Per-Johan Svensson 🇸🇪 SWE1st of 65 aged 55-59 55-59 1:05:57 10:13 30:08 30:37 5:16 4:11 2:10 3:58 4:52 4:31 1:49 3:54 5:12
85 Max Åberg 🇸🇪 SWE11th of 190 aged 16-24 16-24 1:06:01 10:17 31:40 28:54 5:31 4:28 2:31 3:31 3:31 4:29 1:50 3:25 5:09
86 Anders Kjellen 🇳🇴 NOR4th of 198 aged 45-49 45-49 1:06:06 10:22 33:02 27:36 5:32 3:59 1:59 3:13 4:11 4:03 1:28 3:52 4:51
87 Alberto Palacios 🇲🇽 MEX12th of 190 aged 16-24 16-24 1:06:12 10:28 31:00 29:53 5:24 4:32 2:20 4:21 3:38 4:32 1:24 4:14 4:52
88 Markus Kainberger 🇦🇹 AUT23rd of 280 aged 25-29 25-29 1:06:13 10:29 32:40 27:47 5:50 4:05 2:02 3:23 4:01 4:09 1:19 4:16 4:32
89 Jossian Doignon 🇫🇷 FRA24th of 280 aged 25-29 25-29 1:06:13 10:29 32:26 28:40 5:13 4:23 2:13 3:24 3:35 4:24 1:35 4:18 4:48
90 Bosse Mildner 🇩🇪 GER13th of 190 aged 16-24 16-24 1:06:16 10:32 32:24 28:31 5:25 4:19 2:30 3:19 4:03 4:17 1:39 3:33 4:51
91 Guy Estoppey 🇨🇭 SUI17th of 324 aged 35-39 35-39 1:06:16 10:32 30:13 30:50 5:16 4:04 2:37 3:50 4:13 4:16 1:30 4:43 5:37
92 Floris van Drunen 🇳🇱 NED24th of 347 aged 30-34 30-34 1:06:17 10:33 30:11 31:10 5:00 4:18 2:22 4:21 4:09 4:22 1:32 4:21 5:45
93 Benedikt Seeger 🇩🇪 GER18th of 324 aged 35-39 35-39 1:06:18 10:34 31:52 28:51 5:39 4:11 2:33 3:41 3:31 4:27 1:33 3:40 5:15
94 David Bustos 🇸🇪 SWE5th of 198 aged 45-49 45-49 1:06:23 10:39 32:58 27:18 6:10 3:59 2:17 3:30 3:38 4:08 1:23 3:33 4:50
95 Sami Kiehelä 🇫🇮 FIN10th of 234 aged 40-44 40-44 1:06:26 10:42 31:51 29:07 5:32 4:02 2:23 3:35 4:01 4:18 1:37 4:08 5:03
96 Daniel Schmitt 🇩🇪 GER25th of 347 aged 30-34 30-34 1:06:30 10:46 31:10 29:51 5:33 4:24 2:27 3:37 4:27 4:26 1:34 3:47 5:09
97 Martin Puumalainen 🇸🇪 SWE1st of 117 aged 50-54 50-54 1:06:31 10:47 32:25 27:58 6:13 4:10 2:27 3:20 4:29 4:16 1:22 3:51 4:03
98 Patrik Bohman 🇸🇪 SWE6th of 198 aged 45-49 45-49 1:06:31 10:47 31:39 28:41 6:14 3:57 1:54 3:10 4:12 4:06 1:46 4:31 5:05
99 Sebastian Karlsson 🇸🇪 SWE26th of 347 aged 30-34 30-34 1:06:31 10:47 31:23 30:13 4:59 4:05 2:08 3:54 4:04 4:25 1:22 3:37 6:38
100 Nikolaus Kalina 🇦🇹 AUT27th of 347 aged 30-34 30-34 1:06:32 10:48 33:04 27:59 5:34 4:02 1:47 3:32 4:18 4:12 1:50 3:54 4:24
How to read

The place is among timed finishers in Open Men; the line under the name is the place in the age group. Behind 1st is the gap to the winning time. Tap a time for that race's full report, or a name for every race of that athlete.

The RoxHype app

Found your result? Beat it at your next race.

The RoxHype app is your training plan to race day: built from your splits, your kit and your race date, and adjusted every week.

  • A week-by-week plan that counts down to your race
  • Extra work on your slowest stations
  • Adjusts every week to what you actually did

Free to download. Used by more than 40,000 HYROX athletes.

RoxHype app home: days to your HYROX, your expected finish range and this week's sessions RoxHype workout player guiding a sled push, with the next exercise lined up
Find my result