The cheapest and fastest trains from Madrid to Venice
Cheapest price
£334
Average price
£334
Fastest journey
1 d 5 h 2 m
Average duration
1 d 5 h 2 m
Trains per day
1
Distance
1416 km
The best way to find a cheap train ticket from Madrid to Venice is to book your journey as far in advance as possible and to avoid travelling at rush hour.
The average ticket from Madrid to Venice will cost around £334 if you buy it on the day, but you can find cheap train tickets today for only £334.
To travel from Madrid to Venice you need to make at least 4 changes.


Travel Information
Compare train, coach and flight for Madrid to Venice
Omio recommends booking the flight as it is the most popular option from Madrid to Venice among Omio's users. If you are prioritising price take the flight with prices starting from £26. For those with little time consider booking a flight which can get you there in 3h 16m. In case you are seeking to minimise your carbon footprint the coach is your best bet as it emits only 1.4 - 3.5kg. The ticket price range depends on the travel mode: a flight costs an average of £26, and a train costs an average of £337.
Distance: 1416 km
Compare train with
| Train | Most popular Flight | Coach |
|---|---|---|
£337 Average Price | £99 Average Price Cheapest | £166 Average Price |
29h 32m Average total duration 29h 2m Onboard + 30m Additional time* | 6h 16m Average total duration Fastest 3h 16m Onboard + 3h 0m Additional time* | 29h 46m Average total duration 29h 16m Onboard + 30m Additional time* |
- CO2 emissions | 4.2 - 8.5kg CO2 emissions | 1.4 - 3.5kg CO2 emissions Lowest |
Direct Options | Direct Options | Direct Options |
Additional time: Average total travel duration to departure point, security checks and transfers.
Live departures
Madrid to Venice train times
The table below shows live departures for Madrid to Venice trains for tomorrow, Monday 1 December. You can also manually refresh the results below to see updated train journeys.
| Provider | Departs | Duration | Arrives | Changes | Tickets |
|---|---|---|---|---|---|
![]() | 06:40 Madrid | 29h02 | 11:42 Venice | 4 changes | |
This is the last train of the day. | |||||
Find all the dates and times for this journey
Compare prices and tickets Madrid to Venice by train, coach or flight
Compare train, coach and flight prices over the next three weeks. See the best deals at a glance, find the lowest fares, and choose the option that fits your budget.
30 Nov
01 Dec
02 Dec
03 Dec
04 Dec
05 Dec
06 Dec
07 Dec
08 Dec
09 Dec
10 Dec
11 Dec
12 Dec
13 Dec
14 Dec
15 Dec
16 Dec
17 Dec
18 Dec
19 Dec
20 Dec
Journey information
Overview: Train from Madrid to Venice
Trains from Madrid to Venice run on average 1 times per day, taking around 29h 2m. Cheap train tickets for this journey start at £337 but you can travel from only £26 by flight.
The earliest train runs at 06:40, the last at 06:40. The fastest train covers the 1416 km distance in 29h 2m.
Distance 1416 km |
Average train duration 29h 2m |
Cheapest ticket price £337 |
Trains per day 1 |
Fastest train 29h 2m |
First train 06:40 |
Last train 06:40 |
Train companies: iryo from Madrid to Venice trainsiryo trains will get you between Madrid and Venice from £26. With over 1000 travel companies on Omio, you can find the best train times and tickets for your trip.
iryo
Venice’s new Access Fee
If you’re traveling to Venice by between April 25 and July 14, you might need to pay an additional €5 Access Fee. Find out more about traveling to Venice.
FAQs: Madrid to Venice train
Find answers to the most common questions about traveling from Madrid to Venice by train. From journey times and ticket prices to direct connections, first and last departures, and even whether the route is scenic, our FAQs cover everything you need to plan your trip. Whether you’re looking for the fastest train, the cheapest option, or tips for making the most of your visit at Venice, this guide helps you travel smarter and with confidence.

More options for your journey from Madrid to Venice
Here are some other resources that might have the information you need
