The Woolly Bike Club Mountain Bike Race is part of the Minnesota Mountain Bike Series and is held at the Woolly Bike Club trails in St. Croix Falls, Wisconsin. It’s our most local race — the trails are about 10 minutes from our shop and about 30 minutes from home. We know the trails well and although we’re obviously a bit biased, we do think it is one of the better run and organized races in the series — it’s always well marked, has volunteers at crossings and intersections, the start/finish area is well set up, and they always have plenty of porta-jons. mnmtb.org
At a glance
| Location | St. Croix Falls, WI |
| Discipline | Mountain bike |
| Series | Minnesota Mountain Bike Series |
| Official site | mnmtb.org |
Results and Race Recaps
2025 · 2024 · 2023 · 2022 · 2021 · 2018 · 2017 · 2015
2025
Results
| Lynn (Women’s Marathon) | 5th of 5 – 3:19:04 |
| Reid (Marathon) | 11th of 20 – 4:01:39 |
| Kyle (Marathon) | 2nd of 20 – 4:06:25 |
2024
Results
| Lynn (Comp) | 4th in age, 19th overall |
| Reid (Comp) | 5th in age, 15th overall |
| Kyle (Elite) | 1st in age, 8th overall |
| Steve (Elite) | 4th in age, 9th overall |
Bike setups
| Reid | Bike: Cervelo ZHT-5 · Wheels: DT Swiss XRC 1200 · Tires: Maxxis Recon (f) / Icon (r) · Drivetrain: SRAM AXS Eagle |
| Kyle | Bike: Niner AIR 9 RDO · Wheels: Bontrager XXX Rims on DT 240 Hubs · Tires: Vittoria Barzo (f) / Mezcal (r) · Drivetrain: SRAM AXS Eagle |
| Lynn | Bike: Niner RKT 9 RDO · Wheels: Reserve 28 XC on DT 350 Hubs · Tires: Vittoria Barzo (f) / Mezcal (r) · Drivetrain: SRAM Eagle |
| Steve | Bike: Cervelo ZFS-5 120 · Wheels: DT Swiss XMC 1200 · Tires: Vittoria Barzo (f) / Mezcal (r) · Drivetrain: SRAM AXS Transmission |
It was a great race and Kyle beat me today for the first time in a MTB race. He did beat me in a cyclocross race a couple years ago as well. We were racing together the first 2.5 laps and then he passed me and put a gap on me and I couldn’t pull him back in. He ended up putting over a minute into me. Super exciting to see him get faster and stronger!
Reid was having a great race as well, but did crash twice. The last one was right near the finish and cost him a few places. He had a rough winter/spring, but is getting some miles in again and seems to be getting his race legs back! His skin still lights up like no other, but slowly getting better and he’s a fighter!
Other notes…
I totally fumbled my start and must have looked like it was the first time I rode a bike.
Super hot and muggy day.
This is a fun course as you can see the other racers around you for a lot of the sections of trail through the switchbacks.
The early efforts and heat got to me and felt like my bike handling was a bit off and shaky.
Fuel / hydration
Steve’s Hydration
Strava
2023
Results
| Reid (Sport) | 7th in age, 15th overall |
| Kyle (Comp) | 2nd in age, 8th overall |
| Lynn (Sport) | 1st in age, 5th overall |
| Steve (Elite) | 4th in age, 17th overall |

Race #5 of the MN MTB Series. We enjoyed a new course layout for the Woolly race! It was fast! Woolly always has a good turnout and the Woolly crew always puts on a well run race! We had a great showing from the family and the Maklin crew today!
Strava
2022
Results
| Reid (Sport Class) | 4th of 10 in age (14 & under) and 20th overall |
| Kyle (Comp Class) | 7th of 14 in age (18 & under) and 19th overall |

