Eurovelo 15

Introduction

This August marks our 10th wedding anniversary, and what better way to celebrate than with an epic cycling adventure? A few years ago, I stumbled upon the Eurovelo 15 route, which traces the Rhine River from its source at Oberalp See in Switzerland all the way to the ocean at Hoek van Holland in the Netherlands. Eurovelo is an organization that creates long-distance cycling routes across Europe, and at the time of writing, there are an impressive 17 routes, some still under development. The Rhine route spans about 1’450 kilometers (900 miles), with most sections offering the option to ride on both sides of the river. After careful consideration, we knew this was the perfect journey to satisfy our shared sense of adventure.

Preparing the route

I initially checked out the GPX files provided by Eurovelo, but they were a bit disorganised, so I decided to follow the EV15 route using the OSM Cycle map on Ride with GPS (RWGPS).

After mapping out the full 1’461 km (908 mile) route, I split it into roughly 200 km (125 mile) sections using the “split route” feature on RWGPS. I chose this distance because:

  • It ensures acceptable loading times on my eTrex
  • The Wahoo can still provide turn-by-turn directions
  • The loading times on RWGPS remain manageable when adding points of interest (POIs)

Once the route was divided, I aimed to find POIs every 25 km (15 miles) or so. Most of my planning skills come from a great YouTube tutorial that really helped streamline the process.

Ride with GPS

The things I marked are:

  • S = Supermarket
  • E = Food (Dutch: eten). This includes places like bakeries and snack bars where you can quickly grab something to eat. I chose not to mark restaurants, as dining in takes more time, and there are so many around that a quick search on Google Maps will easily point them out.
  • A = Pharmacy (Dutch: apotheek). I figured it would be good to mark these in case we needed some first-aid supplies
  • $ = ATM
  • B = Gas station (Dutch: benzinepomp). In most of Switzerland and Germany, supermarkets are closed on Sundays, but gas stations generally remain open. In order to still be able to get something to eat and drink I marked these down on our map
  • T = Train station. I wanted to mark these because they have sanitary facilities available 24/7 and if we decided to “scratch” we could simply hop on a train home. Also they’re a great source to grab a quit bite to eat, even on Sundays.
  • C = Campings.

In order to not be overwhelmed by waypoints on my eTrex during the ride, I put a waypoint before the town listing all facilities available. So for example: SEA$T Bonaduz means in Bonaduz there is a supermarket, a place to eat quickly, a pharmacy, an ATM and a train station. 

Here you can see how the prepped route looks like

Stage cards

For a quick and easy overview, I created small cards for each stage using Excel and printed them out. I kept these cards in my frame bag for convenient route planning on the go. Here’s an example from stage 1:

Legend

  • Σ EV15 distance = the total amount of kilometers done
  • Stage distance = the amount of kilometers completed in stage 1
  • Name = the name of the town we pass
  • Length = the distance until the next town
  • Presence of different points of interests (e.g. Supermarkt) explained above
  • Notes: name and telephone number of various campsites (W = washing machine present, D = dryer present). I also included some small notes here and there

Packlist

Unfortunately, I forgot to take a picture of my setup before we started, but I hope this shot of me cycling down the Oberalppass will do. Here are some highlights of my gear:

  • My bicycle is a 2020 Specialized Diverge Comp E5.
  • The Tailfin carried essentials like my rain jacket, a warm long-sleeve fleece, a down jacket, and some bike maintenance tools.
  • My aerobars are from Rose (Race Attack R-2 J-Bend)
  • The aero bag is a Cyclite Handlebar Aero Bag where I kept frequently used items like the stage cards I made, chamois cream, wet wipes, my power bank, and iPhone.
  • In the frame I carried my two water bottles (Fidlock 590 mL).
  • All my snacks (mostly Haribo and dextrose tablets) were stored in the Evoc Top Tube bag.
  • The lamp is a Ravemen PR 2000 which doubles as a 6000 mAh power bank
  • For navigation, I used the Garmin eTrex 35 Touch, made with custom maps I made.
  • A Nightcore NB 10’000 mAh power bank powered my Garmin.
  • The microphone attached to my helmet is a Buddy Chat Duo, which allowed us to talk while cycling.
  • I also brought my SPOT tracker so family and friends could follow our progress online.

Travel journal

Day 0 & 1: Andermatt to Chur

To save time and avoid any unnecessary hassle on Saturday, we decided to head to Andermatt a day earlier, on Friday. With clean bikes, fully charged batteries, and our glycogen stores topped up, we hopped on a train to kick off this incredible adventure. The journey offered some breathtaking mountain views. Since we hadn’t packed for the chilly night temperatures of 9°C (48°F), and Marco was starting to feel a bit under the weather, we opted to stay at a hotel instead of camping. We found a lovely place called Hotel Piz Badus, named after one of the nearby mountains. Although the hotel was on the pricier side, the room’s quality was well worth it—it looked absolutely stunning

After settling into our hotel room, we headed to the city center for something to eat. We found a great spot called Pinte Pub & Club, where we enjoyed some delicious burgers.

We started Saturday feeling refreshed after an amazing night’s sleep and headed to breakfast, which was excellent. In Switzerland, there’s a type of bread called Butterzopf (it’s a kind of butter bread), and with a bit of honey or jam, it provided enough energy to fuel us up the mountain. After eating like there was no tomorrow, we were ready to kick off our epic adventure.

The Oberalp Pass was an incredible climb. The first part has a dedicated cycle path, though it unfortunately ends once you leave Andermatt. Still, the road felt very safe, with cars driving in a cyclist-friendly manner, making the ascent much less intimidating. I had some anxiety about the climb, especially since I hadn’t cycled for nearly 1.5 months due to tendonitis in my back, and I’d never tackled a mountain pass before. Thankfully, my stamina held up, and the slope wasn’t too steep. I soon found my rhythm, settling into a steady gear and pace.

Even though our cycling adventure had officially begun, I struggled at first to get into a vacation mindset. The thought of covering nearly 1’500 km felt overwhelming, and I couldn’t quite wrap my head around the distance. It didn’t feel real—almost like we’d just ride a regular distance and head home.

