The best European trips I’ve taken have involved both trains and ferries — and no airports. There is something satisfying about watching the landscape change through a train window, then watching the coastline recede from a ferry deck, then stepping onto a train again on the other side. The journey feels continuous in a way that flying breaks.
Europe is uniquely suited to this kind of travel. The rail network is dense, the ferry routes are numerous, and the port-to-station connections are often surprisingly short. In Split, the ferry terminal is 200 metres from the train station. In Naples, it’s a 10-minute walk. In Gothenburg, a tram ride. The infrastructure was designed — sometimes centuries ago — for exactly this kind of multimodal travel.
This guide covers the practical side: how to plan routes that combine trains and ferries, where the key crossings are, how to book, and how to handle the connections that make it all work. It includes three sample itineraries that cross the continent without going near an airport.
TL;DR: Europe’s train and ferry networks connect seamlessly on dozens of routes. Key crossings include Italy-Greece (Bari/Brindisi to Patras), Italy-Croatia (Ancona to Split), Denmark-Germany (Scandlines), and the English Channel. Eurail/Interrail passes include discounts on many ferries. Build itineraries around ferry schedules, not train schedules.
The Key Sea Crossings
Europe has four natural barriers that require water crossings: the English Channel, the Adriatic Sea, the Baltic Sea, and the Mediterranean between mainland Europe and the islands. Each has reliable ferry services that connect with the rail network on both sides.
The English Channel
Calais to Dover (P&O, DFDS, Irish Ferries — 1h 30min, from 15 euros foot passenger). The classic crossing. Calais is served by trains from Paris (TGV, 1h), Lille (TGV, 30min), and Brussels. Dover connects by train to London (HS1 to St Pancras, 1h). This is the cheapest channel crossing option, though the Eurostar from London to Paris is faster for point-to-point travel.
Dieppe to Newhaven (DFDS — 4h, from 30 euros). A quieter alternative. Dieppe is served by trains from Paris (2h) and Rouen (45min). Newhaven connects to London Victoria via Brighton.
The Adriatic
Ancona to Split (Jadrolinija, SNAV — 10-11h overnight, from 40 euros). The main Italy-Croatia crossing. Ancona is on the main Italian east coast rail line — trains from Rome (3h), Bologna (2h), and Florence (3h). Split connects with Croatia’s ferry network and buses to Dubrovnik.
Bari/Brindisi to Patras/Igoumenitsa (Superfast, Anek Lines — 10-18h, from 50 euros). The Italy-Greece crossing. Bari and Brindisi are both served by trains from Rome (4-5h) and Naples (3-4h). Patras connects by train to Athens. This is the classic overland route from Western Europe to Greece, and Eurail/Interrail passes include discounts on Attica Group ferries.
The Baltic
Copenhagen to Oslo (DFDS — 17h overnight, from 40 euros). Crosses the Skagerrak strait between Denmark and Norway. Copenhagen Central is a 15-minute walk from the ferry terminal.
Stockholm to Helsinki (Viking Line, Tallink Silja — 16h overnight, from 35 euros). The Baltic crossing between Sweden and Finland, through the Stockholm archipelago.
Rostock to Trelleborg (Stena Line — 6h, from 25 euros). Germany to Sweden. Rostock is served by ICE trains from Berlin (2h). Trelleborg connects by train to Malmö (30min) and onward to Copenhagen via the Øresund Bridge.
The Mediterranean
Naples to Palermo (Tirrenia, GNV — 10h overnight, from 35 euros). Mainland Italy to Sicily. Both cities have major train stations. Our Naples guide and Palermo guide cover the rail connections.
Barcelona to Mallorca (Trasmediterranea, Baleària — 7-8h, from 35 euros). Barcelona’s port is accessible by metro from the main stations.
How to Plan a Train-Ferry Itinerary
Step 1: Identify the Water Crossings
Start with a map. Where does your route cross water? Most European surface journeys require at most one sea crossing. Some require none — you can travel from Lisbon to Helsinki entirely by train via Spain, France, Germany, Denmark (the Great Belt bridge), Sweden, and the ferry from Stockholm.
Step 2: Check Ferry Schedules First
Ferries run less frequently than trains — often once daily for overnight crossings, sometimes only 3-4 times per week in winter. Build your itinerary around the ferry schedule, then fit the train segments to match. A daily ferry departure at 8 PM means you need to arrive at the port by 7 PM, which means your incoming train needs to arrive by 6 PM to allow margin.
Step 3: Book Ferries Before Trains
Ferry cabins sell out faster than train seats, especially in summer. Book the ferry first, then book the connecting trains once you have a confirmed sailing date and time.
Step 4: Build in Buffer Time
Don’t book a train that arrives 30 minutes before ferry departure. Ferries close their gangways 30-60 minutes before sailing, and trains can be late. A 2-3 hour buffer between train arrival and ferry departure is prudent. Use the time to eat, explore the port town, or simply sit with a coffee and not feel stressed.
Step 5: Use the Right Booking Tools
Rome2Rio (rome2rio.com) shows multimodal routes including trains and ferries. Useful for initial route planning — it won’t always have the best prices but it shows what’s possible.
Direct Ferries (directferries.co.uk) compares ferry routes and prices across operators.
Individual operator sites for booking: Trainline or DB/SNCF/Trenitalia for trains; Jadrolinija, Viking Line, DFDS, etc., for ferries.
The Eurail/Interrail planner shows train connections and indicates which ferry routes are covered by the pass. Our rail pass guide explains pass strategy.
Sample Itinerary 1: London to Athens (5 days, no flights)
A classic European overland route that crosses the continent from northwest to southeast.
Day 1: London to Paris to Milan. Eurostar London-Paris (2h 15min), then TGV Paris-Milan (7h). Overnight in Milan. Alternatively, take the night train from Paris to Milan.
Day 2: Milan to Bari. Frecciarossa Milan to Bari (4h 30min via Rome, or direct Frecciarossa 6h). Afternoon arrival in Bari. Evening departure on the overnight ferry.
Day 3: Adriatic crossing. Superfast Ferries or Anek Lines, Bari to Patras (approximately 16h). Depart evening, arrive next morning. Sleep onboard in a cabin.
Day 4: Patras to Athens. Morning arrival in Patras. Train or bus to Athens (3h). Afternoon in Athens.
Total cost estimate: 200-350 euros depending on class and booking timing. Three nights of accommodation saved (two on trains/ferries, one in Milan). Carbon footprint approximately 90% lower than flying.
Sample Itinerary 2: Barcelona to Dubrovnik (4 days, no flights)
Crossing the western and central Mediterranean by train and ferry.
Day 1: Barcelona to Rome. Overnight ferry Barcelona to Civitavecchia (Grimaldi Lines, 20h, from 55 euros). Depart Barcelona evening.
Day 2: Arrive Rome, train to Ancona. Morning arrival Civitavecchia, train to Rome (1h 20min, 5 euros). Time in Rome, then afternoon train Rome to Ancona (3h).
Day 3: Ancona to Split. Overnight ferry Ancona to Split (Jadrolinija, 10h, from 40 euros). Depart evening, arrive early morning.
Day 4: Split to Dubrovnik. Morning in Split, then bus to Dubrovnik (4h 30min, about 15 euros). There’s no direct train to Dubrovnik, but the coastal bus is scenic and reliable.
Total cost estimate: 180-280 euros. Two hotel nights saved on overnight ferries.
Sample Itinerary 3: Copenhagen to Edinburgh (3 days, no flights)
Crossing the North Sea via the Netherlands and England.
Day 1: Copenhagen to Amsterdam. Train Copenhagen to Hamburg (4h 45min), Hamburg to Amsterdam (6h). Our guide to Amsterdam covers what to do if you stop overnight. Or take the Copenhagen to Stockholm train and connect from there.
Day 2: Amsterdam to Newcastle. Afternoon in Amsterdam, then DFDS overnight ferry from IJmuiden (30min bus from Amsterdam) to Newcastle (16h, from 35 euros). Sleep onboard.
Day 3: Newcastle to Edinburgh. Morning arrival Newcastle. Train Newcastle to Edinburgh (1h 30min, from 15 pounds). Arrive Edinburgh by lunchtime.
Total cost estimate: 150-250 euros. One hotel night saved on the ferry.
Practical Tips for Train-Ferry Travel
Pack light but prepared. You’ll be moving between platforms and gangways. A single backpack or rolling bag is ideal. Our carry-on packing guide covers how to travel light across Europe.
Bring food for ferry crossings. Onboard restaurants exist but are expensive. A packed dinner for an overnight sailing saves 15-30 euros and is usually better food.
Book the cheapest cabin, not a deck seat. On overnight ferries, the price difference between a deck seat (sleeping in a chair) and a basic cabin is often only 15-25 euros. The cabin transforms the experience from endurance to comfort.
Download offline maps and schedules. WiFi on ferries is unreliable. Have your confirmation emails, boarding passes, and route plans accessible offline.
Travel insurance matters. Ferry crossings add complexity — missed connections, weather delays, and cancellations are more common than with trains alone. Our travel insurance guide covers what to look for.
Carbon savings are real. A train-and-ferry journey produces approximately 80-90% less CO2 than flying the same route. If environmental impact matters to you — and for the kind of traveller who reads this site, it usually does — surface travel is the clear choice.
The Bottom Line
Combining trains and ferries in Europe isn’t just possible — it’s one of the most satisfying ways to travel. You see the landscape change gradually. You cross seas on the surface rather than over them. You arrive at places having approached them, rather than having been teleported.
The planning takes more effort than booking a flight. That’s true. But the planning is part of the engagement — choosing routes, checking ferry schedules, building an itinerary that connects by train and sea. And the journey itself is incomparably richer than the hours lost in airport terminals.
Start with one sea crossing. Plan the trains around it. See how it feels. Most people who try it don’t go back to flying for routes where surface travel is an option.