Back in 2019, when I cycled along the Moselle River, another cycling route caught my eye — the Vennbahn. It was opened in 2013 along the path of a former railway line stretching from Luxembourg through Belgium to Germany, running through fairly diverse terrain. Its official length is 125 kilometers, and Komoot offers a 3-day itinerary from Aachen to Luxembourg.
I’d been eyeing it for a while, but one thing or another always got in the way — other long weekend plans, the pandemic and the camper van phase, or just not finding a convenient logistics option (I’m not a huge fan of taking bikes on trains). But this time, everything lined up perfectly — warm weather, the long August weekend (August 15–18, 2024), and most importantly, I recently got a larger car with a bike rack. Gotta seize the opportunity!
I arranged to stay overnight with a friend in Kaiserslautern and set off right after work on Wednesday. I arrived around 11 p.m. because there was a massive traffic jam near Karlsruhe due to torrential rain and near-zero visibility on the autobahn. We chatted a bit, had some tea, and went to bed pretty quickly.
Day 1: Troisvierges – Sankt Vith
Kaiserslautern
In the morning, my host suggested we go for a short ride, so we spontaneously cycled to a quirky railway signal museum in Otterbach that only opens five days a year. Nearby was a handy picnic table and an installation made of a pole with colorful insulators — pretty fun. On the way back, we passed an ice cream vending machine — perfect timing. All in all, it was a light morning ride of 15 kilometers over a couple of hours.






After returning, I secured the bike to the car and headed toward Luxembourg — surprisingly, via Belgium. Just before entering Luxembourg, I stopped at a gas station with the usual great prices (currently €1.52 per liter, compared to €1.60 near Karlsruhe and about €1.69–1.71 around Munich).
Hitting the Trail
There was plenty of free parking. I parked, loaded the bike, had some leftover TooGoodToGo pastries, drank some water, and set off. At the station, I spotted some inattentive geocachers trying to find the first stage of a multi-cache dedicated to the route. After they left, I snapped a photo of the symbolic “Aachen – 125 km” sign and rolled on.






The route immediately started climbing — tough going when you’re not used to it. I had to stop and walk now and then to catch my breath. What helped were the fun geocaches placed along the early kilometers: a pinecone, a mushroom, a fake branch — all creative and amusing.





After about 8 km, the endless climb ended and gave way to a flatter section. The scenery was beautiful — lots of green spaces, occasional Roman-looking bridges or aqueducts (or something similar). One rest area had a covered charging point for e-bikes, which a group of retirees quickly claimed. Around kilometer 12, I hit a nice stretch of downhill where I barely had to pedal. Pure joy. I did miss three caches on the way down, but I’d already found plenty that day.
I initially planned to stop at a “Grillplatz” for the night but must have missed it. So I continued to the next picnic spot marked on the map. Somewhere along the way I entered Germany — the only indication was a town exit sign, everything else looked the same.





Camping on the Vennbahn
I passed the “100 km” milestone marker — meaning I’d done a fifth of the route (25 km). Near the picnic area, I found a small geocache in an abandoned subway exit — a rare piece of urban decay in Germany. Unfortunately, I couldn’t find a good hammock spot (the metal supports were too close together), so I set up bivy-style on a bench.










Total for the day: 25 km along the Vennbahn, plus 15 km in Kaiserslautern in the morning — 40 km overall.
Day 2: Sankt Vith – Roetgen
This was a long day. At 1:30 a.m., I woke up because some strange guy with a dim light passed by just 5 meters away. No idea what he was doing there at that hour, but he didn’t bother me. At some point, I woke again to a sky full of stars — gorgeous. But by dawn, it was overcast and foggy. The bike was covered in dew.





Breakfast was my usual American-style oats. I realized I forgot to pack anything for tea, so I chewed on an “emergency food” bar — a Secret Santa gift from last New Year’s.
Morning and Sunrise
I hit the road. Almost immediately I encountered a dark tunnel, and just as I was about to turn on my light, the tunnel lit up on its own — magic! In the next village, I saw oddly shaped haystacks, which reminded me of rural Romania. Then the sun began to rise, casting a warm golden light over everything.