The higher we climbed, the more breathtaking the views became. Marco captured some amazing photos along the way.

At the top of the pass (2’046 meters, 6’713 ft), we reached a small lake, the source of the Rhine River. Seeing the lake and the little shop there was a turning point for me—it finally hit me that our adventure had truly begun! The excitement kicked in, and from that moment, I fully embraced the holiday and ultra-cycling mindset.

Of course, what goes up must come down, and down we went! The descent felt much steeper than the ascent—perhaps because of our speed. We had to stop a few times to rest our hands, which were cramping from constant braking.

I was a bit worried about gravel on the road, fearing I might slip and tumble down the mountain 🫣, but thankfully that was just my anxious mind at work. The roads were clear, the drivers were respectful, and there wasn’t even much wind. In short: an epic climb followed by an epic descent

After the descent, we hit a lot of gravel paths, which made for some fun but challenging sections. In total, we climbed 1’340 meters (4’400 ft), and the effort was definitely rewarded with some stunning views.

Midway through, we stopped at a lovely little restaurant, where we indulged in a well-deserved pasta and pizza. It was the perfect way to fuel up and take a breather before continuing on.

In Chur, we relaxed on a terrace in the heart of the city while enjoying delicious banana split ice cream. Once we had replenished our energy with sugar, we visited a convenience store and grabbed some bread and Nutella for the next day. I also managed to pick up some Ibuprofen for my shoulder at the local pharmacy.

After checking the weather reports, we saw rain and thunderstorms were on the way. Not wanting to brave those conditions in the mountains, we decided to find a hotel in Chur. Luckily, hotel Drei Könige was just a few meters from the cycling route, and they let us bring our bikes directly into the room, saving us the hassle of unpacking our gear. I was especially relieved we opted for the hotel, not just because the rain had started, but also because I was beginning to feel pain in my shoulder. Exhausted we went back to the hotel for some much needed rest.

The recap

The stats

  • Total distance: 103 km (64 miles).
  • Total time elapsed: 9 hours and 51 minutes.
  • Moving time: 7 hours and 27 minutes.
  • Stopped time: 2 hours and 24 minutes
  • Average moving speed: 13.9 km/h (= 8.4 mph)

Day 2: Chur to Arbon

Our rest wasn’t the best, as we both woke up around 3:30 AM feeling like we were in a sauna. We debated opening the windows but held off because of the mosquitoes. Eventually, the heat won us over, so we cracked the windows, hoping for some relief. Unfortunately it didn’t help much, so, being awake anyway, we decided to make the most of the early start. After a quick breakfast of bread and Nutella, we set off for day two, leaving the hotel around 6:30 AM. The price-to-quality ratio of our hotel was, well, unforgettable—but not in the way we’d hoped. For what we paid, we expected at least a decent experience. Instead, it was so bad that it’s now burned into our memories for all the wrong reasons.

The temperature outside was fantastic. After a night in such a stuffy room, the cool, fresh air felt like pure bliss. We checked the weather report and saw that a lot of rain was headed our way. Determined to stay ahead of the rain for as long as possible, we geared up, turned on all our devices, and started the day in the early morning darkness, still enjoying dry weather.

After about 30 kilometers, a light drizzle began. The route was scenic, but we spent more time away from the river than expected, often cycling through the countryside. The occasional climbs rewarded us with stunning views of the Rhine and countryside, which made it all worthwhile

As the ride went on, the light drizzle turned into proper rain, about 2–4mm per hour. By the time we reached our first stop, we were soaked, but our spirits were still high. Every pedal stroke sent water splashing from my shoes, which was almost amusing. Thankfully, we found an open AVEC at a train station—quite a rare find on a Sunday in Switzerland when most stores are closed. We grabbed some snacks, replenished our water, and picked up some fresh buns from a nearby bakery. The train station’s bathroom, however, was an adventure in itself – let’s just say I felt like I needed to bathe in alcohol and bleach afterwards. It was awful. After a quick stop, we decided to continue our ride, undeterred by the rain.

A few kilometers later, I realized I was still under fuelled, so we made a quick stop at an Agrola. After grabbing a bite to eat, we were ready to take on the rain again, leaving Buchs behind and heading towards Arbon.

The bike path soon turned to gravel, and as the rain picked up to 4 mm/h, the gravel became a thick, muddy mix, about 2–3 cm deep. It slowed us down considerably, but we pushed through the muddy terrain for several kilometers, determined to make progress despite the weather.

At around 80 kilometers, we couldn’t resist taking a break at a cozy little restaurant called Habsburg near Widnau. The idea of stepping out of the rain for a while was just too tempting. We warmed up with a hot cup of tea and treated ourselves to the biggest burgers on the menu, which were absolutely delicious. It was the perfect way to recharge, and we even had a chance to dry off a little.

Around this time, our Wahoo started having battery issues. Normally, it lasts for about 17 hours, but it alerted us that the battery was running low just a few hours into the ride. We weren’t sure if we had forgotten to charge it properly or if the battery was starting to fail. Fortunately, our Ravemen PR2000 lights double as power banks, so we hooked the Wahoo up to keep it going without any problems.

When we got up to leave, I noticed a big puddle of water where we had been sitting, thanks to our soaked clothes. It was tough leaving the warm, dry restaurant behind, but we geared up and headed back into the downpour.

This was the day we completed stage 1, and after 100 kilometers of riding through relentless rain, it was a relief to see the end of the stage near Geißau. Just as we passed the finish marker though, my eTrex suddenly shut down and wouldn’t turn back on. I tried everything—swapping AA batteries, connecting it to different power banks—but nothing worked. At that point I started to suspect it had short-circuited from the rain. Thankfully, our Wahoo/Ravemen setup kept us on course, and we successfully navigated the final 30 kilometers, without having access to our preplanned waypoints.

Seeing the Bodensee was a huge relief, and we immediately recognized much of the route from the 200 kilometer Audax we completed a few months earlier.