I enjoyed watching the boys race again today and racked up a few miles riding around to course points. They both had really good races! Looking forward to seeing them grow in the sport. It’s been exciting to see them step up to the sport and comp classes this year. I bowed out of racing this year to make sure they were all squared away.
2021
Results
| Reid (Sport) | DNF (Pinch flatted the sidewalk curb) |
| Kyle (Comp) | DNF (Pinch flatted the sidewalk curb) |
| Steve (Elite) | 12th in age, 32nd overall |
Both boys flatted right after the start. They were hauling out and pinch flatted their rear tires on the curb they had to hop over at the start. Mix of running a little low tire pressure with tubes and not getting that rear tire over the curb.
I had an ok race, given the past year of not spending much time on a mountain bike and mostly gravel riding. Definitely would like to have done better.
2018
Results
| Steve (Elite) | 19th overall (of 39) |
The Woolly Bike Race has traditionally been the kick off event of the Minnesota Mountain Bike Series and draws a nice crowd of racers into the St. Croix River Valley. This was my first time racing the elite class for any type of XC series race.
My kids had a ball with the kid’s comp race. I rode out to the various trail sections to check on them and I could hear them giggling, laughing and chatting as they rode through the trails. That was their first time doing one of the kid’s comp races vs the free fun race. They are excited to do some more of them, so we’ll likely be at more of the Minnesota Series Races this year.
Course

Lap 1 of the elite race and actually I think lap 1 of all races except the comp class skipped West Ridge on the first lap and just followed the tree line around the High School. The start of the elite race was crazy fast and I can’t imagine what would happen if we tried dumping into the woods right away. We were bottlenecked and rubbing wheels all the way around the school, over the road and into the first short section of singletrack that connects to the bike path as it was. Something I really wasn’t prepared for.

Gear and Nutrition
Gear
Nutrition
Race
Lap 1
I lined up a few rows back, putting me closer to the back than the front. Even at that, the race was a really fast start and I wasn’t prepared for the aggressiveness of it. The elite race skips west ridge on the first lap and I can’t imagine what would happen if we actually tried to dump into west ridge. We had some bottle neck points just getting around the field and tree line behind the school. I ended up drifting back quite a few spots and did not get a real good start.
I knew at this point I had some work to do for a top 20 finish, which is what I told myself I would be fairly happy with, based on what I had seen of this field in the past. I did make up some ground when we got into the trails and reeled a few positions back. Based on sorting the lap splits from the results, I ended up coming through the first lap in 24th position.
I never really warmed up my legs other than about a mile total ride around the side streets before the start, so my legs were in a bit of a shock the entire first lap, but I was getting comfortable by the end of it.
Lap 2
I made up some ground early on lap 2 and picked off a couple spots in West Ridge and maybe another one out in Reigel Park. My legs were warmed up and I was feeling good now and seemed to get into a rhythm in the trail. I never could get in a train going down the Gandy Dancer and was always ripping it solo.
I would have people start to catch me on the Gandy, but I know the Erratic Rock climb well and could usually pull back away going up Erratic. I think lap 2 is when I set a bunch of PRs for the various Woolly trail segments set up in Strava.
The other thing that was happening in lap 2 is that the trail was just crumbling in some sections because it was so dry and it had been ridden so many times now with all the other races going on. It was crazy dusty and loose. Big Oak is one of those segments that is fairly flat, but with a lot of twisty tight turns. It was loose, slippery and unpredictable… but I still set a PR on my second lap through it.
I ended up coming through the 2nd lap in 21st place.
Lap 3
I got a little nervous in lap 3 when I had the hint of some leg cramps kick in. I hate that feeling… I don’t know exactly what my issues have been, but I’m guessing it has a lot to do with my diet. I also get myself dehydrated as I go through the day and realize I haven’t been drinking any water. I think I’m drinking too much coffee as well.
Anyway, I proceeded with caution through some of lap 3 as I was unsure where these leg cramps were going to go and lap 3 ended up being my slowest lap. According to the lap splits, I got passed somewhere during lap 3, but I really can’t remember where that would have been.
I remember getting caught on the Gandy by a guy right at the entrance of Erratic Rock, where he made the pass. We didn’t even get to the first left hand turn and I was on his wheel. I gave him a chance after the turn and then asked to pass and he didn’t move. We got to the flat and started up the next loose section and I needed to get around him and found a place to pass. I never saw him again by the time I got to the top of the Erratic Rock Climb.
I came through lap 3 in 22nd place and was feeling good to head into the last lap.
Lap 4
I rode a strong 4th lap and was able to reel back a few positions throughout the course. The course itself was getting crazy loose. I’ve never seen it that dry and dusty. Some of the off camber spots were just falling apart they were so dry and loose. You really had to be careful in some of the corners.
Anyway, it felt good to have the legs to stay in it at that pace for another lap and then reel a few people in on the last lap vs being depleted and falling back in positions. I was tired, my legs were going in and out of some cramps, but I was able to regulate my effort enough without dialing back to much and kept the cramps at bay. After the race, they never came back again either.
I ended up coming through the finish in 19th place out of 39 with a time of 2 hrs and 17 mins and a little over 13 minutes behind the winner Jeff Hall and just over 7 minutes from the 3rd place podium spot.
Final Thoughts
I’m still trying to register in my brain how and where I could ever pick up 3+ minutes per lap, which is how much faster Jeff Hall was per lap. That is a ton of time and hats off to Jeff for what he does out there. He actually had a 2 minute lead over 2nd place Brendan Bellew, who had a 3 and half minute lead over 3rd place Samuel Berkland. This put me over 7 minutes away from any podium spot.
I think I might do more of these races this year. I think it will be good for me and since they are on Sundays… it is likely going to be the easiest racing for me to fit in this year as it is a little easier for me to be out of the shop on Sundays. It was nice to do some racing again.
Race Data



