| Place | Bib | Name | Age | Sex | City | State | Swim | Trn1 | Bike | Trn2 | Run | Time |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 407 | Nathan Mueggenberg | 24 | M | Minneapolis | MN | 24:30 (5) | 1:04 (4) | 1:08:14 (6) | 0:43 (3) | 31:00 (1) | 2:05:29 |
| 2 | 398 | Elliot Wilcox | 29 | M | Hastings | MN | 19:44 (1) | 1:49 (17) | 1:06:24 (4) | 1:00 (7) | 37:08 (14) | 2:06:03 |
| 3 | 309 | Jacob Braaten | 29 | M | Superior | WI | 27:13 (13) | 0:48 (2) | 1:05:14 (1) | 0:34 (1) | 33:53 (4) | 2:07:39 |
| 4 | 386 | Todd Struckman | 50 | M | Duluth | MN | 22:15 (2) | 1:09 (5) | 1:05:38 (2) | 1:05 (11) | 38:38 (19) | 2:08:43 |
| 5 | 369 | Jaysun Pyatt | 46 | M | Vancouver | WA | 23:41 (4) | 1:03 (3) | 1:11:34 (12) | 0:43 (2) | 32:30 (3) | 2:09:29 |
| 6 | 312 | Andrew Broadmoore | 46 | M | Duluth | MN | 26:57 (12) | 1:32 (11) | 1:08:25 (7) | 0:50 (5) | 32:06 (2) | 2:09:49 |
| 7 | 347 | Beau Laniel | 29 | M | Elko New Market | MN | 25:39 (7) | 1:19 (7) | 1:08:55 (10) | 0:45 (4) | 34:31 (6) | 2:11:08 |
| 8 | 409 | Bill Kelley | 49 | M | Wrenshall | MN | 28:03 (22) | 1:14 (6) | 1:06:20 (3) | 1:11 (14) | 34:43 (7) | 2:11:28 |
| 9 | 313 | Noah Burson | 27 | M | Duluth | MN | 22:48 (3) | 1:45 (15) | 1:13:35 (15) | 1:08 (13) | 35:24 (10) | 2:14:37 |
| 10 | 341 | John Kelley | 58 | M | Duluth | MN | 28:17 (23) | 1:22 (8) | 1:08:50 (8) | 1:00 (8) | 37:43 (15) | 2:17:10 |
| 11 | 308 | Christopher Bosch | 43 | M | Saint Paul | MN | 25:52 (8) | 2:26 (28) | 1:08:55 (9) | 1:38 (32) | 40:16 (24) | 2:19:04 |
| 12 | 364 | Kristoffer Osthus | 45 | M | Duluth | MN | 27:58 (20) | 1:26 (9) | 1:07:16 (5) | 1:08 (12) | 41:54 (31) | 2:19:39 |
| 13 | 343 | Kyle Kolquist | 43 | M | Duluth | MN | 28:00 (21) | 1:59 (21) | 1:10:15 (11) | 1:34 (27) | 38:25 (17) | 2:20:11 |
| 14 | 333 | Kerry Hanson | 56 | M | Saginaw | MN | 25:35 (6) | 2:38 (33) | 1:16:08 (20) | 1:39 (33) | 35:15 (9) | 2:21:13 |
| 15 | 403 | John Witzmann | 59 | M | Saint Paul | MN | 29:46 (28) | 1:32 (10) | 1:12:48 (14) | 1:49 (38) | 38:44 (20) | 2:24:37 |
| 16 | 371 | Troy Radtke | 40 | M | Minot | ND | 27:35 (16) | 1:45 (16) | 1:16:06 (19) | 1:17 (17) | 38:15 (16) | 2:24:56 |
| 17 | 374 | Hunter Reed | 26 | M | Warsaw | IN | 29:33 (27) | 2:09 (23) | 1:18:02 (22) | 0:59 (6) | 34:18 (5) | 2:25:00 |
| 18 | 391 | Clark Varin | 26 | M | Minneapolis | MN | 26:49 (11) | 3:37 (44) | 1:14:13 (18) | 2:24 (45) | 38:31 (18) | 2:25:31 |
| 19 | 393 | Anthony Vonruden | 36 | M | Falcon Heights | MN | 30:47 (29) | 1:42 (12) | 1:12:05 (13) | 1:39 (34) | 40:55 (26) | 2:27:07 |
| 20 | 380 | Brian Ruggle | 35 | M | Duluth | MN | 27:43 (17) | 3:05 (40) | 1:14:09 (16) | 1:38 (30) | 41:08 (27) | 2:27:40 |
| 21 | 328 | Dale Forde | 63 | M | Golden Valley | MN | 28:26 (24) | 1:44 (14) | 1:14:10 (17) | 1:28 (24) | 44:33 (37) | 2:30:20 |
| 22 | 315 | Justin Bye | 34 | M | Minnetonka | MN | 33:27 (34) | 1:54 (19) | 1:22:11 (26) | 1:11 (15) | 34:56 (8) | 2:33:37 |
| 23 | 310 | Josh Branchaud | 33 | M | Chicago | IL | 29:01 (26) | 3:09 (41) | 1:23:57 (33) | 2:03 (42) | 36:22 (13) | 2:34:29 |
| 24 | 372 | Gui Ramos | 31 | M | Rochester | MN | 27:25 (15) | 1:44 (13) | 1:24:58 (35) | 1:38 (31) | 39:07 (21) | 2:34:50 |
| 25 | 368 | Blake Peters | 27 | M | Duluth | MN | 31:58 (30) | 2:10 (24) | 1:19:46 (23) | 1:46 (37) | 39:56 (22) | 2:35:34 |
| 26 | 350 | Thomas Madison | 23 | M | Hermantown | MN | 40:23 (48) | 2:59 (37) | 1:17:06 (21) | 1:14 (16) | 36:18 (11) | 2:37:58 |
| 27 | 396 | John Watkins | 36 | M | Minneapolis | MN | 27:54 (19) | 2:29 (30) | 1:22:22 (29) | 1:27 (22) | 45:31 (38) | 2:39:41 |
| 28 | 357 | Mike Miller | 38 | M | Roseville | MN | 32:44 (32) | 2:41 (35) | 1:22:13 (27) | 2:04 (43) | 43:24 (34) | 2:43:05 |
| 29 | 381 | Tanner Rymanowski | 25 | M | Minneapolis | MN | 38:08 (45) | 4:25 (50) | 1:20:26 (24) | 4:23 (52) | 36:18 (12) | 2:43:38 |
| 30 | 337 | Seth Hendricks | 34 | M | Saint Paul | MN | 33:13 (33) | 4:12 (49) | 1:23:01 (30) | 3:02 (48) | 41:24 (29) | 2:44:51 |
| 31 | 382 | Davin Sang | 24 | M | Minneapolis | MN | 26:22 (10) | 2:10 (25) | 1:22:19 (28) | 1:59 (40) | 52:48 (47) | 2:45:36 |
| 32 | 388 | David Thomas | 36 | M | Lakeville | MN | 37:38 (43) | 5:19 (52) | 1:20:44 (25) | 1:40 (35) | 40:49 (25) | 2:46:09 |
| 33 | 304 | Nathaniel Beaulieu | 28 | M | Duluth | MN | 36:52 (41) | 3:49 (46) | 1:23:55 (32) | 1:00 (9) | 42:50 (32) | 2:48:24 |
| 34 | 317 | Christian Carron | 30 | M | Seattle | WA | 35:14 (38) | 2:14 (26) | 1:25:29 (37) | 1:28 (23) | 44:28 (36) | 2:48:52 |
| 35 | 376 | Josh Riewestahl | 26 | M | Spring Valley | WI | 40:08 (47) | 2:01 (22) | 1:25:07 (36) | 1:23 (20) | 41:41 (30) | 2:50:19 |
| 36 | 302 | Tyler Anderson | 29 | M | Moose Lake | MN | 33:29 (35) | 2:24 (27) | 1:28:13 (38) | 2:24 (46) | 44:18 (35) | 2:50:47 |
| 37 | 345 | Stuart Kubow | 38 | M | Fall Creek | WI | 37:43 (44) | 2:26 (29) | 1:24:46 (34) | 2:02 (41) | 46:28 (39) | 2:53:23 |
| 38 | 373 | Conner Reed | 23 | M | Duluth | MN | 37:19 (42) | 4:08 (48) | 1:23:16 (31) | 2:10 (44) | 47:53 (43) | 2:54:45 |
| 39 | 352 | Joshua Markham | 38 | M | Maplewood | MN | 36:01 (39) | 1:50 (18) | 1:33:31 (45) | 3:12 (49) | 41:21 (28) | 2:55:53 |
| 40 | 370 | Nathan Radke | 22 | M | Minneapolis | MN | 27:13 (14) | 2:40 (34) | 1:31:06 (42) | 1:34 (26) | 55:20 (49) | 2:57:51 |
| 41 | 324 | Max Drescher | 25 | M | Minneapolis | MN | 45:01 (50) | 4:54 (51) | 43:20 (33) | 2:59:18 | ||
| 42 | 326 | Travis Feller | 45 | M | Coon Reapids | MN | 32:07 (31) | 3:03 (39) | 1:35:57 (47) | 1:20 (19) | 47:11 (41) | 2:59:36 |
| 43 | 318 | Zach Carron | 28 | M | Rochester | MN | 35:12 (37) | 1:54 (20) | 1:29:51 (39) | 1:46 (36) | 53:12 (48) | 3:01:53 |
| 44 | 339 | Mark Imparato | 21 | M | Minneapolis | MN | 33:46 (36) | 3:15 (42) | 1:31:48 (43) | 1:32 (25) | 51:41 (46) | 3:02:01 |
| 45 | 365 | Ryan Pauley | 24 | M | Rochester | MN | 26:06 (9) | 3:30 (43) | 1:38:58 (50) | 1:05 (10) | 55:38 (50) | 3:05:15 |
| 46 | 375 | Jim Ries | 37 | M | Inver Grove Height | MN | 50:30 (51) | 2:36 (32) | 1:30:55 (41) | 1:19 (18) | 40:08 (23) | 3:05:26 |
| 47 | 353 | Kristian Markon | 46 | M | Minnetonka | MN | 36:09 (40) | 3:43 (45) | 1:37:04 (49) | 1:24 (21) | 47:16 (42) | 3:05:34 |
| 48 | 356 | Chad Miller | 36 | M | Osseo | MN | 38:21 (46) | 2:45 (36) | 1:36:58 (48) | 1:35 (29) | 46:41 (40) | 3:06:19 |
| 49 | 394 | Nick Wallace | 36 | M | Minneapolis | MN | 2:15:55 (54) | (1) | 51:15 (44) | 3:09:54 | ||
| 50 | 301 | Mark D Anderson | 69 | M | Naperville | IL | 27:45 (18) | 4:07 (47) | 1:29:55 (40) | 3:41 (50) | 1:07:24 (54) | 3:12:49 |