As if having two devices fail wasn’t enough, our Buddychat system stopped working right before we reached Arbon. We’ve been using Buddychat, a Bluetooth microphone setup on our helmets, for nearly four years, and it’s been great for hands-free communication. The batteries usually last about 10 hours. My microphone still worked, but my speaker gave out, making it impossible to talk to Marco. Then, just as we entered the hotel, Marco’s Buddychat short-circuited, leaving him unable to communicate with me and even turn his headset off.

Since we were thoroughly soaked, camping was off the table. We opted for a cozy hotel, which was a fantastic choice—they even let us bring our bikes into the room. Stripping off our wet, muddy clothes was such a relief. My shoes, legs, and bib shorts were drenched, but my shoulders were dry. It seems my cycling shirt had absorbed water from my legs, but my Gore Shakedry jacket did its job, keeping my upper body dry. Of course, no jacket can stop water from wicking up from below.

Traveling light meant I hadn’t packed a second pair of bib shorts or cycling pants, and with no radiators in the room, drying everything became a bit of a challenge. After seeing the shower, however, all I could think about was washing off the mud and grime so I decided to put that problem on hold for a moment. The warm, soapy water felt like heaven after being soaked all day. My feet and hands were wrinkled and white, and the skin on the bottoms of my feet had started to break down. Marco had the same issue.

After my much-needed shower, I rinsed out my bib shorts with soap and water and tried to dry them using the hairdryer in the bathroom. I was a bit frustrated because this usually takes forever, and I just wanted to lie in bed and relax. Luckily, Marco came up with a brilliant idea. He strapped the wristband of my watch around the hairdryer, keeping it on. I set it to the lowest setting, and we managed to position it so it would dry the bib shorts without anyone having to hold it in place.

This DIY drying system worked like a charm. Within two hours, everything was clean and dry. Once my feet were warm and dry, they quickly began to recover. I also tried drying the eTrex with the hairdryer, but unfortunately, it still wouldn’t turn on.

While enjoying the warmth and comfort of the hotel room, we brainstormed a solution for our communication problem. Cycling is so much more enjoyable when you can share the experience, and not being able to chat with each other took a significant part of the fun out of it. Ordering replacements wasn’t an option since we were on the road, but after some creative searching, we found an alternative—Sena helmets. Luckily, a bike shop along our route the next day had them on sale, so we planned to stop by and see if they were still available.

Before calling it a night, we made a quick trip to the supermarket next door and treated ourselves to some Griesstöpfli to celebrate our small victory over the rain and the day’s challenges.

The recap

The stats

  • Total distance: 128 km (79 miles).
  • Total time elapsed: 8 hours and 44 minutes.
  • Moving time: 6 hours and 42 minutes.
  • Stopped time: 2 hours and 2 minutes
  • Average moving speed: 19 km/h (= 12 mph)

Day 3: Arbon to Basel

Waking up in a warm, cozy bed after a night of heavy rain felt like pure luxury. For a moment, I considered rolling over and ignoring the world outside, but a quick peek out the window revealed that the rain had finally stopped! That was all the motivation I needed to get moving. We headed down for breakfast at 06:30 sharp, and I have to admit, the buffet was too good to resist—I may have eaten more than I should have. Sitting by the window, we watched as the clouds slowly started to clear, promising us a much better day ahead.

With our bellies full and our spirits lifted, we retrieved our bikes from the room and set off. Unfortunately, the eTrex, which had been drying out all night, still wouldn’t power on and we had to rely on the Wahoo for navigation.

The road from Arbon to Radolfzell was wonderful, and though we had cycled part of this route during a 200k audax before, the beauty of the landscape hadn’t faded. The grey clouds soon gave way to brilliant blue skies and warm sunshine, instantly boosting our morale and making the ride even more enjoyable.

After about 50 kilometers of riding without much communication, we reached Radolfzell and found a bike shop that still had the Sena helmets we’d been eyeing. They even had our sizes! After a quick tutorial on the buttons, we paired our helmets and were back to chatting effortlessly on the ride. The sound quality was fantastic—it was hard to believe the microphone was integrated into the helmet.

Feeling accomplished after solving our communication issues, we took a break for lunch at a bakery, where we recharged the helmets using the Nitecore power bank. It worked like a charm, and with charged batteries and topped up glycogen stores, we were ready to tackle the next part of the journey.

I want to take a moment to explain why we use a communication system while cycling. First, safety is a big reason. Often, one of us is leading the way, and it’s crucial to alert the other about any hazards like unleashed dogs, potholes, or approaching traffic—especially on sharp turns with low visibility. Second, it’s incredibly helpful for coordination. If one of us gets caught at a red light or needs to make a quick stop, we can easily inform each other and stay together without any hassle. Third, navigating busy areas can be tricky, and being able to talk through directions in real-time helps us avoid wrong turns and unnecessary delays. And finally, perhaps most importantly, it’s just more fun! Sharing jokes, pointing out cute animals, or admiring the scenery together adds so much to the experience.

With our newly synced helmets, we made our way to Schaffhausen, passing by the stunning Rheinfall waterfalls. Even though it was packed with tourists, we managed to snap a few great photos before continuing to the nearby town of Jestetten for dinner. There, we enjoyed the best schnitzel and spätzle of the entire trip while resting on a sunny terrace.

Feeling refreshed, we realized we were only 80 kilometers away from home. Tempted by the idea of sleeping in our own beds, we made the ambitious decision to push on. The route out of Jestetten, however, was more challenging than I had anticipated, with steep climbs that made me long for the steady ascents of the Oberalppass. But once we reached Waldshut, the path leveled out, running parallel to the Rhine river, and we were treated to some truly beautiful scenery as the sun began to set. It’s heartwarming to see so many people enjoying leisurely walks along the river with their children, families, or pets. We even spotted a few canoes gently gliding down the river.

We made a quick stop in Laufenburg for some delicious ice cream, which gave me just enough energy for the final stretch. By this point, I was starting to feel the fatigue, but luckily, a strong tailwind helped us along the way.

That day, we relied entirely on the Wahoo for navigation, as the eTrex remained out of commission. The Wahoo’s battery couldn’t last more than 4–5 hours on its own, so we had it hooked up to the Ravemen PR2000 light to keep it going. Without the eTrex, we lost some time looking up waypoints and shops on our phones, which wasn’t the most efficient way to navigate.