2017
Results
| Steve (Marathon) | 10th overall |
I was back on the dirt this past weekend at the Woolly MTB Race in St. Croix Falls, WI where I raced the Marathon 4 hour lap race. This was the season opener race for the Minnesota Mountain Bike Series. I did 2 of these 4 hr races 3 years ago when I was getting back on the bike and things went much better this time around. I think I barely survived the Woolly Marathon race 3 years ago and this year I managed to stay on the lead lap, finishing 10th and less than 21 minutes back from the winner after 4 and half hours of racing. Anyways, here is the report…
Woolly MTB Race Course Layout

The course included all of the Woolly MTB trails except for Riegel Park singletrack, which is where the rock garden is at. Most of the race categories skipped the section of trail, known as West Ridge on the first lap to make sure the field was spread out before sending everybody into the singletrack.

My original elevation profile showed 4,200 feet of climbing throughout the race, but after hitting the elevation correction option in Training Peaks it now shows about 2,700 ft of climbing over the 7 laps that I completed with a single lap elevation gain of around 630 feet. Strava still shows around 4,200 feet after hitting the elevation correction there, so who knows which one is correct.
Lap 1
It didn’t feel like we neccesarily left the shoot that fast, but things seemed to continue ramping up as we made our way around the soccer field and crossed the start/finish line. As I mentioned above, we skipped West Ridge (more technical) on the first lap. 1 guy immediately took off the front in a break. I do not believe he is the one that actually won the race though.
There is a road crossing when you hit the paved bike path and on the other side of the road crossing there happens to be a narrow driveway that parallels the bike path. All of a sudden we realized we were on the driveway instead of the bike path, but luckily found an opening in the brush seperating the 2 and was able to hop over to the bike path. From what I could tell, it was everybody in front of me and more following.
By this time, we were on the hammer hard and it certainly didn’t feel like we were setting off on 4 hours of racing… We stayed on the gas all the way around the field, up the ski trail and right into Wissahickin. I heard a couple guys in front of me commenting on this being a bit of a high pace for 4 hours of racing left. I wasn’t redlined, but my heart rate was up in my threshold zone and dancing with going over on occasion.
I knew I couldn’t hold this pace for 4 hours, but I was feeling fairly good was interested to see how this would play out. I was sitting about 8 back with a couple guys behind me and could see that we were putting a little gap on the rest of the field through the switchbacks of Wissahickon. I figured I’d stay with the pace for awhile and see what happened.
You would have thought we were sprinting for the finish line when we popped out of Wissahickon and hit the Gandy Dancer. I gave myself a little space in front of me when we hit Erratic Rock, knowing that it was uphill for awhile and we might stack up anyways. I know that trail entrance well now and if you have open trail, momentum will take you up the first short section to the first left hand turn where the climbing continues.
The pace seemed to dial back a little bit by the time we were coming back down out of Erratic Rock and was more long term manageable. Still a little more than I was going to be able to stick with for the next 4 hours, but much more comfortable. We flew through Big Oak and were on our way around the soccer fields to finish the first lap. I dropped off the back of the front 10 a little bit as we rounded the soccer field and figured I’d give myself some space as we hit West Ridge, which is the more technical section of the Woolly Bike Club Trails.
I actually set PRs on just about every section of trail during this first lap. I was either getting a lot faster or there would be some suffering later…
Lap 2
I felt good hitting West Ridge and was glad I gave myself a little space as we did stack up a little bit in a couple of the switchbacks where I ended up back on the wheel of the guys in front of me. I felt the leg burn on the hills leaving West Ridge and let the guys roll out in front of me a bit on our way to the next trail section, but kept them in sight. I could see the guys out in front of me a short distance for most of the second lap and could see a few in the gap behind me as well. It was time to settle into my own pace as I had another 3 and a half hours in front of me.
Lap 3
Somewhere in lap 3, I felt some tightness in my legs as if some cramps might start up. I was feeling the effects of the harder start and dialed back some more. I think I was also carrying some dehydration with me into the race. I think it was lap 3 as well that I saw Jason from the Woolly Bike Club working his way up behind me through the switchbacks. I think my lap time dropped off by nearly 2 minutes on lap 3.
Lap 4
Leg cramps hit real heavy at the start of lap 4 through some of the switchbacks in West Ridge. My legs basically locked right up on me as I crested one of the really short hills. I think this is where Jason starting catching me and was close enough that we exchange a little short conversation. I remember coasting through one of the sections with my pedals parallel and legs locked right up. I wasn’t quite sure what to do and was afraid to try and pedal. They relaxed just in time to hit the hill and I was able to crank up, but they started locking up again near the top. They were extremely painful leg cramps.
I think I ended up riding most of lap 4 on and off with Jason. This was good, as he is a machine in the singletrack and kept me pusing hard. I was able to maintain my pace through most of the lap, aside from some of the moments of cramping up. I ended up dropping another minute off my pace.
Lap 5
My pace dropped off significantly on lap 5 as the leg cramps were extreme through most of the lap. I just remember cranking my pedals through the painful cramps in both legs and it almost felt like I was just tearing my muscles apart with every pedal stroke. It was not comfortable to say the least. I decided to guzzle down most of the CarboRocket that I had left in my hydration pack and downing as much extra water with it as I could. I stopped and filled up my water bottle at one of the aid stations as well.
I think lap 5 is where Jason ended up out in front of me coming out of Wissahickon and then I eventually lost sight of him. I knew I was within the time frame to be able to get a 7th lap in, but my leg cramps were the worst I’ve ever had and figured if I didn’t dial back some more and get the fluids digested, that I wouldn’t be able to finish the 7th lap anyways. My lap time dropped nearly 3 minutes off from my previous lap.
Lap 6
This was my slowest lap of the race. I new at this point that I was easily going to make the 4 hour cutoff to start another lap and I wanted to have a strong finishing lap 7. About mid way through, I had a sense that the cramps were lightening up a little bit. Maybe I was starting to rehydrate or something. I had now finished off 2 liters of CarboRocket, 2 large water bottles and the random water cup handups throughout the race.
Lap 7
I hit west ridge knowing this was going to be my last lap and wanted to leave everything I had left out on the trail. I was kind of stacked up with some of the comp class racers, but was pacing through most of west ridge at about the same click. I heard a couple of them coming up behind me when we hit the bottom of the first hill and I didn’t want to get in the way, so I hammered down to not get in the way. That’s when the leg cramps hit hard again…
About halfway up the second big hill in West Ridge I ended up letting a couple of them by as I was struggling to pedal through the cramps and they had more legs than me at this point. There were still quite a few of them back there, but not gaining any ground on me, so I stayed on the grind and made my way out of West Ridge.
I felt fairly good through most of the rest of this lap with only a few more minor cramps and after 7 laps was still able to hang with most of the comp class guys that were around me through all of Wissahickon, Erratic Rock and Big Oak. I put the hammer down when I dropped out of Big Oak and put a pretty hard effort in for the finish. I actually had enough left in the tank to stand on the pedals for a hard sprint across the line. There really was no need as I wasn’t heading across the line with anybody, but it was a bit of a mental win to stand on it for the finish after 4 and half hours.
Woolly MTB Race Summary

