| Grade | Name | Time | Team | Rating |
| 12 | Riley Hough | 14:41.2 | Hartland | 228.6 |
| 11 | Hunter Jones | 15:00.4 | Benzie Central | 222.2 |
| 12 | Jeremy Williams | 15:31.9 | Lapeer | 211.7 |
| 12 | Luke Venhuizen | 15:47.3 | Traverse City Central | 206.6 |
| 12 | Klay Grant | 15:51.3 | Muskegon Reeths-Puffer | 205.2 |
| 11 | Jonah Hochstetler | 15:58.1 | Traverse City West | 203.0 |
| 11 | Benne Anderson | 16:04.2 | Grand Rapids Ottawa Hills | 200.9 |
| 12 | Ian Hill | 16:05.4 | Spring Lake | 200.5 |
| 11 | Micah Bauer | 16:07.4 | Traverse City Central | 199.9 |
| 12 | Caden Meyer | 16:09.1 | Zeeland East | 199.3 |
| 12 | Juan David Hernandez | 16:14.7 | Grand Rapids Ottawa Hills | 197.4 |
| 12 | Sawyer Fowler | 16:20.1 | Lowell | 195.6 |
| 11 | Joe Muha | 16:24.7 | Traverse City Central | 194.1 |
| 12 | Tyler Guggemos | 16:25.4 | Kalkaska | 193.9 |
| 12 | Ben Zwart | 16:25.5 | Grand Rapids Christian | 193.8 |
| 12 | Cole Weston | 16:31.3 | Lowell | 191.9 |
| 12 | Michael Williams | 16:33.0 | Lapeer | 191.3 |
| 12 | Tinsae Nelson | 16:37.7 | Grand Rapids Christian | 189.8 |
| 12 | Isaac Stone | 16:38.5 | Traverse City West | 189.5 |
| 10 | Alex Thole | 16:48.7 | East Grand Rapids | 186.1 |
| 11 | Benjamin Bromley | 16:53.6 | Lowell | 184.5 |
| 11 | Clayton Ackley | 16:54.7 | Hart | 184.1 |
| 11 | Caleb Branch | 16:54.8 | Muskegon Mona Shores | 184.1 |
| 12 | Noah Bosley | 16:56.4 | Hart | 183.5 |
| 10 | Willem DeGood | 17:02.9 | Traverse City West | 181.4 |
| 11 | Jett Reimers | 17:03.0 | Traverse City Central | 181.3 |
| 12 | Jackson Fowler | 17:06.4 | Lowell | 180.2 |
| 12 | Sam McDonough | 17:09.0 | Traverse City Central | 179.3 |
| 11 | Elijah Robinson | 17:10.2 | East Grand Rapids | 178.9 |
| 9 | Josh Slocum | 17:12.8 | Traverse City St. Francis | 178.1 |
| 12 | Luke Dykstra | 17:13.6 | East Grand Rapids | 177.8 |
| 11 | Jacob Wartenberg | 17:14.4 | Johannesburg-Lewiston | 177.5 |
| 9 | Seth Conner | 17:14.7 | Jenison | 177.4 |
| 11 | David Harris | 17:16.9 | St. Clair | 176.7 |
| 10 | Blake Fox | 17:18.3 | Johannesburg-Lewiston | 176.2 |
| 11 | Reuben Wiering | 17:18.5 | Grand Rapids Christian | 176.2 |
| 10 | Anthony Kiaunis | 17:18.7 | Reed City | 176.1 |
| 10 | Dylan Clark | 17:19.1 | Grand Rapids Christian | 176.0 |
| 10 | Zack Truszkowski | 17:19.2 | Traverse City Central | 175.9 |
| 10 | Drew Moore | 17:19.3 | Grayling | 175.9 |
| 12 | Cole Cunningham | 17:20.7 | St. Clair | 175.4 |
| 10 | Brad White | 17:21.1 | Clare | 175.3 |
| 12 | Josh Fairbanks | 17:23.0 | Roscommon | 174.7 |
| 10 | Cole Visser | 17:23.0 | Jenison | 174.7 |
| 11 | Ryan McMahon | 17:23.2 | East Grand Rapids | 174.6 |
| 10 | Malaki Gascho | 17:24.1 | Johannesburg-Lewiston | 174.3 |
| 9 | Simon Triezenberg | 17:26.8 | Grand Rapids Christian | 173.4 |
| 10 | Aidan Kreps | 17:28.0 | Muskegon Mona Shores | 173.0 |
| 12 | Joey Shotts | 17:28.3 | Jenison | 172.9 |
| 11 | Nate Wing | 17:28.4 | Mason County Eastern | 172.9 |
| 9 | Kye Grant | 17:28.7 | Muskegon Reeths-Puffer | 172.8 |
| 12 | Collin Fall | 17:29.6 | Frankenmuth | 172.5 |
| 10 | Davis Christy | 17:29.8 | East Grand Rapids | 172.4 |
| 10 | Joe Waalkes | 17:30.1 | Grand Rapids Christian | 172.3 |
| 10 | Jaxon Allen | 17:31.7 | Muskegon Reeths-Puffer | 171.8 |
| 12 | Jonas Lanser | 17:32.0 | McBain Northern Michigan Christian | 171.7 |
| 11 | Ryan Kamp | 17:33.2 | Grand Rapids Northview | 171.3 |
| 11 | Ethan Smith | 17:33.3 | Jenison | 171.2 |
| 10 | Ryan Brinker | 17:33.8 | East Grand Rapids | 171.1 |
| 11 | Josh Kerr | 17:35.0 | Traverse City St. Francis | 170.7 |
| 12 | Sam Davidson | 17:36.7 | Spring Lake | 170.1 |
| 11 | Dakota Dykhuis | 17:37.0 | Montabella | 170.0 |
| 10 | Maxwell McCarty | 17:37.9 | Belding | 169.7 |
| 10 | Tucker Krumm | 17:38.3 | Traverse City St. Francis | 169.6 |
| 12 | Carter Phillips | 17:39.1 | Spring Lake | 169.3 |
| 10 | Ryan Allen | 17:42.7 | Reed City | 168.1 |
| 12 | Thomas Richards | 17:44.6 | Traverse City St. Francis | 167.5 |
| 12 | Hayden Moore | 17:44.8 | Kalkaska | 167.4 |
| 11 | Ethan Grevengoed | 17:46.0 | Spring Lake | 167.0 |
| 9 | Max Stitt | 17:46.8 | Hart | 166.7 |
| 11 | Jackson Kulawiak | 17:48.2 | Buckley | 166.3 |
| 11 | Levi Mills | 17:48.8 | Lowell | 166.1 |
| 12 | Will Phillips | 17:49.6 | Traverse City Central | 165.8 |
| 12 | George Samra | 17:49.7 | East Grand Rapids | 165.8 |
| 12 | Cale Coppess | 17:50.4 | Montague | 165.5 |
| 12 | Carter Dean | 17:52.1 | Traverse City West | 165.0 |
| 11 | Owen Fairchild | 17:54.0 | Montague | 164.3 |
| 11 | Grant Conger | 17:55.7 | Frankenmuth | 163.8 |
| 11 | Skylar Werden | 17:55.9 | Frankfort | 163.7 |
| 10 | Ben Habers | 17:56.7 | Traverse City West | 163.4 |
| 11 | Brendan Wangler | 17:56.9 | Jenison | 163.4 |
| 12 | Sam Vitale | 17:58.6 | St. Clair | 162.8 |
| 12 | Toby Hall | 17:59.5 | Johannesburg-Lewiston | 162.5 |
| 11 | Austin Winkle | 17:59.5 | Jenison | 162.5 |
| 10 | Nic Porter | 18:00.1 | Clare | 162.3 |
| 12 | Keegan Cater | 18:01.3 | Lowell | 161.9 |
| 12 | Landyn Cool | 18:01.4 | Leroy Pine River | 161.9 |
| 12 | Connor Lubberts | 18:01.4 | Jenison | 161.9 |
| 10 | Abdul Ghennewa | 18:01.5 | Manistee | 161.8 |
| 11 | Ronin Vaden | 18:01.9 | Johannesburg-Lewiston | 161.7 |
| 10 | Lucas Ruffing | 18:04.6 | Spring Lake | 160.8 |
| 10 | Alex Durocher | 18:05.0 | Traverse City Central | 160.7 |
| 11 | Davis Head | 18:08.9 | East Grand Rapids | 159.4 |
| 11 | Jude Meldrum-Roy | 18:09.1 | North Muskegon | 159.3 |
| 12 | Connor Kreger | 18:12.1 | St. Clair | 158.3 |
| 10 | Tanner Soelberg | 18:12.6 | Shelby | 158.1 |
| 10 | Trey Keson | 18:13.6 | Ludington | 157.8 |
| 9 | August Rohde | 18:15.0 | Reed City | 157.3 |
| 10 | Claydon Ingleright | 18:15.7 | McBain | 157.1 |
| 10 | Lukas Reimers | 18:18.0 | Traverse City Central | 156.3 |
| 11 | Wyatt Dean | 18:18.2 | Hart | 156.3 |
| 12 | Jackson Thiel | 18:18.8 | Roscommon | 156.1 |
| 10 | Antonio Casarez | 18:19.5 | Lowell | 155.8 |
| 12 | Peter Worden | 18:20.7 | Traverse City West | 155.4 |
| 10 | Christian Kerfoot | 18:20.9 | Elk Rapids | 155.4 |
| 12 | Blake Bennett | 18:21.5 | Lowell | 155.2 |
| 12 | Alex Weber | 18:22.4 | Lowell | 154.9 |
| 10 | Sam King | 18:23.1 | Traverse City West | 154.6 |
| 10 | Gavin Guggemos | 18:23.7 | Kalkaska | 154.4 |
| 11 | Joey Schwindt | 18:23.9 | Maple City Glen Lake | 154.4 |
| 10 | Camden Moore | 18:24.6 | Kalkaska | 154.1 |
| 10 | Dylan Distelrath | 18:27.5 | St. Clair | 153.2 |
| 11 | Connor McIntyre | 18:27.6 | Traverse City St. Francis | 153.1 |
| 10 | Jonathan Koetje | 18:27.6 | Grand Rapids Christian | 153.1 |
| 11 | Chase Snell | 18:27.7 | Grand Traverse Academy | 153.1 |
| 11 | Seth Ackley | 18:28.4 | Hart | 152.9 |
| 10 | Abe VanDuinen | 18:30.0 | Pentwater | 152.3 |
| 12 | Philip Rigling | 18:31.1 | Leroy Pine River | 152.0 |
| 10 | Peter Hybza | 18:31.2 | Mason County Eastern | 151.9 |
| 11 | Dannion Simmet | 18:32.7 | Lowell | 151.4 |
| 10 | Justin Clement | 18:32.7 | Jenison | 151.4 |
| 10 | Will Parsekian | 18:35.6 | Muskegon Mona Shores | 150.5 |
| 9 | Mason Lucas | 18:35.6 | Jenison | 150.5 |
| 11 | Tony Rao | 18:35.7 | East Grand Rapids | 150.4 |
| 12 | Kristian Rose | 18:37.9 | Jenison | 149.7 |
| 10 | Clay Johnson | 18:38.0 | Montague | 149.7 |
| 9 | Rowen Bishop | 18:38.8 | East Grand Rapids | 149.4 |
| 12 | Charlie Ward | 18:39.4 | Elk Rapids | 149.2 |
| 11 | Eli Assaf | 18:41.2 | East Grand Rapids | 148.6 |
| 9 | George Janson | 18:41.8 | East Grand Rapids | 148.4 |
| 11 | Michael Musgrave | 18:42.4 | Benzie Central | 148.2 |
| 10 | Jack O’Donnell | 18:43.4 | Manistee | 147.9 |
| 11 | Steven Butler | 18:43.4 | Almont | 147.9 |
| 12 | Evan Klein | 18:44.5 | Lowell | 147.5 |
| 12 | Kreegan Deverney | 18:44.6 | Spring Lake | 147.5 |
| 12 | Keegan Reimers | 18:44.9 | Traverse City Central | 147.4 |
| 10 | Juan Marin | 18:45.0 | McBain | 147.3 |
| 12 | Eli Shoup | 18:45.7 | Mason County Eastern | 147.1 |
| 9 | Dominic Otto | 18:46.0 | Jenison | 147.0 |
| 11 | Judge Morgan | 18:46.6 | Traverse City St. Francis | 146.8 |
| 12 | Ricky McMurray | 18:46.9 | Bellaire | 146.7 |
| 12 | Isaac Scouten | 18:47.3 | Shelby | 146.6 |
| 11 | Jax Gianossa | 18:48.3 | St. Clair | 146.2 |
| 11 | Caleb Kerfoot | 18:48.3 | Elk Rapids | 146.2 |
| 11 | Carter Boullard | 18:49.3 | St. Clair | 145.9 |
| 10 | Jackson Price | 18:49.4 | Traverse City Central | 145.9 |
| 10 | Seth Brown | 18:51.3 | Elk Rapids | 145.2 |
| 9 | Max Ward | 18:51.4 | Elk Rapids | 145.2 |
| 11 | James Wilson | 18:51.6 | Montabella | 145.1 |
| 11 | Rowan Jansen | 18:52.9 | Grand Rapids Christian | 144.7 |
| 10 | Peter Kuperus | 18:52.9 | Grand Rapids Christian | 144.7 |
| 9 | Luke Pettengill | 18:54.3 | McBain Northern Michigan Christian | 144.2 |
| 11 | Austin Barding | 18:55.0 | Spring Lake | 144.0 |
| 12 | Ben DuCheny | 18:55.0 | Buckley | 144.0 |
| 10 | Jaymes Wildfong | 18:55.1 | Mancelona | 144.0 |
| 12 | Jacob Heeringa | 18:55.3 | Traverse City St. Francis | 143.9 |
| 9 | Matthew Schwartz | 18:57.2 | Jenison | 143.3 |
| 10 | Kaden Forward | 18:58.1 | Bear Lake-Onekama | 143.0 |
| 12 | Max Nienhuis | 18:58.8 | Hart | 142.7 |
| 10 | Andrew Klaus | 18:59.3 | Clare | 142.6 |
| 11 | William Hyson | 19:00.5 | Jenison | 142.2 |
| 10 | Brian Kilborn | 19:01.1 | Roscommon | 142.0 |
| 11 | Will Marth | 19:01.9 | Jenison | 141.7 |
| 11 | Dade Allen | 19:02.6 | Benzie Central | 141.5 |
| 11 | Tanner Guczwa | 19:02.9 | Spring Lake | 141.4 |
| 10 | Tyler Vining | 19:03.6 | Morley-Stanwood | 141.1 |
| 12 | Cohen Young | 19:04.0 | Clare | 141.0 |
| 11 | Nick Thuente | 19:04.8 | Traverse City St. Francis | 140.7 |
| 9 | Charlie Chappus | 19:04.8 | East Grand Rapids | 140.7 |
| 12 | Gabe TerHaar | 19:04.9 | Jenison | 140.7 |
| 10 | Easton Vander Zwaag | 19:04.9 | Hart | 140.7 |
| 12 | Logan Foster | 19:05.5 | Frankfort | 140.5 |
| 12 | McMillan Quinn | 19:05.7 | Traverse City West | 140.4 |
| 9 | Andrew Wangler | 19:06.9 | Jenison | 140.0 |
| 10 | Evan Atkinson-miller | 19:08.4 | North Muskegon | 139.5 |
| 12 | Austin Brown | 19:09.3 | Traverse City West | 139.2 |
| 11 | Rhys Sandman | 19:09.5 | Lowell | 139.2 |
| 10 | Evan Arleth | 19:09.8 | Traverse City Central | 139.1 |
| 10 | Nathan Koetje | 19:11.0 | McBain | 138.7 |
| 11 | Corbin Devilbiss | 19:12.6 | East Grand Rapids | 138.1 |
| 9 | Parker Woodwyk | 19:13.6 | Spring Lake | 137.8 |
| 11 | Gavin Shirey | 19:14.1 | Mason County Central | 137.6 |
| 11 | Tommy Skendzel | 19:15.2 | Traverse City St. Francis | 137.3 |
| 9 | Alex Tyndall | 19:17.0 | Mason County Eastern | 136.7 |
| 10 | Adam Townsend | 19:17.7 | Frankfort | 136.4 |
| 12 | Logan Balis | 19:18.4 | Belding | 136.2 |
| 12 | Nick Penrice | 19:18.8 | Spring Lake | 136.1 |
| 12 | James Lakie | 19:19.1 | Mancelona | 136.0 |
| 10 | Paxton Hall | 19:19.4 | Lake City | 135.9 |
| 11 | Josef Bromley | 19:21.7 | Hart | 135.1 |
| 10 | Kaiden Morey | 19:21.9 | Traverse City Central | 135.0 |
| 12 | Joe Perry | 19:21.9 | Johannesburg-Lewiston | 135.0 |
| 12 | Logan May | 19:22.0 | Johannesburg-Lewiston | 135.0 |
| 11 | Parker Maciejewski | 19:24.9 | North Muskegon | 134.0 |
| 11 | Hayden Wood | 19:24.9 | Clare | 134.0 |
| 9 | Parker Strelecki | 19:25.2 | Jenison | 133.9 |
| 11 | Winston Pelloski | 19:26.5 | Kingsley | 133.5 |
| 12 | Evan Bennett | 19:26.8 | Ludington | 133.4 |
| 10 | Grayson Carpenter | 19:27.8 | Spring Lake | 133.1 |
| 11 | Savian Tarrant | 19:28.2 | Traverse City St. Francis | 132.9 |
| 12 | Cole Ingleright | 19:28.7 | McBain | 132.8 |
| 12 | Jaden Henderson | 19:29.4 | Jenison | 132.5 |
| 12 | Andre-Ross Gennette | 19:30.8 | Spring Lake | 132.1 |
| 10 | Adam Williams | 19:32.3 | Kalkaska | 131.6 |
| 12 | Caspar Dicke | 19:32.3 | East Grand Rapids | 131.6 |
| 10 | Clay Shoup | 19:32.6 | Mason County Eastern | 131.5 |
| 12 | Dominic Pirrone | 19:33.0 | Almont | 131.3 |
| 12 | Joel Ewald | 19:33.8 | Roscommon | 131.1 |
| 11 | Aidan Maki | 19:38.2 | Frankenmuth | 129.6 |
| 9 | Lewis Walter | 19:38.8 | Traverse City St. Francis | 129.4 |
| – | Oliver Mitchell | 19:42.1 | Lake Leelanau St. Mary | 128.3 |
| 11 | Kyle Roeters | 19:42.5 | Traverse City Central | 128.2 |
| 11 | Mason Dozier | 19:43.2 | Reed City | 127.9 |
| 11 | Mitchell Winks | 19:45.1 | Grand Rapids Christian | 127.3 |
| 10 | Dominik Lamberts | 19:45.9 | Jenison | 127.0 |
| 9 | Keegan Hoekstra | 19:46.4 | Grand Rapids Christian | 126.9 |
| 11 | Dorian Olson | 19:46.7 | Benzie Central | 126.8 |
| 11 | Blake Knox | 19:47.6 | Traverse City St. Francis | 126.5 |
| 9 | Mason Sinke | 19:48.2 | Bear Lake-Onekama | 126.3 |
| 11 | Reece Ondersma | 19:48.6 | Jenison | 126.1 |
| 9 | Miller Pomper | 19:49.7 | Benzie Central | 125.8 |
| 11 | Braden Melville | 19:50.0 | Buckley | 125.7 |
| 12 | Caiden Cudney | 19:50.8 | Manistee | 125.4 |
| 12 | Jacob Caton | 19:51.1 | Frankenmuth | 125.3 |
| 10 | Izaiah Lentz | 19:51.2 | Reed City | 125.3 |
| 9 | Shiloh Gersenson | 19:51.8 | Traverse City Central | 125.1 |
| 11 | Carter Lewis | 19:52.7 | Leroy Pine River | 124.8 |
| 11 | Dan Wildfong | 19:53.6 | Mancelona | 124.5 |
| 12 | Keese Villarreal | 19:54.5 | Ludington | 124.2 |
| 11 | Shelby Hopkins | 19:55.9 | Morley-Stanwood | 123.7 |
| 9 | Garrett Abel | 19:56.5 | Spring Lake | 123.5 |
| 10 | Kaden Abrahamson | 19:56.7 | McBain | 123.4 |
| 9 | Caidan Gaskill | 19:58.1 | Clare | 123.0 |
| 9 | Cougar Clark | 19:58.4 | Frankenmuth | 122.9 |
| 10 | David Russell | 19:58.8 | Traverse City Central | 122.7 |
| 11 | Caleb Grimshaw | 19:59.0 | Frankenmuth | 122.7 |
| 9 | Daniel Dunn | 19:59.8 | Muskegon Reeths-Puffer | 122.4 |
| 9 | Nathan Koches | 19:59.9 | Spring Lake | 122.4 |
| 11 | Blake Bouwman | 20:01.1 | Grand Rapids Christian | 122.0 |
| 12 | Austin Rubin | 20:01.2 | Grand Traverse Academy | 121.9 |
| 10 | Elijah Lentz | 20:03.4 | Reed City | 121.2 |
| 10 | Tate Bradley | 20:04.0 | Muskegon Reeths-Puffer | 121.0 |
| 10 | Zach Boehr | 20:04.0 | Lowell | 121.0 |
| 12 | Riley Daily | 20:05.4 | Montabella | 120.5 |
| 10 | Curtis Fuller | 20:05.5 | Ludington | 120.5 |
| 10 | Hudson Kiteley | 20:07.2 | Benzie Central | 119.9 |
| 10 | Jack Joyce | 20:07.7 | Leland | 119.8 |
| 9 | Weston Carpenter | 20:10.1 | Spring Lake | 119.0 |
| 9 | David Reisterer | 20:10.9 | Ludington | 118.7 |
| 12 | Andrew Booher | 20:13.3 | Evart | 117.9 |
| 10 | Scott Slocum | 20:13.8 | Leroy Pine River | 117.7 |
| 10 | Braden Dalm | 20:14.3 | North Muskegon | 117.6 |
| 9 | Zach Hartemink | 20:14.3 | Grand Rapids Christian | 117.6 |
| 10 | Nathan Baker | 20:14.4 | Grand Rapids Christian | 117.5 |
| 10 | Nevin Slater | 20:15.1 | Ludington | 117.3 |
| 12 | William Garrison | 20:15.3 | Belding | 117.2 |
| 11 | Cullen Kraus-McCarty | 20:15.4 | Mason County Central | 117.2 |
| 12 | Brock Outman | 20:18.8 | Lakeview | 116.1 |
| 12 | Matt Popp | 20:21.9 | Traverse City West | 115.0 |
| 12 | Quinten Burlew | 20:22.8 | Jenison | 114.7 |
| 9 | Nathan Chapin | 20:23.0 | Jenison | 114.7 |
| 12 | Will Siegert | 20:26.3 | Ludington | 113.6 |
| 9 | Kyan Deam | 20:27.2 | Big Rapids | 113.3 |
| 9 | Riley Pattinson | 20:28.3 | Traverse City St. Francis | 112.9 |
| 11 | Jacob Lindeman | 20:29.5 | Manistee | 112.5 |
| 10 | Braxton Zenner | 20:30.3 | Kingsley | 112.2 |
| 10 | Quinten Musgrave | 20:31.1 | Benzie Central | 112.0 |
| 10 | Brendan Nolan | 20:33.0 | Coopersville | 111.3 |
| 12 | Luca Pham | 20:34.5 | Jenison | 110.8 |
| 11 | Brady Lane | 20:34.7 | Traverse City Central | 110.8 |
| 10 | Luca Menestrina | 20:34.7 | Bellaire | 110.8 |
| 11 | James Davis | 20:34.9 | Pentwater | 110.7 |
| 10 | Christian Leachman | 20:37.6 | Traverse City West | 109.8 |
| 12 | Ryan Rymal | 20:37.9 | Spring Lake | 109.7 |
| 9 | Morgan Hill | 20:41.0 | Traverse City Central | 108.7 |
| 10 | Travis Madonna | 20:42.8 | Grand Rapids Northview | 108.1 |
| 10 | Ben Hamina | 20:43.1 | Roscommon | 108.0 |
| 12 | Nathan Huss | 20:44.6 | Reed City | 107.5 |
| 11 | Michael Gottleber | 20:45.2 | Cadillac | 107.3 |
| 9 | Owen Read | 20:45.4 | Traverse City St. Francis | 107.2 |
| 12 | Jordan Fink | 20:47.0 | Manistee | 106.7 |
| 11 | Steven Gascoinge | 20:47.5 | Evart | 106.5 |
| 12 | Jacob Olds | 20:49.0 | Kalkaska | 106.0 |
| 9 | Tim Pentecost | 20:49.8 | Evart | 105.7 |
| 11 | Trevor Adamczak | 20:50.2 | Manistee | 105.6 |
| 11 | Cory Vader | 20:51.7 | Evart | 105.1 |
| 11 | Nick Zwiers | 20:52.2 | Grand Rapids Christian | 104.9 |
| 9 | Carroll Robotham | 20:52.5 | Frankfort | 104.8 |
| 9 | Jack Baltes | 20:54.6 | Jenison | 104.1 |
| 9 | CJ Bennett | 20:56.0 | North Muskegon | 103.7 |
| 11 | Logan Tyson | 20:56.5 | North Muskegon | 103.5 |
| 10 | Ethan Vann | 20:57.1 | Leland | 103.3 |
| 9 | Otto Selbig | 20:57.9 | Traverse City West | 103.0 |
| 9 | Ayden Barcia | 21:00.0 | Clare | 102.3 |
| 12 | Logan Mekkes | 21:00.1 | Morley-Stanwood | 102.3 |
| 10 | Paul Skendzel | 21:01.5 | Traverse City St. Francis | 101.8 |
| 10 | Tyler Vanderzanden | 21:02.2 | Hart | 101.6 |
| 9 | Avery Guikema | 21:03.0 | Hart | 101.3 |
| 12 | Blaze Van Noord | 21:04.2 | Muskegon Reeths-Puffer | 100.9 |
| 11 | Noah Peters | 21:05.8 | East Grand Rapids | 100.4 |
| 11 | Trevor Moody | 21:05.9 | Frankfort | 100.4 |
| 12 | Conner Raeth | 21:07.6 | Montague | 99.8 |
| 10 | Joel Hardesty | 21:08.4 | Big Rapids | 99.5 |
| 9 | Lawrence Cubitt | 21:09.5 | Traverse City Central | 99.2 |
| 9 | Brandon Morley | 21:10.7 | Roscommon | 98.8 |
| 10 | Jack Jubar | 21:12.5 | Ludington | 98.2 |
| 11 | Joey Boni | 21:13.4 | Belding | 97.9 |
| 10 | Noah Britton | 21:13.8 | Jenison | 97.7 |
| 12 | Brandon Vanderzanden | 21:13.9 | Hart | 97.7 |
| 10 | Gavin Kelso | 21:14.8 | Leroy Pine River | 97.4 |
| 9 | Isaiah Mulheron | 21:15.2 | Clare | 97.3 |
| 9 | Rylan Bachman | 21:16.2 | Cadillac | 96.9 |
| 11 | Tristan Simrau | 21:16.6 | Traverse City West | 96.8 |
| 10 | Ben Vruggink | 21:17.4 | Spring Lake | 96.5 |
| 11 | Ethan Sharpe | 21:17.6 | Roscommon | 96.5 |
| 11 | Elliot Hoeflinger | 21:18.0 | Manistee | 96.3 |
| 10 | Benjamin Phelps | 21:18.1 | East Grand Rapids | 96.3 |
| 10 | James Thorpe | 21:18.6 | Jenison | 96.1 |
| 11 | Mitchell Hall | 21:19.0 | Johannesburg-Lewiston | 96.0 |
| 10 | Freddie Santangelo | 21:19.0 | Cadillac | 96.0 |
| 9 | Noah Zelinski | 21:21.8 | Traverse City St. Francis | 95.1 |
| 9 | Kai Miller | 21:23.2 | Hart | 94.6 |
| 10 | Braylin Thurow | 21:23.3 | Mason County Central | 94.6 |
| 9 | Carter Charnley | 21:23.6 | Spring Lake | 94.5 |
| 11 | Tyler Thurow | 21:24.2 | Mason County Central | 94.3 |
| 10 | Braylon Iakiri | 21:24.2 | Lowell | 94.3 |
| 11 | Seth VanOss | 21:24.7 | Grand Rapids Christian | 94.1 |
| 12 | Victor Benegni | 21:27.5 | Morley-Stanwood | 93.2 |
| 9 | Micah Derks | 21:29.0 | Jenison | 92.7 |
| 9 | Jason Jansen | 21:30.8 | Elk Rapids | 92.1 |
| 9 | Greyson Hoeflinger | 21:31.8 | Manistee | 91.7 |
| 10 | Zane McCabe | 21:32.7 | Mason County Central | 91.4 |
| 10 | Alecio Muschiana | 21:34.1 | Frankenmuth | 91.0 |
| 9 | Jacob Voetberg | 21:35.7 | Grand Rapids Christian | 90.4 |
| 12 | Sam Rickerd | 21:37.0 | Coopersville | 90.0 |
| 11 | Karson Swiszowski | 21:38.8 | Mancelona | 89.4 |
| 9 | Calvin Brinks | 21:39.2 | Grand Rapids Christian | 89.3 |
| 11 | Logan Smith | 21:41.7 | Jenison | 88.4 |
| 12 | Thomas Dyer | 21:42.6 | Almont | 88.1 |
| 10 | Mason Stafford | 21:45.5 | Muskegon Mona Shores | 87.2 |
| 10 | Jackson Kay | 21:49.8 | Grand Rapids Northview | 85.7 |
| 9 | Quinton Tobias | 21:51.1 | Johannesburg-Lewiston | 85.3 |
| 12 | Ethan Larsen | 21:51.8 | Grand Traverse Academy | 85.1 |
| 10 | Henry VanderMolen | 21:52.0 | East Grand Rapids | 85.0 |
| 12 | Gavin Grabill | 21:54.3 | Big Rapids | 84.2 |
| – | Cody Couturier | 21:54.4 | Lake Leelanau St. Mary | 84.2 |
| 11 | Peter Maddox | 21:54.8 | Lake City | 84.1 |
| 10 | Brayden Czarnecki | 21:55.5 | Jenison | 83.8 |
| 12 | Miles Lettinga | 21:55.7 | Traverse City Central | 83.8 |
| 9 | Christian Hicks | 21:56.5 | Kalkaska | 83.5 |
| 11 | Gabe Navarre | 21:56.7 | Traverse City West | 83.4 |
| 11 | Austin Benitez | 21:57.0 | Manistee | 83.3 |
| 12 | Keegan Jeane | 21:57.8 | Benzie Central | 83.1 |
| 12 | Kirgin Tanis | 21:59.2 | Grand Rapids Northview | 82.6 |
| 9 | Landon Kulawiak | 22:00.0 | Buckley | 82.3 |
| 12 | Clay Oosterhouse | 22:00.9 | Big Rapids | 82.0 |
| 9 | Harry Cornell | 22:02.1 | East Grand Rapids | 81.6 |
| 12 | Hunter Mossel | 22:05.4 | Big Rapids | 80.5 |
| 12 | Ted Bell | 22:06.6 | Clare | 80.1 |
| 11 | Victor Wu | 22:07.0 | Muskegon Mona Shores | 80.0 |
| 9 | John Studzinski | 22:07.9 | Traverse City St. Francis | 79.7 |
| 11 | William VanderLaan | 22:09.2 | East Grand Rapids | 79.3 |
| 10 | Evan Chandler | 22:11.6 | Benzie Central | 78.5 |
| 11 | Willem Gollannek | 22:11.8 | East Grand Rapids | 78.4 |
| 9 | Matt Spedoske | 22:14.7 | Big Rapids | 77.4 |
| 10 | Lincoln Walicek | 22:16.4 | Frankenmuth | 76.9 |
| 11 | Andrew Pavwoski | 22:16.6 | Grand Traverse Academy | 76.8 |
| 9 | Isaac Primm | 22:17.5 | Spring Lake | 76.5 |
| 11 | Levi VanderSloot | 22:18.0 | Grand Rapids Christian | 76.3 |
| 12 | Gavin Van’tHof | 22:18.3 | Grand Rapids Northview | 76.2 |
| 11 | Charlie Hicks | 22:20.5 | Clare | 75.5 |
| 12 | Tommy Harvell | 22:20.6 | Shelby | 75.5 |
| 11 | Colin DeKam | 22:20.7 | McBain Northern Michigan Christian | 75.4 |
| 9 | Gavin Campbell | 22:20.9 | Almont | 75.4 |
| 12 | Seth Thompson | 22:23.0 | Manistee | 74.7 |
| 9 | Ethan Fessenden | 22:24.6 | Shelby | 74.1 |
| 11 | Kees Duncan | 22:27.8 | East Grand Rapids | 73.1 |
| 11 | Liam Boyd | 22:28.3 | Bellaire | 72.9 |
| 11 | George Murphy | 22:30.9 | East Grand Rapids | 72.0 |
| 9 | Benjamin Slagter | 22:31.1 | Jenison | 72.0 |
| 10 | Dustin Maatman | 22:36.0 | Belding | 70.3 |
| 12 | John May | 22:36.4 | Morley-Stanwood | 70.2 |
| 11 | Brady Read | 22:36.7 | Traverse City St. Francis | 70.1 |
| 9 | Andrew Sherburn | 22:37.0 | Hesperia | 70.0 |
| 9 | Hayden Gould | 22:38.8 | Big Rapids | 69.4 |
| 11 | Riley Truog | 22:38.9 | Maple City Glen Lake | 69.4 |
| 12 | Mick Robinson | 22:42.9 | Bellaire | 68.0 |
| 11 | Noah Murphy | 22:43.0 | Benzie Central | 68.0 |
| 9 | Trevor Moore | 22:43.6 | Belding | 67.8 |
| 9 | Jacob Marth | 22:44.9 | Jenison | 67.4 |
| 10 | Dylan Norton | 22:44.9 | Grand Rapids Northview | 67.4 |
| 10 | Gavin Wierenga | 22:47.1 | Muskegon Reeths-Puffer | 66.6 |
| 12 | Hans Lobes | 22:47.2 | Mancelona | 66.6 |
| 12 | Ethan Outman | 22:49.5 | Lakeview | 65.8 |
| 9 | Zac Taylor | 22:49.6 | Traverse City St. Francis | 65.8 |
| 11 | Jase Bunce | 22:55.0 | Belding | 64.0 |
| 9 | Elliot Buchan | 22:55.6 | Grand Rapids Northview | 63.8 |
| 10 | Aiden O’Dwyer | 22:55.6 | Frankfort | 63.8 |
| 9 | Lewis Roubal | 22:56.0 | Traverse City Central | 63.7 |
| 12 | Bradley Springberg | 22:58.5 | McBain | 62.8 |
| 9 | Henry Malburg | 22:59.1 | Mason County Eastern | 62.6 |
| 9 | Ron Hasenbank | 23:01.2 | Mason County Eastern | 61.9 |
| 9 | Lucas Lamborne | 23:01.3 | Belding | 61.9 |
| 9 | Wyatt Remar | 23:04.0 | Lowell | 61.0 |
| 12 | Wyatt Underhill | 23:04.0 | Leroy Pine River | 61.0 |
| 9 | Gage Bouwman | 23:04.6 | Muskegon Reeths-Puffer | 60.8 |
| 12 | Quentin O’Donnell | 23:06.1 | Spring Lake | 60.3 |
| 9 | Wyatt Roberts | 23:06.9 | Pentwater | 60.0 |
| 9 | Armand Arakaza | 23:10.1 | Grand Rapids Christian | 59.0 |
| 10 | Elijah Kimbel | 23:12.7 | McBain Northern Michigan Christian | 58.1 |
| 9 | Paul Fowler | 23:13.4 | Lowell | 57.9 |
| 9 | Owen Martin | 23:14.3 | Traverse City Central | 57.6 |
| 11 | Theodore Conrad | 23:14.9 | Muskegon Mona Shores | 57.4 |
| 9 | Kaleb Chisholm | 23:17.3 | Frankfort | 56.6 |
| 9 | Olin Kasperowicz | 23:20.5 | Traverse City St. Francis | 55.5 |
| 10 | Ben Collins | 23:20.9 | Roscommon | 55.4 |
| 9 | Nate McAvoy | 23:23.7 | Frankenmuth | 54.4 |
| 10 | Bowen Robinson | 23:25.8 | Hesperia | 53.7 |
| 12 | David Olds | 23:29.6 | Kalkaska | 52.5 |
| 10 | Harsen Bowlby | 23:30.3 | Traverse City West | 52.2 |
| 11 | Greg Reed | 23:33.4 | Benzie Central | 51.2 |
| 12 | Matthew Schout | 23:33.5 | Belding | 51.2 |
| 12 | Kindred Burke | 23:38.0 | Traverse City West | 49.7 |
| 9 | Parker VanHill | 23:38.1 | Grand Rapids Christian | 49.6 |
| 10 | Jacob Vandervelde | 23:38.9 | North Muskegon | 49.4 |
| – | Derek Graham | 23:41.1 | Lake Leelanau St. Mary | 48.6 |
| 10 | Micah Frye | 23:43.1 | Shelby | 48.0 |
| 12 | Hayden Madl | 23:45.1 | Ludington | 47.3 |
| 12 | Evan Ranger | 23:47.2 | Traverse City West | 46.6 |
| 11 | Gaspard Largard Me… | 23:55.2 | McBain Northern Michigan Christian | 43.9 |
| 9 | Xander Helenius | 23:57.7 | Grand Rapids Northview | 43.1 |
| 10 | Jonah Sanchez | 24:00.4 | Coopersville | 42.2 |
| 12 | Conner Maycroft | 24:00.9 | Coopersville | 42.0 |
| 12 | Lorenzo Milazzo | 24:02.9 | McBain Northern Michigan Christian | 41.4 |
| 9 | Gabriel Comp | 24:09.1 | Lake City | 39.3 |
| 9 | Quinn Mitchell | 24:09.5 | Lowell | 39.2 |
| 9 | Jaxon Ely | 24:11.4 | Ludington | 38.5 |
| 12 | Jeffrey Barbiero | 24:12.4 | Kalkaska | 38.2 |
| 9 | Parker Rubin | 24:14.6 | Grand Traverse Academy | 37.5 |
| 12 | Cannan Morgan | 24:14.8 | Evart | 37.4 |
| 11 | Nathan Rose | 24:15.4 | East Grand Rapids | 37.2 |
| 10 | Sawyer Burke | 24:18.8 | Traverse City West | 36.1 |
| 9 | Logan Face | 24:29.7 | Kingsley | 32.4 |
| 9 | Thomas Weinert | 24:32.5 | Ludington | 31.5 |
| 9 | Zach Rizor | 24:33.2 | Leroy Pine River | 31.3 |
| 11 | Landon Battle | 24:33.5 | Lowell | 31.2 |
| 10 | Joe Korcek | 24:35.7 | Lowell | 30.4 |
| 10 | Nate Darling | 24:38.4 | Muskegon Reeths-Puffer | 29.5 |
| 11 | Caiden Keysor | 24:39.5 | Evart | 29.2 |
| 11 | Alex Heiden | 24:39.9 | Almont | 29.0 |
| 9 | Jack Pummill | 24:40.4 | Spring Lake | 28.9 |
| 9 | Ben Atkins | 24:41.1 | Lowell | 28.6 |
| 11 | Jack Goulet | 24:41.5 | Muskegon Mona Shores | 28.5 |
| 9 | Clayton Keysor | 24:41.7 | Evart | 28.4 |
| 10 | Chase Jones | 24:45.4 | Almont | 27.2 |
| 9 | Corey Sandman | 24:47.0 | Lowell | 26.7 |
| 11 | Jacob Booher | 24:47.1 | McBain Northern Michigan Christian | 26.6 |
| 9 | Luke Witte | 24:48.3 | Grand Rapids Christian | 26.2 |
| 9 | Bryce Elmy | 24:52.8 | Kalkaska | 24.7 |
| 12 | Tucker Vandervelde | 24:56.4 | McBain | 23.5 |
| 9 | Graham Hislop | 25:02.4 | Traverse City West | 21.5 |
| 12 | Luke Thompson | 25:02.6 | Clare | 21.5 |
| 12 | Nick Picardat | 25:04.5 | Traverse City St. Francis | 20.8 |
| 12 | Trenton Barone | 25:06.3 | Big Rapids | 20.2 |
| 9 | Bennett Garton | 25:09.5 | Traverse City St. Francis | 19.2 |
| 10 | Trenton Gladu | 25:15.3 | McBain Northern Michigan Christian | 17.2 |
| 10 | Kyler Behrenwald | 25:15.9 | Lakeview | 17.0 |
| 9 | Hogan Walter | 25:16.9 | Clare | 16.7 |
| 9 | Owen Forrester | 25:21.5 | Ludington | 15.2 |
| 11 | Eli Powers | 25:22.5 | Pentwater | 14.8 |
| 11 | Samuel Rysko | 25:23.8 | Jenison | 14.4 |
| 12 | Kylen Kintigh | 25:33.6 | Leland | 11.1 |
| 12 | Campbell Miller | 25:33.9 | Pentwater | 11.0 |
| 10 | Asher Johnson | 25:34.0 | Mason County Central | 11.0 |
| 10 | Brendan McIntyre | 25:34.2 | Traverse City St. Francis | 10.9 |
| 9 | Zachary Chaussee | 25:37.0 | Traverse City Central | 10.0 |
| 10 | Gil Piche | 25:40.3 | Grand Traverse Academy | 8.9 |
| 9 | Weston Kinney | 25:42.4 | Grand Traverse Academy | 8.2 |
| 10 | James Licht | 26:03.4 | Lake Leelanau St. Mary | 1.2 |