Finally, stepping into our home felt surreal. It was a strange feeling, torn between the holiday mindset we’d been in since the start of the trip and the comfort of being back in familiar surroundings. But any conflicting emotions quickly faded once we secured the bikes, took warm showers, and collapsed into bed. I was asleep in seconds, grateful for an incredible day and already looking forward to the next one.

The recap

The stats

  • Total distance: 204 km (127 miles).
  • Total time elapsed: 14 hours and 53 minutes.
  • Moving time: 10 hours and 27 minutes.
  • Stopped time: 4 hours and 26 minutes
  • Average moving speed: 19.5 km/h (= 12.1 mph)

Day 4: Rest day

On the fourth day of our holiday, we took a moment to reevaluate our gear and replace anything that wasn’t working or was broken.

First on my list was the eTrex 35. After spending an entire day in the sun and dry air, it still refused to power on. When I connected it to my MacBook, I received an error indicating that the USB port had shut down because the eTrex was drawing too much power. This only confirmed my suspicion that it had suffered a short circuit during the rain. What an epic failure! Thankfully, I still had my reliable old eTrex 30x, which powered up without any issues. However, upon closer inspection, I noticed that the silicone bumper around the power button was starting to tear and crumble. Given that the unit is nearly eight years old, it was clearly nearing the end of its lifespan. With no other options available, I decided to take it along, planning to cover it with a plastic bag in case of rain to prevent another short circuit.

As for my poor cycling shoes; some of you may have noticed that I don’t use clipless pedals, I prefer regular pedals with regular shoes. Unfortunately, my shoes, which I bought around eight years ago, showed significant wear. After the heavy rain, both soles near the toes had started to detach, making me nearly trip a couple of times. We used our rest day as an opportunity to head into town and search for new shoes. While Merrell no longer offered the same model, I found a good alternative at Transa Basel called Xero Shoes HFS II W.

I also replaced the Cyclite aero bar bag with the Restrap aero bar bag for ease of use and strapped the Apidura bag to my frame.

We spent the day tinkering with our gear, relaxing, and catching up on some Netflix while washing and drying our kit. Despite cycling 130 kilometers in pouring rain and 204 kilometers the following day, I did experience a bit of soreness, but thankfully no severe saddle sores.

Day 5: Basel to Strasbourg

We woke up early and set out just as dawn broke. Initially, we encountered some light rain, along with heavy traffic and bustling streets. Fortunately, the rain let up after about an hour, revealing a beautiful blue sky.

Our first stop came after approximately 50 kilometers at a charming little bakery in the French countryside. I enjoyed a salami sandwich while Marco opted for a chicken curry one. We also treated ourselves to one of my all-time favorite French delights: a chocolate éclair.

The cycling paths in France are very high quality, often far away from main roads and other types of traffic, making for a very uneventful ride. At around noon we stopped at a supermarket to stock up some food. Most of our route followed a picturesque canal leading directly to Strasbourg, where we spotted all sorts of fish swimming beneath the surface and vibrant blue dragonflies with striking black wings buzzing about. The downside however, is that the path is fairly isolated, not really passing through many towns, so finding a place to eat proved to be very challenging. The plan was to hopefully find a restaurant to eat something, but by 14:00 hours we had still not found anything, so we went to a grocery store again and had some fresh French croissants. 

While preparing the route, we discovered a campsite called Clicochic, located about 30 kilometers before Strasbourg, which seemed like a perfect spot to spend the night. After deviating from the EV15 route and cycling an additional 3 kilometers to reach the campground, we learned at the reception that they only accepted campers, not tents. Unfortunately, this wasn’t clear when I planned our route. Feeling a bit disappointed, we returned to the EV15 route to try to find another place to stay. 

Back on the EV15 route, we tried to figure out our next steps while sitting on a small bench. We found another campground called Camping Vagues Océanes in Erstein, but after about 10 minutes on hold, we discovered it was closed and not accepting visitors. After scouring the internet for alternative campgrounds, we realized there were none available that were either open or willing to accommodate cyclists with tents. Swarmed by mosquitoes, we reluctantly decided to book a hotel in Strasbourg.

We chose the ibis Hotel, conveniently located near the cycling route. While they provided a dedicated bicycle parking area, it turned out to be less than ideal. The rack was squeezed between parked cars, and the wheel slots were too wide for our bikes to remain upright. Luckily, we managed to bring our bicycles into our hotel room.

In the room, we were amazed to discover that Marco had been bitten by mosquitoes a staggering 13 times, likely while we sat on the bench trying to decide what to do.

After settling in, we ventured out into Strasbourg, and just a few hundred meters from the hotel, we stumbled upon a lovely steakhouse. After a hearty meal, we returned to the hotel for some much-needed rest.

The recap

The stats

  • Total distance: 161 km (100 miles).
  • Total time elapsed: 10 hours and 51 minutes.
  • Moving time: 7 hours and 43 minutes.
  • Stopped time: 3 hours and 8 minutes.
  • Average moving speed: 21 km/h (= 13 mph).

Day 6: Strasbourg to Germersheim

We woke up early at 05:45 hours, packed our things, and headed down for breakfast at 6:30 sharp. The night at the hotel was okay, but the overall quality left something to be desired. The bathroom wasn’t very clean, and there was an odd smell, almost like Brussels sprouts. To make matters worse, someone had smoked in the hallway, which didn’t help the morning experience. We quickly ate our breakfast and set off.

Even though it was early, the traffic in Strasbourg was intense. The streets were full of cars and cyclists, most of whom ignored red lights and even sighed or swore at us for not following suit. Adding to the chaos was ongoing construction, making it tricky to navigate. It wasn’t exactly a pleasant experience, and I wished the Eurovelo route went through quieter parts of the city.

However, once we left the busy urban area, things got much better. The path led us through a peaceful forest, with only the occasional jogger. Watching the forest wake up, with the sunlight filtering through the trees and dragonflies buzzing around, was a refreshing change. After shaking off the stress from the city, we stopped by a cute bridge for a picture. As we hugged, I felt something tickling my nose—turns out, it was a HUGE cross spider! Somehow, I managed to keep calm. The spider must have fallen on Marco while we were riding through the forest.