I honestly was going for and expecting to finish a little better than 10th, so I was a little disappointed. However, I feel like I had a really great race aside from the bad leg cramps. I was able to go out pretty hard and hold my own with the lead break for quite awhile and then still race for another 3+ hours. I was also able to have a strong finish after a couple hours of suffering through the leg cramping.
Who knows what triggered the bad leg cramping, but I’m actually still feeling dehydrated 3 days later as I type up this report. I’ve been guzzling water down like a fish since the race. I play around with my diet a lot and in the last week had started going with a lot more whole grain and complex carb type of foods, which could have something to do with it also. I could assume that my body may not have been absorbing the fluids as much, with my fluid intake getting absorbed up by the grains and carbs and being used up to digest them. I plan to take some nutrition and diet classes/training this fall to learn more.
I don’t think it is because of going out too hard. My peak heart rate never got near my max and I peaked out at 176 bpm. My Threshold is right around 170 bpm and my average heart rate the first hour of the race was around 165 bpm.
As far as my riding goes… I have no doubt that my singletrack skills are going to improve greatly after doing a handful of these lap races throughout the summer. I was feeling pretty comfy in the singletrack by the end of the race and learning better lines through the switchbacks and flowing better. A lot of my loss of lap time was coming from my legs locking up and literally having to go in coast mode until they would relax again.
When I did this race 3 years ago, I finished 28th out of 39 and 2 full laps behind the winner, so I should be real happy with my improvements in the last 3 years. Also, when I did this race 3 years ago, I was doing a lot of walking in West Ridge the entire second half of the race. This year, I never had to walk anything and the only time my foot touched down the entire race was when I stopped to fill my water bottle at the aid stations.
Anyways, I plan to get 5 or 6 of these Minnesota Mountain Bike Series Marathon 4 hr lap races in throught the season. I decided to 2 these for a few reasons… I thought it would be great training for the Marji Gesick 100 and I also figured it would help me improve my singletrack skills. I also think they are a good middle ground of endurance racing that you get to improve XC skills, build endurance, but not have to take weeks to recover from one race like you would in a rugged 100 miler. I really enjoy racing and wanted to race more often instead of spending half my time recovering. I was able to do this race on Sunday and be mostly recovered in a few days.
Anyways, I’m doing an Adventure Triathlong this coming weekend and then the Minnesota Mountain Bike Series Race #2 at Detroit Mountain the weekend after that. I’ll have plenty of race reports in the coming months!
2015
Results
| Steve (Comp) | 42nd overall, 7th in age |