I didn’t geocache as much as the day before but still made a couple of stops. One cache had tons of recommendations — I had to slightly dismantle a mountain bike trail to find it.
Eventually, I rolled into the town of Sankt Vith. I stopped at a supermarket for a second breakfast: some yogurt, strawberries, and waffle bars for tea, plus canned fish for lunch. There was another cache on the way out of town, but after five minutes of searching, I gave up and moved on.






The Bridge at Born
The trail kept alternating — sometimes a nice long downhill glide, sometimes pedaling nonstop for a stretch. One of the standout points along the route was a big arched bridge with a viewing platform. From there, you could see an old church and the bike trail down below 🙂

I marked the next 25 km with a lunch break at a “Grillplatz”, which was also listed on iOverlander, and someone even noted it was hammock-friendly. Confirmed — a great spot for camping, whether with a tent or a hammock. But it was lunchtime, and I needed to move on.




Vennbahn and the Hohes Venn
The next 20 kilometers leading up to Monschau were mostly flat and quite scenic. This section runs near the High Fens / Hohes Venn — Belgium’s largest national park and a pretty unique place with high-altitude bogs. The climate there is wetter and cooler than the surrounding areas, and there are hiking trails, many of which go over wooden boardwalks (bogs, after all!).
I made a short stop near an old checkpoint on the border of a German exclave and then at a small café built into a train car, where they rent out pedal-powered rail carts — probably for those who don’t have a bike but still want to ride. Somewhere around there I passed the halfway point — kilometer 63 out of 125 — which seemed about right.







Monschau and Power Problems
When I got to Monschau, I hit a bit of a snag. My power bank had only lasted one night and was now completely dead. My phone was down to 25%. On top of that, the weather forecast still looked bad — rain expected the next day. I briefly considered the “just finish today and go home” option, but either it didn’t occur to me properly, or it felt too rushed. Plus, the train from Aachen to Luxembourg wouldn’t be running tomorrow due to a holiday. So I had to come up with a plan.
In the end, I just rolled 100 vertical meters down into Monschau and found a café with electric outlets. Unfortunately, my fast charger was still at home, so I had to make do with a slow charge — after two hours on Wi-Fi, the phone was only up 20%. Still, my power bank got some juice too, so I decided to keep going. The town is beautiful: timber-framed houses, a river running through it. I was here a few years ago for a quick geocaching stop, but honestly, I didn’t remember a thing.





The climb back up was tough, but I found a gear combo (1–3) that let me steadily crawl back at around 6 km/h. After that came a gentle uphill stretch of about 5 km — and then finally: a glorious downhill that, according to the map, continues almost all the way to Aachen!
Hammock Night
Since I had no place to crash in Aachen, I detoured into the Belgian woods near Roetgen. There’s a marked bivouac zone (and I have even a script for it!) called Soos about 10 km away, but I didn’t make it that far. A lakeside picnic area with no “no camping” signs lured me in — I hung my hammock, set up the tarp, slid the bike under, and settled in. Sadly, the forecast had worsened: instead of a dry morning window, now they were predicting rain starting at 7 a.m…




All in all, it was my most productive day — nearly 90 km including the sporty descent into Monschau. By the end, I was definitely feeling the fatigue, and those last kilometers toward the bivouac zone dragged a bit. Probably that’s why I never actually made it to the bivouac zone.
Day 3, Roetgen – Aachen
The night was fairly comfortable, but just before sunrise, as forecasted, the rain began and the wind picked up. I had to burrow into my sleeping bag (it had been almost too hot to fall asleep earlier). At some point, about 100 ml of water dripped straight from the tarp onto my face — definitely woke me up.
By dawn, the rain had stopped, but water was still dripping from the trees due to the wind. I used the break in weather to get dressed, make breakfast, and pack up. As soon as I started riding, a cloud rolled in from the lake and things got wet again — but it was manageable. I made my way through the woods back to the Vennbahn route, which then continued its descent toward Aachen. In the suburbs, as Belgium was left behind and the cycle path turned German again, I was surprised by how much worse the road and signage were. In one hour, I lost the trail twice due to lack of signs and confusing intersections, and I had to stop five times to reattach the strap of my bike bag as it kept slipping and hitting the spokes. For comparison, I’d only had to fix it twice during the entire trip before this.
The Last Kilometers of Vennbahn
And finally, Aachen! The kilometer markers were counting down—9, 8… 5… I never found the 0 km marker, so I just took a photo at the train station. No more rain — the clouds had stayed in Belgium 🙂