A bit later, we stumbled upon a small bakery and treated ourselves to my absolute favorite French dessert: éclairs! Pure chocolatey bliss wrapped in pastry. It’s probably for the best that they’re not available where we live, or I’d have to do a lot more cycling to burn them off.

We continued cycling along the Rhine, chatting and enjoying the view, still buzzing from the spider encounter. We came across a small restaurant with a great terrace just in time for lunch. Unfortunately, all the outdoor seats were reserved, so we settled for a table inside. While that wasn’t a big deal, the staff’s attitude was. They were rude, clearly stressed, and made us feel like an inconvenience. After a quick drink, we decided to leave.

Our next stop was a bit farther, so I relied on Isostar, Haribo, and dextrose tablets to keep going. By the time we reached Wörth am Rhein, my stomach had had enough of processed food, and I was desperate for something real. Thankfully, we found a restaurant called Beyerischer Hof. It was packed, and we didn’t expect to get a table, but just as we arrived, one opened up. Although we had to leave our bikes out of sight, there were plenty of other expensive ones parked around, so I wasn’t too worried.

The food was absolutely delicious. I had turkey with spätzle (a type of soft egg noodle), and Marco enjoyed a mixed grill. After getting some proper food in my system, I felt a lot better.

The ride to Germersheim was beautiful, with nature reserves lining the way. We did lose some time taking frequent short breaks to prevent a saddle sore from forming. About 5 kilometers before Germersheim, we found a small restaurant Schleusenhaus where we treated ourselves to some cheesecake.

Upon arriving in Germersheim, I realized I had lost one of the straps I use to secure my SPOT to my bike. From now on, I decided to keep it in my jersey pocket—less hassle and less risk of losing it. We stopped by a local pharmacy to pick up some antiseptic cream before heading to a hotel, as there were no campsites nearby.

The hotel room was nice, but the place wasn’t very cyclist-friendly. We weren’t allowed to bring our bikes inside and had to park them outside in a small garden, which was enclosed by the building but still not very secure. The door to the garden was flimsy, and anyone could easily climb over the fence and open the door from the inside. As I was locking up the bikes, the lady at the hotel informed us that they wouldn’t take any responsibility if they were stolen. It seemed pretty hypocritical—forcing us to leave our bikes in an insecure spot but refusing to take responsibility for their safety.

After we unloaded all our bags and locked the bikes as best we could, we headed up to our room. It was really nice and luxurious, and the shower felt heavenly after a long day of cycling. I rinsed out my bib shorts again and used our DIY drying system, like we had the day before. After tending to my saddle sore, we went into town to stock up on sugar waffles for the next day’s ride and treat ourselves to some delicious ice cream.

The recap

The stats

  • Total distance: 118 km (73 miles).
  • Total time elapsed: 9 hours and 35 minutes.
  • Moving time: 5 hours and 59 minutes.
  • Stopped time: 3 hours and 36 minutes.
  • Average moving speed: 19.7 km/h (= 12.2 mph).

Day 7: Germersheim to Mainz

Breakfast started at 7:00 a.m., and unlike most hotels, it wasn’t a buffet but it was made to order. We enjoyed a variety of small buns with cheese, meats, vegetables, and fruit. After eating, we quickly packed up, loaded our bags onto the bikes, and set off towards Hoek van Holland.

The first village we passed through was called Speyer, which prompted Marco to sing a hilarious “Speyerman” song, sparking a string of ridiculous puns. I laughed so hard I nearly fell off my bike—twice! This is what I meant earlier about how life is so much richer when shared with someone. It’s not just about the support during tough times but also the joy of moments like these.

Our route began through an industrial zone, and as we entered Ludwigshafen, we stopped at a massive shopping mall for a quick bathroom break. The place was so huge it took me a while to find the restroom. Since we couldn’t bring our bikes inside to grab a bite, we decided to head to a bakery I had marked on the map.

However, this turned out to be impossible because the bakery was inside an industrial area, behind a large steel gate with security guards. It must have been some top-secret, highly protected bakery goods! Fortunately, there was a nearby gas station where we grabbed bockwurst in a bun, which is like a giant hot dog. Gas stations are a cyclist’s dream—quick food, plenty of drinks, snacks for the road, restrooms, and even small tools for bike repairs. Truly an oasis for ultracyclists.

After leaving Ludwigshafen, we cycled through a nature reserve, but the road wasn’t the smooth tarmac we’d gotten used to. Instead, it was made of large concrete blocks with 5-10 centimeter gaps between them, making for a very bumpy ride. The jolting took a toll on our arms and shoulders. After 30 kilometers of this rough terrain, we stopped at a small bench to enjoy a sugar waffle we had bought the day before.

Although I had carefully planned our route to avoid ferries, we ended up needing to take two of them. While unexpected, they offered beautiful views of the river.

Further along, we found a small restaurant in the middle of the nature reserve. Feeling hungry, we parked our bikes and sat on the terrace for a meal. Unfortunately, we weren’t the only ones with an appetite! A swarm of flies around a nearby tree started biting us, so we decided to head indoors and enjoy our food away from their attention.

During the meal, we made a rough plan for the rest of the day. We found a campsite near Mainz that seemed perfect and decided to make it our stop for the night.

We missed the second ferry by just a few minutes, but there was a shaded terrace nearby where we enjoyed cold drinks while we waited. The 30 minutes flew by, and soon after crossing, we treated ourselves to some ice cream.

Navigating Mainz was more challenging than expected. Our GPS devices had low reception, and the roads were like a tangled plate of spaghetti. Since the campsite was a bit off-route, we had to adjust our plans on the fly. Despite crossing a bridge too early, we made it to the campsite with plenty of time before sunset.

Campgrounds are another little piece of heaven for ultracyclists—they’re cheap, easy to check out of early, and often have laundry facilities to clean our gear. After setting up our tent, we put the laundry on and relaxed.

For some unknown reason, Marco felt a bit nauseous and couldn’t eat much that evening.