I’ll preface this article by saying that this race was a mechanical disaster for me with a couple other mishaps, but I still finished. I started out the morning by not even planning to head to the race, when I woke up to thunderstorms. As I kept watching the weather and after getting a text from a buddy, I found out that it hadn’t rained much over to St. Croix Falls. So there I was scrambling to pack up and get over there. This would be my first time racing in the Comp class and I was curious to see how I would do against the competition.
There I was at the start line, not really feeling all that great to begin with and the race was on. I immediately was hearing rattling from the rear of my bike and we weren’t even 50 yards from the start line. My brakes were good, suspension felt fine… I didn’t know what it could be and I didn’t want to stop yet, so I kept pressing on and fell into the back of the line as we headed into West Ridge, the more advanced / technical section on the Woolly trails. I was feeling comfortable enough to pass the guy in front of me and hang on the wheel of the next guy up.
I made it up the climbs in decent shape and hammered on the pedals as we left West Ridge. We were dropped out into the open area and then on to a connector trail over to the paved bike path. Aside from my tires being low profile and low rolling resistant tires, they were ready to be replaced as the knobs were all rounded off. I pushed it too hard in the connector trail and completely washed out the front end and down I went. I brushed the mud off me and took a look at the rear of the bike to see what the rattling was.
I found that the entire rear gear set was loose. This was totally my fault. I had removed it from the rear wheel to make a bearing adjustment and must not have final torqued it. I’ll chalk this up to the kids distracting me in the garage or something as I surely couldn’t be that irresponsible… I hadn’t had the bike on the trail till now and only down some asphalt a couple miles since putting the rear wheel back on, so I hadn’t noticed the issue before. I figured there wasn’t much I could do at this point and decided to press on as long as it didn’t come completely loose.
Things didn’t end there… Less than a mile later, as I shifted up a couple gears for a short climb, my rear derailer sucked right into my spokes. I jumped off the bike to find that my derailer hanger was bent with my derailer wrapped up in my spokes. I must have bent the hanger when I crashed. I quickly struggled with the chain and derailer to pull them out of the spokes and then straightened out the derailer hanger the best I could. Since I was stopped, I figured I would assess the situation of the loose gear set. I tried to tighten it by hand the best I could and reassembled the wheel to the bike. It was still loose, but I figured it would not back all the way out. I had lost a lot of time at this point and the next wave of riders had caught and passed me now.