I had reserved a TooGoodToGo breakfast at a hotel here the day before, but it wasn’t until 11 — and it was still only 9. My phone’s battery situation hadn’t improved either, so I decided to head to the hotel early and ask if I could charge up. For a €10 deposit, they even found me a charger that worked better than mine. In 2 hours, I managed to get almost 70% plus a bit in the power bank. There was also Wi-Fi, so I enjoyed some warm, dry comfort. Breakfast was scrambled eggs with bacon, cheese, sausage, and a bag of bread rolls—for €3, perfect, highly recommend!
Logistics and Chocolate
While I sat there, I needed to figure out logistics. I remembered BlaBlaCar — just in time. A driver heading to France agreed to drop me off right in Troisvierges, where my car was parked. I’d leave my bike in Aachen and come back to get it by car — only a 1.5-hour drive. The ride cost just €10. Perfect. Departure was at 15:00, so I had a few hours to kill and decided to check out the Lindt factory store. And it was (un)fortunately worth it — amazing prices on even regular chocolate, and discounts of up to 90% on summer leftovers and bulk bags (from 600 g to 2 kg). You could get chocolates for around €6 per kilo. I loaded up and headed to the meetup point. Had a snack at a Turkish café and soaked in the travel vibes — it had been a while since I’d done something like this.





Soon the driver picked us up, and we were off to Luxembourg… well, the Netherlands first, to pick up another passenger. Then we had to stop in Liège for the third one. Right as we left Liège, the rain started again — just like the forecast said 🙂 I managed to doze off a bit in the car, but the highway was fast, and 40 minutes later I was climbing into my own car in the rain and driving back to Aachen to rescue my bike. An hour and a half later, I was there—and the bike was too, thankfully.
As for the night’s accommodation — turns out a Warmshowers host had replied to my request and invited me to stay with her. Since the forecast said the weather would get worse (and it did—pouring rain in the afternoon), the offer was absolutely perfect.
Total ride distance for the day: 43 km. I had briefly considered cycling all the way to Liège, then taking the direct train back from a nearby village, but fatigue (and increasingly stiff legs) were kicking in. With such a convenient BlaBlaCar option, it would’ve been silly not to take it.
Day 4 – The Final Stretch


The last day was all about getting back. I stopped at a milk vending machine in the morning, had a quick breakfast with nearly fresh-from-the-udder milk, then set the GPS to “Munich” and started driving. To avoid doing the full 6.5-hour drive in one go, I picked a halfway stop in Schweinfurt, stretched my legs a bit, and then made a final 2-hour push to Munich.





Final Thoughts
Total cost: €240–250 — €190 for gas and €50 on groceries in a Belgian supermarket, a TooGoodToGo breakfast, and a snack in Monschau. As usual, fuel was the biggest expense. Lodging: €0.
The bike performed great, though it did start making some creaky noises. I’ll probably check the headset. The rear rack from a Krasnodar garage held up perfectly. The pannier I bought for my Moselle ride still works like a charm.





As for the route — plenty of variety, no time to get bored, which was great. Not too intense to exhaust you, but not too easy either — perfect for a long weekend ride. If you go off-track to visit the many nearby attractions (there are tons, and signs along the route describe them well), you could easily stretch it into a week. The hills and descents alternate nicely, and there’s rarely a stretch that feels endlessly uphill.
I definitely recommend doing it in this direction—from Luxembourg to Aachen — not the other way. That way, the last 30–40 km are mostly downhill, a well-earned reward. If you start in Germany, you’ll face relentless climbing on the first day, and even though it gets easier, you’ll already be worn out. There are several exit points along the route, and nearly direct train connections between start and end (I just got unlucky that day — train cancellation was noted on the official site in advance).
One downside: a lack of water along the route. Some towns had fountains (I only saw one in Aachen), and yes, there are supermarkets. But it would’ve been nice to have at least one or two public water fountains along the path. They’ve built self-service bike repair stations and e-bike chargers — why not think of water too?
I carried two 1.5L bottles and a 0.75L one for daily use. On the second morning, I bought another 2L. By the third morning, I had less than half a cup left. Luckily, Aachen had plenty of fountains (at least by German standards).
In short, I definitely recommend this route. Just the right length for a weekend trip, diverse landscapes, and you get to ride through three countries—how cool is that!