At around 9 p.m., we decided to call it an early night. Unfortunately, that’s also when our neighbors arrived with a large car and some very hyperactive kids. While I was tired enough to block out most of the noise, their friends showed up at 10 p.m. and were still loudly setting up their tent at 11:30 p.m., waking us and other campers multiple times. Luckily, after Marco used his “serious voice,” they quieted down enough for us to finally get some rest.

The recap

The stats

  • Total distance: 141 km (88 miles).
  • Total time elapsed: 10 hours and 52 minutes.
  • Moving time: 7 hours and 5 minutes.
  • Stopped time: 3 hours and 47 minutes.
  • Average moving speed: 20 km/h (= 12.5 mph).

Day 8: Mainz to Koblenz

We woke up at 5:00 a.m., quietly packed up our belongings, and headed to a small garden house set up with tables and benches for breakfast. Our meal was simple—just sugar waffles and water—before we set off from the campground.

Barely 500 meters down the road, my left shifter made a loud pop and went limp, leaving me unable to change gears. Fortunately, it was stuck in the small chainring, so I could still manage a decent cadence to get up the smaller hills. We took a short break for a second breakfast and found a bicycle mechanic in Bingen, which was a rare stroke of luck since it was a Saturday. Realizing that if we didn’t get it fixed today, we’d be stuck until Monday or even Tuesday (since many bike shops close on Mondays), we decided to make a detour.

I managed to ride 40 kilometers using the small chainring and some careful cross-chaining. While it wasn’t ideal and slowed me down, it allowed us to keep moving. One of the things I love about bicycles is how robust they are—there aren’t many mechanical issues that completely halt your ride.

When we arrived in Bingen, we were a bit early, so we backtracked a couple of kilometers and enjoyed a proper breakfast at bakery Lüning. With full bellies and lifted spirits, we returned to the bike shop, only to discover that while the store was open, the workshop was closed for the holiday season. No mechanics were available, and the owner couldn’t suggest another shop.

A quick Google search saved the day, though, and we found a mechanic a few kilometers away who could help. He said it would take about an hour, so we used the time to stock up on supplies—mostly food and sunscreen—and grab some cash from an ATM. When we returned he was just walking out of the workshop with my bike. Perfect timing! I hopped on for a test ride, and everything worked smoothly again. He explained that rust had started forming in the cables, causing friction and eventually snapping the shifter cable. Another thing I appreciate about bikes—maintenance is usually affordable. The whole repair only cost 30 euros. After swapping some cycling stories, we hit the road again.

With my bike now fully functional again, we finally found a restaurant along the Rhine with outdoor seating. The wind had picked up by then, so we played a game of musical chairs with our plates and napkins to keep them from blowing away. Marco enjoyed a delicious turkey steak, while I tackled a big German sausage—it was fantastic.

The ride out of Loreley was beautiful, and though we had a strong tailwind, the heat was intense. The temperature soared to 38 – 39ºC in the shade, and the road was fully exposed to the sun. We made good use of several shaded benches along the way to cool off.

When we arrived in Koblenz, the weather report warned of an incoming thunderstorm, so we reluctantly decided to stay at a hotel. Unfortunately, this hotel had the same “cyclist-friendly” issues as the one from a few days ago. The “dedicated” bike shed was just a poorly designed rack where our bikes couldn’t even stand upright, and the security was laughable. Located next to the central train station with plenty of people walking by, the flimsy fence wouldn’t deter anyone—my grandmother could hop over it without effort (no offence intended dear grandmother). After a brief argument with a rather unfriendly receptionist, we decided to bring the bikes up to our room.

Not feeling quite ready for an early night, we headed into the city center. We found a charming, picturesque terrace where we enjoyed delicious Eastern cuisine and one of our favorite pastimes—people-watching. They served homemade iced tea, and the Holunder flavor was something I’d definitely recommend!

After filling up on good food, we headed back to the hotel. I tried to watch a movie, but I was asleep within a minute.

The recap

The stats

  • Total distance: 108 km (67 miles).
  • Total time elapsed: 9 hours and 26 minutes.
  • Moving time: 5 hours and 15 minutes.
  • Stopped time: 4 hours and 11 minutes.
  • Average moving speed: 21 km/h (= 13 mph).

Day 9: Koblenz to Köln

After waking up, we realized Marco had a grand total of 18 insect bites on his left leg and 7 on his right! As is often the case on our cycling journeys, we opted for another early start, waking up at 5:00 a.m. and heading down for breakfast.

I realize some might find this a bit counterintuitive—why wake up so early after such a long day of cycling? Wouldn’t you want to sleep in to get more rest? While that’s a fair point, we usually go to bed early, ensuring we get enough sleep. Plus, cycling at dawn comes with several perks that make it worthwhile for us. First, there’s significantly less traffic, reducing both the risk of accidents and the time spent waiting at traffic lights. Second, since it was mid-summer, we wanted to make the most of the cool, crisp morning air before the intense heat of the sun took over.

As we continued through various nature reserves, we were treated to breathtaking views. By the time we arrived in Bonn, we were starving. Despite riding along the river, we couldn’t find anywhere to eat. After fiddling with Google for about 10 minutes, we located a small burger restaurant called Mano’s Burger that was set to open at 11:30 a.m. We got there on time, only to find it still closed. Our morale hit an all-time low as we sat there, exhausted and running on empty. Just as we were about to give up and look for something else, the owner arrived at 11:45 a.m., and we couldn’t have been more relieved! We got front-row seats next to our bikes, and he made us two mouthwatering burgers.

With some much-needed fuel in our bodies and spirits lifted, we pressed on toward Köln. The cycling path between Bonn and Köln, however, was a nightmare. It was in such poor condition, it didn’t even deserve to be called a “path.” I’ve ridden on gravel roads smoother than that. Tree roots had cracked through the concrete, making it a real challenge to stay upright and avoid wiping out. Our shoulders and arms took a pounding, and I’m still amazed we didn’t get a flat tire or that the bikes didn’t fall apart from the relentless vibrations.

Unfortunately, the poor road conditions required all our effort and concentration to keep the rubber side down, so we were only able to snap a couple of pictures along the route.

