HYROX Oslo 2025: Open Men results

1,254 finishers on 27 Sep 2025. Typical finish 1:24:33, fastest 10% under 1:09:07. Back to the analysis.

# Athlete Age Time Behind 1st Runs Stations Rox Ski Push Pull BBJ Row Carry Lunge WB
1 David Thorvik 🇳🇴 NOR1st of 204 aged 25-29 25-29 56:20 28:52 23:45 3:48 3:37 1:25 2:56 3:00 4:13 1:26 3:13 3:55
2 Joe Vatcher 🇬🇧 GBR1st of 120 aged 16-24 16-24 56:45 0:25 30:30 22:44 3:37 3:51 1:44 2:27 3:12 4:00 1:34 2:35 3:21
3 Steven Beattie 🇬🇧 GBR1st of 280 aged 30-34 30-34 58:08 1:48 29:06 25:16 3:50 4:09 2:25 3:09 2:51 4:11 1:50 2:47 3:54
4 Alessandro Alonzi 🇬🇧 GBR2nd of 120 aged 16-24 16-24 59:07 2:47 30:46 24:44 3:42 3:52 1:57 3:04 3:38 4:13 1:33 2:52 3:35
5 Ben Whyte 🇬🇧 GBR2nd of 204 aged 25-29 25-29 59:18 2:58 29:21 25:58 4:05 4:03 1:51 3:16 3:06 4:24 1:29 3:55 3:54
6 Rayane Kara 🇫🇷 FRA3rd of 120 aged 16-24 16-24 1:00:14 3:54 31:08 25:22 3:49 4:02 2:26 3:10 2:37 4:22 1:46 2:55 4:04
7 Ben Strong 🇬🇧 GBR2nd of 280 aged 30-34 30-34 1:00:18 3:58 30:47 25:38 3:56 4:04 2:12 3:09 3:15 4:22 1:30 3:25 3:41
8 Jørgen Krogsæter 🇳🇴 NOR3rd of 204 aged 25-29 25-29 1:00:19 3:59 31:35 24:49 4:00 3:46 1:59 3:07 3:06 4:14 1:14 3:12 4:11
9 Daniel Gorrod 🇬🇧 GBR4th of 204 aged 25-29 25-29 1:00:32 4:12 29:45 26:46 4:06 4:07 2:14 3:44 3:10 4:15 1:33 3:40 4:03
10 Carl Laurell 🇸🇪 SWE1st of 110 aged 45-49 45-49 1:00:39 4:19 32:24 24:17 4:02 4:09 1:42 2:58 2:40 4:17 1:08 2:38 4:45
11 Felix Bierwirth 🇩🇪 GER3rd of 280 aged 30-34 30-34 1:00:39 4:19 31:45 25:08 3:52 4:08 2:23 2:57 3:02 4:15 1:29 3:14 3:40
12 Matthew Quinn 🇬🇧 GBR1st of 177 aged 40-44 40-44 1:00:49 4:29 31:07 25:59 3:46 4:00 2:14 3:10 3:25 4:14 1:23 3:10 4:23
13 Rob Whittaker 🇬🇧 GBR1st of 221 aged 35-39 35-39 1:01:27 5:07 31:08 26:26 3:57 4:07 2:14 3:50 3:09 4:25 1:33 3:28 3:40
14 Karl Peers 🇬🇧 GBR2nd of 177 aged 40-44 40-44 1:01:36 5:16 32:26 25:03 4:11 3:48 1:52 2:54 3:13 4:06 1:38 3:40 3:52
15 Stephan Eriksson 🇸🇪 SWE4th of 280 aged 30-34 30-34 1:01:41 5:21 32:00 25:43 4:04 3:49 2:19 3:06 2:47 4:10 1:21 3:28 4:43
16 Nikolai Hjelle Nitter 🇳🇴 NOR2nd of 221 aged 35-39 35-39 1:01:43 5:23 31:22 26:01 4:24 3:54 2:04 3:09 3:28 4:11 1:26 3:39 4:10
17 Callum Davis 🇬🇧 GBR5th of 204 aged 25-29 25-29 1:01:43 5:23 30:41 26:49 4:19 3:54 2:00 3:51 3:42 4:11 1:50 3:25 3:56
18 Daniel Rørvik 🇳🇴 NOR3rd of 221 aged 35-39 35-39 1:01:43 5:23 30:43 27:07 3:57 4:08 1:53 3:55 3:30 4:25 1:27 3:00 4:49
19 Liam White 🇬🇧 GBR5th of 280 aged 30-34 30-34 1:01:44 5:24 31:46 26:00 4:05 3:56 2:08 3:15 3:27 4:11 1:31 3:36 3:56
20 Njål Ekre 🇳🇴 NOR6th of 280 aged 30-34 30-34 1:01:50 5:30 29:46 22:05 15:24 4:15 2:51 — 2:37 4:11 1:31 2:36 4:04
21 Florian Mogilany 🇫🇷 FRA6th of 204 aged 25-29 25-29 1:02:16 5:56 32:00 26:10 4:11 4:05 2:15 3:29 3:10 4:13 1:30 3:34 3:54
22 Simon Day 🇬🇧 GBR3rd of 177 aged 40-44 40-44 1:02:18 5:58 32:58 25:21 4:03 4:13 1:42 3:03 2:54 4:19 1:20 3:29 4:21
23 Mikkel Næss 🇳🇴 NOR4th of 120 aged 16-24 16-24 1:02:25 6:05 31:43 26:10 4:36 3:47 2:46 3:45 2:45 4:17 1:27 3:11 4:12
24 Johnnatan Rivera 🇸🇪 SWE7th of 280 aged 30-34 30-34 1:02:35 6:15 32:31 26:09 4:01 3:50 1:56 3:02 3:38 4:10 1:23 3:45 4:25
25 Daniel Friberg 🇸🇪 SWE4th of 221 aged 35-39 35-39 1:02:37 6:17 32:32 26:06 4:04 4:05 2:16 2:53 3:10 4:23 1:21 3:09 4:49
26 Eirik Frikstad 🇳🇴 NOR7th of 204 aged 25-29 25-29 1:02:46 6:26 32:29 26:16 4:04 4:01 2:04 2:55 3:04 4:15 1:33 3:02 5:22
27 Leo Lendvorsky 🇸🇰 SVK8th of 280 aged 30-34 30-34 1:02:52 6:32 31:35 27:14 4:08 4:03 2:00 4:10 3:06 4:16 1:30 3:38 4:31
28 Alexander Buck 🇬🇧 GBR8th of 204 aged 25-29 25-29 1:02:53 6:33 32:37 26:31 3:51 3:51 1:47 3:12 3:33 4:16 1:45 3:15 4:52
29 Rokas Guscinas 🇱🇹 LTU9th of 280 aged 30-34 30-34 1:03:00 6:40 33:39 25:18 4:07 4:09 2:00 3:09 2:42 4:20 1:32 3:15 4:11
30 Christian Bysted 🇩🇰 DEN5th of 221 aged 35-39 35-39 1:03:02 6:42 34:49 23:30 4:47 3:30 1:37 2:57 2:45 4:02 1:37 2:42 4:20
31 Mike Garside 🇬🇧 GBR6th of 221 aged 35-39 35-39 1:03:05 6:45 33:40 25:10 4:19 3:50 2:19 3:26 2:35 4:10 1:33 3:24 3:53
32 Aaron McPhee 🇬🇧 GBR4th of 177 aged 40-44 40-44 1:03:08 6:48 32:49 26:03 4:21 3:55 2:16 3:21 3:27 4:12 1:30 3:31 3:51
33 Simon Courtney 🇬🇧 GBR5th of 177 aged 40-44 40-44 1:03:13 6:53 31:23 27:47 4:06 4:04 1:59 3:38 4:33 4:23 1:24 3:16 4:30
34 Andrew Duchart 🇬🇧 GBR10th of 280 aged 30-34 30-34 1:03:24 7:04 31:03 28:31 3:55 4:12 2:30 3:16 3:33 4:21 1:45 3:39 5:15
35 Rui Alves 🇵🇹 POR9th of 204 aged 25-29 25-29 1:03:29 7:09 33:44 25:34 4:15 4:04 2:39 3:06 3:11 4:18 1:27 3:18 3:31
36 Patharawut Teeranumpongwanich 🇹🇭 THA10th of 204 aged 25-29 25-29 1:03:29 7:09 33:13 26:07 4:12 4:10 2:11 3:29 2:41 4:22 1:25 3:22 4:27
37 Vytautas Jazepcikas 🇱🇹 LTU7th of 221 aged 35-39 35-39 1:03:30 7:10 30:37 28:49 4:08 3:57 2:10 3:54 4:18 4:30 1:46 3:56 4:18
38 Noel Prietzel 🇩🇪 GER5th of 120 aged 16-24 16-24 1:03:38 7:18 33:05 26:03 4:33 4:02 2:03 3:26 3:21 4:17 1:26 3:15 4:13
39 Blevins Mayulu 🇮🇪 IRL11th of 204 aged 25-29 25-29 1:03:38 7:18 30:14 29:20 4:08 4:11 2:45 4:02 2:54 4:44 1:30 4:18 4:56
40 Cian Galvin 🇮🇪 IRL12th of 204 aged 25-29 25-29 1:03:50 7:30 33:04 26:35 4:16 4:03 2:03 3:07 3:26 4:19 1:51 3:49 3:57
41 Vinzent Torstensson 🇸🇪 SWE13th of 204 aged 25-29 25-29 1:03:54 7:34 34:58 24:41 4:19 3:49 2:06 3:01 3:19 3:58 1:27 3:14 3:47
42 Mattias Malchau 🇩🇰 DEN11th of 280 aged 30-34 30-34 1:04:23 8:03 35:00 24:50 4:37 4:03 2:06 3:07 2:41 4:10 1:18 3:06 4:19
43 Anders Borggaard 🇩🇰 DEN8th of 221 aged 35-39 35-39 1:04:24 8:04 33:02 27:18 4:10 4:14 1:44 3:26 4:01 4:26 1:11 4:12 4:04
44 Simon Frääs 🇸🇪 SWE12th of 280 aged 30-34 30-34 1:04:32 8:12 32:33 27:51 4:14 4:00 1:50 2:56 4:10 4:14 1:30 3:24 5:47
45 Abdulaziz Alhouti 🇰🇼 KUW13th of 280 aged 30-34 30-34 1:04:34 8:14 31:34 28:50 4:13 4:06 2:14 3:32 3:55 4:25 1:52 3:58 4:48
46 Leon Kofoed Andersen 🇩🇰 DEN14th of 280 aged 30-34 30-34 1:04:34 8:14 30:04 30:41 3:53 4:12 3:16 3:35 2:55 4:26 1:32 3:52 6:53
47 Augustin Tonnel 🇫🇷 FRA14th of 204 aged 25-29 25-29 1:04:54 8:34 33:55 26:37 4:26 4:04 1:50 3:16 3:53 4:20 1:32 3:16 4:26
48 Liam Scott 🇬🇧 GBR15th of 204 aged 25-29 25-29 1:04:56 8:36 33:22 27:19 4:19 4:06 2:14 3:30 2:59 4:18 1:41 3:45 4:46
49 Jordan Swift 🇬🇧 GBR15th of 280 aged 30-34 30-34 1:05:03 8:43 33:40 27:14 4:14 3:56 2:25 3:22 4:01 4:18 1:26 3:26 4:20
50 Lars Kåre Helgesen 🇳🇴 NOR16th of 204 aged 25-29 25-29 1:05:04 8:44 33:18 27:24 4:28 4:11 1:55 3:37 3:06 4:27 1:27 3:36 5:05
51 Thomas Ødegård 🇳🇴 NOR9th of 221 aged 35-39 35-39 1:05:13 8:53 32:13 28:46 4:19 4:16 2:23 3:36 3:49 4:16 1:30 3:14 5:42
52 Tom Race 🇬🇧 GBR6th of 120 aged 16-24 16-24 1:05:14 8:54 31:23 29:55 4:00 4:02 2:38 3:43 3:47 4:14 1:41 4:04 5:46
53 Louis Bettis 🇬🇧 GBR17th of 204 aged 25-29 25-29 1:05:15 8:55 32:16 28:18 4:45 4:16 2:31 3:51 3:21 4:35 1:33 3:38 4:33
54 Markus Johansen Westgaard 🇳🇴 NOR16th of 280 aged 30-34 30-34 1:05:16 8:56 33:07 27:44 4:29 3:57 2:16 3:17 3:23 4:27 1:09 3:37 5:38
55 Alistair Gordon 🇬🇧 GBR17th of 280 aged 30-34 30-34 1:05:20 9:00 31:13 30:06 4:07 4:00 2:19 3:47 3:57 4:22 2:07 3:46 5:48
56 Jonathan Gunnarsson 🇸🇪 SWE18th of 204 aged 25-29 25-29 1:05:21 9:01 30:59 30:23 4:03 4:05 2:22 3:51 3:50 4:25 1:35 3:59 6:16
57 Floris van Drunen 🇳🇱 NED18th of 280 aged 30-34 30-34 1:05:28 9:08 30:46 30:46 4:00 4:21 1:54 3:58 4:09 4:36 1:34 3:36 6:38
58 Jan Agertoft Nielsen 🇩🇰 DEN6th of 177 aged 40-44 40-44 1:05:33 9:13 32:59 28:11 4:28 3:48 2:20 3:19 4:03 4:39 1:17 3:58 4:47
59 Aaron Feeney 🇬🇧 GBR19th of 204 aged 25-29 25-29 1:05:54 9:34 34:10 27:34 4:15 4:02 2:10 3:23 4:00 4:34 1:42 3:33 4:10
60 James Wilson 🇬🇧 GBR2nd of 110 aged 45-49 45-49 1:05:57 9:37 32:56 28:33 4:33 4:08 2:25 3:28 3:45 4:25 1:37 3:44 5:01
61 Steve Acarregui 🇺🇸 USA10th of 221 aged 35-39 35-39 1:05:58 9:38 33:14 28:22 4:28 4:08 1:59 3:43 4:01 4:12 1:29 4:05 4:45
62 Sam Hart 🇬🇧 GBR11th of 221 aged 35-39 35-39 1:05:59 9:39 34:02 27:46 4:13 4:21 2:27 3:41 3:47 4:36 1:41 3:43 3:30
63 Joseph Kemp 🇬🇧 GBR12th of 221 aged 35-39 35-39 1:05:59 9:39 32:22 29:00 4:41 3:55 2:21 3:26 4:06 4:24 1:39 3:59 5:10
64 Henry Johnson 🇬🇧 GBR7th of 120 aged 16-24 16-24 1:06:07 9:47 34:11 27:21 4:38 4:02 1:49 3:51 3:43 4:32 1:51 3:20 4:13
65 Pawel Palenik 🇵🇱 POL7th of 177 aged 40-44 40-44 1:06:13 9:53 34:08 27:58 4:12 4:09 2:41 3:46 3:01 4:25 1:48 3:41 4:27
66 Hippolyte Goueslain 🇫🇷 FRA8th of 120 aged 16-24 16-24 1:06:19 9:59 32:56 29:17 4:12 4:35 3:00 3:51 3:31 4:31 1:45 4:01 4:03
67 Dennis Musche 🇩🇪 GER9th of 120 aged 16-24 16-24 1:06:23 10:03 33:29 28:34 4:25 4:11 2:33 3:49 4:17 4:28 1:13 4:01 4:02
68 Joshua Chilvers 🇬🇧 GBR13th of 221 aged 35-39 35-39 1:06:24 10:04 34:08 27:34 4:47 3:59 2:06 3:25 2:57 4:26 1:38 3:45 5:18
69 Sindre Wold 🇳🇴 NOR20th of 204 aged 25-29 25-29 1:06:28 10:08 37:06 24:38 4:48 4:04 1:36 3:16 2:29 4:07 1:34 2:55 4:37
70 Jason Knight 🇬🇧 GBR21st of 204 aged 25-29 25-29 1:06:30 10:10 33:34 28:43 4:19 4:09 2:27 3:47 3:19 4:21 2:01 3:37 5:02
71 Graeme Murdoch 🇬🇧 GBR3rd of 110 aged 45-49 45-49 1:06:30 10:10 32:32 29:45 4:18 4:15 2:18 3:48 3:47 4:38 1:52 4:15 4:52
72 Alastair McKie 🇬🇧 GBR14th of 221 aged 35-39 35-39 1:06:30 10:10 32:10 30:16 4:08 4:17 2:13 4:19 3:36 4:26 1:52 4:16 5:17
73 Jad Cherqaoui 🇲🇦 MAR10th of 120 aged 16-24 16-24 1:06:37 10:17 33:32 28:43 4:26 4:20 2:43 3:25 2:55 4:32 1:59 3:55 4:54
74 Michael Abildgaard Haladyn 🇩🇰 DEN4th of 110 aged 45-49 45-49 1:06:39 10:19 33:27 28:47 4:30 4:05 2:20 3:34 3:52 4:25 1:40 4:06 4:45
75 Michael Scott 🇬🇧 GBR19th of 280 aged 30-34 30-34 1:06:44 10:24 34:13 28:19 4:17 3:55 2:41 3:16 3:48 4:29 1:35 3:47 4:48
76 Kai-Lon Chan 🇬🇧 GBR15th of 221 aged 35-39 35-39 1:06:44 10:24 33:27 28:37 4:43 4:04 2:29 2:58 4:14 4:27 1:40 4:13 4:32
77 Phillip Nielsen 🇩🇰 DEN22nd of 204 aged 25-29 25-29 1:06:55 10:35 35:15 27:28 4:17 4:07 2:11 3:27 3:20 4:10 1:43 3:52 4:38
78 Christian Overgaard 🇩🇰 DEN11th of 120 aged 16-24 16-24 1:06:55 10:35 33:33 28:57 4:31 4:15 2:01 3:46 4:02 4:37 1:35 4:15 4:26
79 Jakob Sande 🇳🇴 NOR16th of 221 aged 35-39 35-39 1:06:59 10:39 33:51 28:33 4:39 4:13 2:11 4:00 4:10 4:23 1:20 4:00 4:16
80 Martin Puumalainen 🇸🇪 SWE1st of 82 aged 50-54 50-54 1:07:00 10:40 34:41 27:03 5:20 4:09 1:58 3:10 4:12 4:17 1:23 4:17 3:37
81 Kieran Matthew 🇬🇧 GBR20th of 280 aged 30-34 30-34 1:07:01 10:41 32:52 30:04 4:07 4:15 2:41 3:42 3:42 4:24 1:52 3:50 5:38
82 Johan Andersson 🇸🇪 SWE8th of 177 aged 40-44 40-44 1:07:05 10:45 34:05 28:15 4:49 4:11 2:09 3:26 3:43 4:18 1:35 3:42 5:11
83 Adam Clark 🇬🇧 GBR21st of 280 aged 30-34 30-34 1:07:06 10:46 34:47 27:43 4:42 4:14 1:52 3:34 4:17 4:27 1:18 3:52 4:09
84 Søren Sandager Petersen 🇩🇰 DEN17th of 221 aged 35-39 35-39 1:07:12 10:52 35:46 26:35 4:55 4:13 2:15 3:21 3:56 4:18 1:29 3:36 3:27
85 Stefan Denic 🇬🇧 GBR22nd of 280 aged 30-34 30-34 1:07:15 10:55 35:51 27:00 4:28 4:00 2:04 3:31 3:42 4:20 1:38 4:00 3:45
86 James Borrill 🇬🇧 GBR23rd of 280 aged 30-34 30-34 1:07:21 11:01 34:06 28:54 4:25 4:03 2:21 3:36 3:35 4:22 1:37 3:59 5:21
87 Nick Steenbergen 🇬🇧 GBR18th of 221 aged 35-39 35-39 1:07:32 11:12 33:40 29:08 4:49 4:20 2:26 3:58 4:05 4:39 1:46 3:37 4:17
88 Tim Andersson 🇸🇪 SWE12th of 120 aged 16-24 16-24 1:07:33 11:13 36:18 26:40 4:39 4:30 1:58 3:19 3:22 4:20 1:23 3:34 4:14
89 Robin Amundsen 🇳🇴 NOR19th of 221 aged 35-39 35-39 1:07:33 11:13 34:49 28:25 4:23 4:04 2:24 2:51 4:11 4:22 1:16 3:58 5:19
90 Lars Jingfors 🇸🇪 SWE24th of 280 aged 30-34 30-34 1:07:36 11:16 36:03 27:11 4:26 4:08 1:54 3:10 3:34 4:26 1:44 4:04 4:11
91 Christian Poppe 🇳🇴 NOR20th of 221 aged 35-39 35-39 1:07:44 11:24 35:02 28:08 4:38 4:19 1:42 3:01 3:13 4:15 1:35 3:42 6:21
92 Oskars Liepins 🇱🇻 LAT9th of 177 aged 40-44 40-44 1:07:47 11:27 38:08 24:52 4:51 3:57 1:38 3:05 3:21 4:16 1:25 3:16 3:54
93 Thomas Massoud-Holgeid 🇳🇱 NED23rd of 204 aged 25-29 25-29 1:07:51 11:31 37:23 25:45 4:48 4:01 2:30 3:16 2:42 4:19 1:34 3:12 4:11
94 Harrison Tricker 🇳🇿 NZL25th of 280 aged 30-34 30-34 1:07:52 11:32 34:41 29:03 4:13 4:15 2:27 3:19 3:47 4:23 1:45 3:58 5:09
95 Mikel Ayani 🇸🇪 SWE10th of 177 aged 40-44 40-44 1:07:54 11:34 33:50 29:45 4:24 4:07 2:29 3:49 3:33 4:34 1:45 3:59 5:29
96 James 23 Taylor 🇬🇧 GBR5th of 110 aged 45-49 45-49 1:07:58 11:38 35:01 27:51 5:10 3:57 2:22 3:03 3:43 4:19 1:58 3:21 5:08
97 Luke Finn 🇬🇧 GBR26th of 280 aged 30-34 30-34 1:07:58 11:38 34:22 28:47 4:54 4:02 2:16 3:26 3:53 4:18 1:40 3:32 5:40
98 Rafael Böhm 🇩🇪 GER27th of 280 aged 30-34 30-34 1:08:02 11:42 35:49 27:39 4:39 3:46 2:04 3:10 3:40 4:16 1:37 4:31 4:35
99 Jonatan Bohman 🇸🇪 SWE28th of 280 aged 30-34 30-34 1:08:03 11:43 35:58 27:44 4:27 4:11 2:01 3:09 3:37 4:26 1:15 3:59 5:06
100 Adrian Ribe 🇳🇴 NOR29th of 280 aged 30-34 30-34 1:08:04 11:44 34:38 28:56 4:35 4:20 2:48 4:13 2:44 4:26 1:45 3:35 5:05
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