I was scrambling now, I hadn’t even gotten through the first lap of the race and had lost a lot of time I was pushing the heart rate to much to try and get back on. I almost decided to drop out of the race at this point. My bike wouldn’t shift worth a darn or hold the gear that I put it in and the rear cassette was rattling like a tin can of bolts. I couldn’t quite though, I wanted to see what I could do in the Comp class. This was my early season gauge to see where I stood. I kept on and told myself I would finish.
Once I got going again, I was riding ok. The shifting was driving me nuts, and I couldn’t really find the right gear ever. I made it through the first lap and headed back into West Ridge again. There I was headed up the last big climb when I heard a big “POP” and then some additional rattling. I quickly pulled off to find a broken spoke hanging off the rim and my wheel very much untrue. I was able to unthread the spoke and jumped back on yet again. The rear wheel was wobbling pretty good, but I just wanted to finish at this point.
My mechanical events were over now, aside from having to ride with the aftermath of not being able to hold a gear and my rear wheel wobbling. I wasn’t even half way through the race yet. My next issue, is that I didn’t pack any food. This was a mistake and about an hour and a half into the race, I was getting hungry. I could feel the fatigue setting into the legs and they needed some fuel. I was unprepared.
I entered West Ridge for the start of lap 3, the final lap, with some pretty fatigued legs that were in need of fuel that I didn’t have. I pushed on and had to walk it up one of the climbs. I knew that I just needed to get through these climbs and the rest was fairly manageable. I was definitely feeling it at this point and just wanted to finish. I got a bit of a second wind coming through the downhills on Erratic Rock and Big Oak. I gave it everything I had left to get around the soccer fields and across the finish line.
At the end of the day, I ended up 7th place out of 8 guys in my age group and 42nd out of 54 guys in the overall Comp class. I actually feel pretty decent about it, given all of my mechanical issues and crashing. I figured without those issue, I was at least in the hunt of mid pack and could hang with the Comp Class group to a certain degree. Although I do have some work to do, I can improve and work from this baseline. I really need to continue to work on the endurance of my leg strength. I also learned that I definitely need to be prepared to take in at least a 100 calories every hour when I get to the Lutsen 99er and Maah Daah Hey 100.
Thanks for reading. We all have bad days and bad races. I hope this inspires you to keep pressing on the next time you are having a bad day or bad race. Until next time… Keep hammering on those pedals.