When we reached the outskirts of Köln, we took a small break and decided to make a plan for the day. There was a campsite roughly 45 kilometers away, but after contacting them we discovered they were fully booked. So, with no other campsites nearby, we accepted it would be a short day and continued on to a place called Berger Campsite. This, however, turned out to be one lucky find! Luxurious and beautiful, this campsite welcomed us with a shady spot near the restaurant and restrooms. I love how some campsites always find a spot for cyclists with tents, even when you don’t have a reservation. The showers, while a bit outdated, were clean and spacious. The laundry room had recently been renovated, with brand-new machines and dryers, making it a dream to use.

While waiting for our laundry to finish, we grabbed a bite at the restaurant. I tried to be good and ordered a salad with turkey breast, but when Marco’s roasted chicken arrived, I regretted my choice a little. The smell was irresistible, and I was lucky that Marco, being the gentleman he is, shared some of his delicious meal with me.

With our kits clean and bellies satisfied, we crawled into our tent for some much-needed rest.

The recap

The stats

  • Total distance: _ km (_ miles).
  • Total time elapsed: _ hours and _ minutes.
  • Moving time: _ hours and _ minutes.
  • Stopped time: _ hours and _ minutes.
  • Average moving speed: _ km/h (= _ mph).

Day 10: Köln to Kalkar

The day before, a quick Google search revealed a bakery that would open at 6:30 a.m., so after our usual early rise, we quietly packed up our things and made our way into town for breakfast.

All the cycling had really stirred up my appetite, and I polished off two ham-and-cheese sandwiches, while Marco enjoyed a cheese and egg one. With a hearty breakfast behind us, we set off out of Köln to begin our day.

The exit from Köln was a bit of a mess. The roads were full of detours, and after missing a signpost, we had to backtrack due to a closed bridge, adding roughly 5 kilometers to our route. The constant construction left the roads and cycle paths in rough shape, so we were relieved when we finally made it to the outskirts and back into nature.

When we reached Worringen, we spotted an Aldi and decided to take a break. Marco dashed inside and emerged with two freshly baked croissants. They were absolutely delicious and devoured in no time.

Everything went well until about 9:00 a.m. While cycling and chatting, minding our own business, an insect flew into my helmet, bounced off, and landed on my left forearm. It was clearly not in a great mood because it stung me almost instantly. Everything happened in a split second, and I swatted it away before I could even get a proper look. To this day, I have no idea what kind of insect it was. I quickly took an antihistamine to prevent swelling, but the sting was painful. To make matters worse, the bumpy roads caused constant vibrations, which only intensified the discomfort.

After nine days of cycling, battling heavy rain, saddle sores and bumpy tarmac from hell, the ride started to take a bit of a mental toll on both of us. The road was beginning to feel a bit monotonous, and the insect bite wasn’t helping. It stung and itched simultaneously, which made the ride even more unpleasant.

I stopped at a pharmacy in Düsseldorf to buy some Betadine, hoping it would help prevent infection. The pharmacy was located inside a shopping mall. Unsure whether bicycles were allowed in, and being highly hesitant to leave our gear-laden bikes unattended in a big city like Düsseldorf, Marco and I decided he would stay outside with our bikes while I went in to get what we needed.

Navigating sprawling shopping malls isn’t exactly my forte, I found out. After some wandering, I eventually found the pharmacy, purchased the supplies, and headed back out. But once outside, I realized there were far more corridors than I remembered walking in. I couldn’t figure out the way back.

Every corridor initially seemed familiar but always led me to a dead end. Frustrated, I circled the building, which only made me more disoriented. Finally, I retraced my steps, managed to re-enter the mall, and—this time—found the correct exit. Lesson learned: never leave the pack without my cell phone! I did my best to tend to the insect bite, and we carried on.

That night, we stayed in Kalkar at a campsite called Wisseler See. They had laundry machines and dryers, which we gratefully used to clean out our kit. Afterward, we had a meal at the campsite restaurant and set up our tent for the night. Not long after, we heard a strange, shuffling noise outside. Upon investigating, we discovered a little hedgehog foraging for its dinner in the grassy field. We turned off the lights, wished the hedgehog a good meal, and drifted off to sleep.

The recap

The stats

  • Total distance: 167 km (104 miles).
  • Total time elapsed: 12 hours and 8 minutes.
  • Moving time: 8 hours and 40 minutes.
  • Stopped time: 3 hours and 28 minutes.
  • Average moving speed: 19 km/h (= 12 mph).

Day 11: Kalkar to Wijk bij Duurstede

Another day, another early rise—though this time we allowed ourselves an extra hour of sleep and got up at 6:00 a.m. A quick check on Google Maps pointed us to a small bakery Dünencafe in the next town, which we eagerly headed towards. The bakery was tucked away in the middle of an urban area, not the place you’d expect to find such a gem. The owner told us it used to be a community center, but when the previous owners closed it, they bought the space and turned it into a bakery with a small bicycle shop attached. It turned out to be a great success, and all the pastries were homemade and absolutely delicious.

As we continued toward Hoek van Holland, we noticed a dramatic improvement in the quality of the cycling paths. The closer we got to the Netherlands, the smoother the roads became—miles of silky, black tarmac, which made for an incredibly enjoyable ride.

With the end of our journey in sight, we decided to see if we could buy return tickets home. We took a detour to the train station in Kleve but, after a 30-minute wait, learned that the service desk couldn’t sell international train tickets. A bit disappointed, we decided to try again later in Arnhem, where a larger station might have better options.

Crossing the Dutch border was an exciting moment! It felt good to be back in the country I grew up in. We stopped at the first café we came across, Café Nr. 5 in Huissen, and treated ourselves to some much-needed kroketten.

Upon reaching Arnhem, we headed to the central station to try our luck at the international ticket desk. Unfortunately, the limited options for transporting bicycles on international trains meant we couldn’t get a ticket. A bit of a bummer, but thanks to some creative thinking from my family, I was able to book a Flixbus ticket. After losing two hours, we finally left Arnhem.

Later, at Heelsum, we found a Spar with a small café attached. We enjoyed freshly made sandwiches while recharging our power banks and helmets, giving us a nice break before continuing on.

Our route took us past Amerongen, and it would’ve been a crime not to stop at the most famous cyclist café in the Netherlands: the Proloog. Sitting in the sunshine, we indulged in carrot cake and apple pie before deciding to push on to Wijk bij Duurstede, where we’d camp at Camping ‘t Boomgaardje.

The ride to Wijk bij Duurstede, like almost every kilometer we cycled in the Netherlands, was perfect and scenic. There’s a huge difference cycling here compared to Germany. Dutch drivers are far more respectful toward cyclists, giving plenty of space when overtaking and often yielding the right of way. Cycling in the Netherlands felt like riding in “tutorial mode.”

The campsite was wonderful, equipped with a community shed featuring tables, chairs, a small kitchen, spacious showers, and, of course, a laundry machine and dryer. There’s nothing quite like starting the day with fresh, clean gear. We sat in the shed, watching a movie while waiting for our laundry to dry.

Though the day had gone well, I started to feel a bit concerned about my arm. The swelling had gotten worse, with noticeable redness and soreness. My skin was hot to the touch. That night, I woke up several times due to the pain, my arm radiating heat like a furnace. At one point, I was shivering with cold, likely from a fever. I remember rolling up my sleeve to expose my arm to the cool air, which helped me catch a few more hours of sleep.

The recap

The stats

  • Total distance: 124 km (= 77 miles).
  • Total time elapsed: 12 hours and 8 minutes.
  • Moving time: 6 hours and 27 minutes.
  • Stopped time: 5 hours and 41 minutes.
  • Average moving speed: 19 km/h (= 12 mph).

Day 12: Wijk bij Duurstede to Hoek van Holland

Characteristically, we got up at 05:30 for an early start. The cycling paths, as expected, were excellent, and we rode through a couple of nature reserves I had never visited before. There were a few surprise ferry crossings, something I’ll need to be more mindful of during future planning sessions. It’s not that I dislike boats or water, but missing a ferry can cause significant delays.

As we cycled toward Geldermalsen, I noticed my arm worsening by the hour. The redness kept spreading, and after taking some ibuprofen to manage the pain, I started sweating profusely, confirming my suspicion that I had a fever.

As some of you may know, I’m a doctor, which has its perks—one being the ability to diagnose yourself. The verdict wasn’t hard to reach: I had erysipelas, an acute skin infection. Since it was clearly getting worse, we found a pharmacy in Geldermalsen called Apotheek Alphega where I picked up some antibiotics.

I usually don’t advocate pushing through illness, especially during ultra-events, but with this being our last day on the road, I just couldn’t bring myself to scratch. So, after starting the antibiotics and taking ibuprofen, I decided to give it my best shot and finish the route.

Unfortunately, due to being ill, I didn’t record much in our logbook that day. I do remember facing a lot of construction work, especially around Gorinchem, which forced us to take multiple detours and meant we couldn’t complete the Biesbosch nature reserve.

At Ridderkerk, we encountered yet another surprise ferry crossing. This one runs infrequently, so we ended up waiting 45 minutes for it to arrive.

Finally, we entered Rotterdam cycling over the van Brienenoord bridge, and seeing the city stirred up some emotions in me. I attended medical school there and have very fond memories of that time. Cycling through Rotterdam felt almost like coming home, and I became acutely aware of how homesick I’d become after living abroad for so many years. We even took a detour to visit an Albert Heijn (location Vasteland), my favorite grocery store in the world, where I used to shop as a student.

After leaving Rotterdam, we found a nice café Césant in de Korenbeurs in Schiedam and sat down on the terrace for a meal. Despite a mix-up with our orders, when the food finally arrived, we devoured it. As we sat there, the magnitude of what we were doing began to sink in—we had cycled all the way from Switzerland, and now we were so close to the end.

Approaching Maassluis, we were greeted by Brenda, who cheered us on for the last few kilometers.

In the final meters, Marco and I joined hands, and our front wheels touched the sandy beach of Hoek van Holland at the same time. I can’t quite describe the feeling of standing there, looking out over the sea with the fresh breeze on my face and seagulls flying overhead. Words simply don’t do it justice. The sheer distance of our journey made my head spin, and I could hardly believe that my own two legs—despite battling a fever—had carried me all this way. The sense of achievement was overwhelming.

The recap

The stats

  • Total distance: 144 km (= 90 miles).
  • Total time elapsed: 8 hours and 36 minutes.
  • Moving time: 7 hours and 3 minutes.
  • Stopped time: 1 hours and 33 minutes.
  • Average moving speed: 20 km/h (= 12 mph).

Time to say goodbye

This is the end of it folks. Cycling is unpredictable at best, and downright treacherous at worst. When I set out on this journey, I hoped for an adventure, and an adventure is exactly what I got.

There’s something uniquely different about cycling. In our daily lives, most of our problems are mental, cerebral battles—worries about a mortgage, future plans, or an upcoming presentation at work. These are often hypothetical scenarios that may never happen. But cycling pulls you back into the present. That broken shifter cable we dealt with? That wasn’t some distant, mental concern. It was an immediate, tangible problem that needed fixing right there, in the moment. It forces you out of your head and into real life. And it teaches you an important lesson: there’s no such thing as perfection—there’s only “good enough to keep going.” It makes you appreciate the present moment, which is often far more enjoyable than the drama we create in our minds.

So, if there’s one takeaway from this blog, it’s that. Break free from the theatre of misery in your mind. Dust off your bike and ride. Feel the wind in your hair, the warmth of the sun on your face, the water splashing up as your wheels spin. Leave your worries behind—they’ll be there when you get back. How does it feel to be truly hungry? Do you feel the sun’s warmth? Hear the dragonfly as it flutters by?

Thank you, dear reader, for taking the time out of your day to read my blog. As always, until next time—keep the paint side up and the rubber side down!

PS:
For those of you who tend to worry: with proper care, my fever broke after the second day of antibiotics, and the erysipelas healed within four days. The ride home on the Flixbus, thanks to having panoramic seats, was surprisingly comfortable and uneventful. And as for our marriage—no, we didn’t get divorced after this trip. In fact, we still like each other, too! Hahaha.