There are 10 ways to get from Zagreb to Milan by bus, train, train (Trenitalia), car, plane, or shuttle
Select an option below to see step-by-step directions and to compare ticket prices and travel times in Rome2Rio's travel planner.
Bus, train via Novo Mesto
best- Take the bus from Zagreb, Autobusni Kolodvor to Novo Mesto, Avtobusna postajabus
- Take the bus from Novo Mesto, Avtobusna postaja to Stazione Mestrebus
- Take the train from Venezia Mestre to Milano Centraletrain Fr
8h 27m€437–933Fly Zagreb Franjo Tuđman Airport to Il Caravaggio International Airport, bus
cheapest- Fly from Zagreb Franjo Tuđman Airport (ZAG) to Il Caravaggio International Airport (BGY)plane ZAG - BGY
- Take the bus from Milan Bergamo Orio al Serio Airport to Piazza Luigi di Savoiabus
4h 48m€36–285Train
- Take the train from Zagreb Glavni Kol. to Villach Hbftrain 318 / ...
- Take the train from Villach Hbf to Venezia Mestretrain Rjx
- Take the train from Venezia Mestre to Milano Centraletrain Fr
11h 15m€89–184Drive 601.3 km
- Drive from Zagreb to Milancar 601.3 km
6h 13m€108–156Fly Zagreb Franjo Tuđman Airport to Milan Linate Airport
- Fly from Zagreb Franjo Tuđman Airport (ZAG) to Milan Linate Airport (LIN)plane ZAG - LIN
6h 54m€102–345Bus
- Take the bus from Zagreb to Milano, Autostazione Lampugnanobus N402 / ...
9h 50m€55–85Bus, train
- Take the bus from Zagreb to Padovabus
- Take the train from Padova to Milano Centraletrain 8970 / ...
10h 24mBus, train via Trieste
- Take the bus from Zagreb, Autobusni Kolodvor to Novo Mesto, Avtobusna postajabus
- Take the bus from Novo Mesto, Avtobusna postaja to Trieste Centralebus
- Take the train from Trieste Centrale to Venezia S. Luciatrain Re
- Take the train from Venezia S. Lucia to Milano Centraletrain Fr
14h 59m€293–673Shuttle, shuttle to Trieste – Friuli Venezia Giulia Airport, fly to Milan Linate Airport
- Take a shuttle bus from Zagreb, Autobusni Kolodvor to Ljubljana, Avtobusna Postaja
- Take a shuttle bus from Ljubljana to Trieste Airport
- Fly from Trieste – Friuli Venezia Giulia Airport (TRS) to Milan Linate Airport (LIN)plane TRS - LIN
5h 37m€262–768Fly Zagreb Franjo Tuđman Airport to Milano Malpensa Airport, train
- Fly from Zagreb Franjo Tuđman Airport (ZAG) to Milano Malpensa Airport (MXP)plane ZAG - MXP
- Take the train from Malpensa Aeroporto T1 to Milano Porta Garibalditrain
6h 48m€60–218
Zagreb to Milan by train
Comparing Your Travel Options
The cheapest way to get from Zagreb to Milan is to bus which costs €55 - €85 and takes 9h 50m.
The fastest way to get from Zagreb to Milan is to fly and bus which takes 4h 48m and costs €35 - €290.
Yes, there is a direct bus departing from Zagreb and arriving at Milano, Autostazione Lampugnano. Services depart twice daily, and operate every day. The journey takes approximately 9h 50m.
No, there is no direct train from Zagreb to Milan. However, there are services departing from Zagreb Glavni Kol. and arriving at Milano Centrale via Villach Hbf and Venezia Mestre. The journey, including transfers, takes approximately 11h 15m.
The distance between Zagreb and Milan is 623 km. The road distance is 601.3 km.
The best way to get from Zagreb to Milan without a car is to bus and train via Novo Mesto which takes 8h 27m and costs €430 - €950.
It takes approximately 8h 27m to get from Zagreb to Milan, including transfers.
Zagreb to Milan bus services, operated by FlixBus, depart from Zagreb station.
Zagreb to Milan train services, operated by HŽ Putnički prijevoz (HŽPP), depart from Zagreb Glavni Kol. station.
The best way to get from Zagreb to Milan is to train which takes 11h 15m and costs €85 - €190. Alternatively, you can fly, which costs €100 - €350 and takes 6h 54m, you could also bus, which costs €55 - €85 and takes 9h 50m.
What companies run services between Zagreb, Croatia and Milan, Italy?
You can take a train from Zagreb Glavni Kol. to Milano Centrale via Villach Hbf and Venezia Mestre in around 11h 15m. Alternatively, Croatia Airlines, Austrian Airlines, and four other airlines fly from Zagreb Franjo Tuđman Airport (ZAG) to Milan Linate Airport (LIN) 5 times a day.
- Website
- lufthansa.com
Flights from Zagreb Franjo Tuđman Airport to Milan Linate Airport via Munich
- Ave. Duration
- 4h 22m
- When
- Every day
- Estimated price
- €160–500
Flights from Zagreb Franjo Tuđman Airport to Milan Linate Airport via Frankfurt
- Ave. Duration
- 5h 52m
- When
- Every day
- Estimated price
- €100–460
Flights from Zagreb Franjo Tuđman Airport to Milano Malpensa Airport via Munich
- Ave. Duration
- 3h 45m
- When
- Every day
- Estimated price
- €75–440
- Website
- ryanair.com
Flights from Zagreb Franjo Tuđman Airport to Il Caravaggio International Airport
- Ave. Duration
- 1h 15m
- When
- Friday, Monday, Tuesday, Saturday, and Sunday
- Estimated price
- €30–170
Flights from Zagreb Franjo Tuđman Airport to Milano Malpensa Airport via Vienna
- Ave. Duration
- 5h 45m
- When
- Monday, Friday, and Saturday
- Estimated price
- €50–150
- Website
- austrian.com
Flights from Zagreb Franjo Tuđman Airport to Milan Linate Airport via Vienna
- Ave. Duration
- 4h 47m
- When
- Monday, Tuesday, Wednesday, Thursday, Friday, and Sunday
- Estimated price
- €80–340
- Website
- airdolomiti.it
Flights from Zagreb Franjo Tuđman Airport to Milan Linate Airport via Munich
- Ave. Duration
- 4h 25m
- When
- Saturday
- Estimated price
- €160–500
Flights from Zagreb Franjo Tuđman Airport to Milano Malpensa Airport via Munich
- Ave. Duration
- 3h 10m
- When
- Monday, Wednesday, and Saturday
- Estimated price
- €140–440
- Website
- aeroitalia.com
Flights from Trieste – Friuli Venezia Giulia Airport to Milan Linate Airport
- Ave. Duration
- 1h 5m
- When
- Monday, Tuesday, Wednesday, Thursday, Friday, and Sunday
- Estimated price
- €45–150
- Website
- swiss.com
Flights from Zagreb Franjo Tuđman Airport to Milano Malpensa Airport via Zurich
- Ave. Duration
- 5h 12m
- When
- Every day
- Estimated price
- €75–240
- Website
- eurowings.com
Flights from Zagreb Franjo Tuđman Airport to Milan Linate Airport via Stuttgart
- Ave. Duration
- 7h 50m
- When
- Monday and Friday
- Estimated price
- €75–290
- Website
- easyjet.com
Flights from Zagreb Franjo Tuđman Airport to Milano Malpensa Airport via Prague
- Ave. Duration
- 3h 40m
- When
- Friday
- Estimated price
- €50–230
- Phone
- +39 06 5210550
- Website
- Trenitalia Frecce
Train from Venezia Mestre to Milano Centrale
- Ave. Duration
- 2h 16m
- Frequency
- Hourly
- Estimated price
- €35–60
- Website
- Trenitalia Frecce
Train from Venezia Mestre to Milano Centrale
- Ave. Duration
- 2h 16m
- Frequency
- Hourly
- Estimated price
- €35–60
- Website
- Trenitalia Frecce
Train from Venezia S. Lucia to Milano Centrale
- Ave. Duration
- 2h 28m
- Frequency
- Hourly
- Estimated price
- €35–65
- Website
- Trenitalia Frecce
- Phone
- +39 06 68475475
- [email protected]
- Website
- Trenitalia Eurocity
Train from Venezia Mestre to Milano Centrale
- Ave. Duration
- 2h 25m
- Frequency
- Twice daily
- Estimated price
- €55–110
- Website
- Trenitalia Eurocity
- 1st Class
- €75–110
- 2nd Class
- €55–80
Train from Venezia Mestre to Milano Centrale
- Ave. Duration
- 2h 25m
- Frequency
- Twice daily
- Estimated price
- €55–110
- Website
- Trenitalia Eurocity
- 1st Class
- €75–110
- 2nd Class
- €55–80
Train from Venezia S. Lucia to Milano Centrale
- Ave. Duration
- 2h 37m
- Frequency
- Twice daily
- Estimated price
- €60–110
- Website
- Trenitalia Eurocity
- 1st Class
- €75–110
- 2nd Class
- €60–80
- Phone
- +385 60 333 444
- [email protected]
- Website
- HŽ Putnički prijevoz (HŽPP)
Train from Zagreb Glavni Kol. to Villach Hbf
- Ave. Duration
- 4h 11m
- Frequency
- Twice daily
- Estimated price
- €19
- Website
- HŽ Putnički prijevoz (HŽPP)
- Phone
- +39 06 8937 1892
- Website
- Italo Treno
Train from Padova to Milano Centrale
- Ave. Duration
- 1h 59m
- Frequency
- Hourly
- Estimated price
- €27–45
- Website
- Italo Treno
- Phone
- +39.06.5210550
- Website
- Trenitalia
Train from Trieste Centrale to Venezia S. Lucia
- Ave. Duration
- 3h 31m
- Frequency
- Hourly
- Estimated price
- €26–40
- Website
- Trenitalia
- Phone
- +39 02 7249 4494
- [email protected]
- Website
- Trenord
Train from Malpensa Aeroporto T1 to Milano Porta Garibaldi
- Ave. Duration
- 44 min
- Frequency
- Every 30 minutes
- Estimated price
- €4–6
- Website
- Trenord
- Phone
- +386 1 320 4530
- [email protected]
- Website
- GoOpti
Bus from Zagreb, Autobusni Kolodvor to Novo Mesto, Avtobusna postaja
- Ave. Duration
- 1h 19m
- Frequency
- On demand
- Estimated price
- €22–180
- Website
- GoOpti
- Shared
- €22
- Private
- €92
Bus from Novo Mesto, Avtobusna postaja to Stazione Mestre
- Ave. Duration
- 3h 45m
- Frequency
- On demand
- Estimated price
- €380–650
- Website
- GoOpti
Bus from Zagreb, Autobusni Kolodvor to Novo Mesto, Avtobusna postaja
- Ave. Duration
- 1h 19m
- Frequency
- On demand
- Estimated price
- €22–180
- Website
- GoOpti
- Shared
- €22
- Private
- €92
Bus from Novo Mesto, Avtobusna postaja to Trieste Centrale
- Ave. Duration
- 5h 53m
- Frequency
- On demand
- Estimated price
- €210–350
- Website
- GoOpti
Shuttle from Zagreb, Autobusni Kolodvor to Ljubljana, Avtobusna Postaja
- Ave. Duration
- 1h 48m
- Frequency
- On demand
- Estimated price
- €180–310
- Website
- GoOpti
Shuttle from Ljubljana to Trieste Airport
- Ave. Duration
- 1h 16m
- Frequency
- On demand
- Estimated price
- €170–290
- Website
- GoOpti
- Private
- €204
Rome2Rio's guide to FlixBus
Contact Details
- Phone
- +49 30 300 137 300
- [email protected]
- Website
- Flixbus
Bus from Zagreb to Milano, Autostazione Lampugnano
- Ave. Duration
- 9h 50m
- Frequency
- Twice daily
- Estimated price
- €55–85
- Website
- Flixbus
- Phone
- +359 2 980 56 58
- [email protected]
- Website
- mm-travel.bg
Bus from Zagreb to Padova
- Ave. Duration
- 7h 40m
- Frequency
- Once a week
- Schedules at
- mm-travel.bg
- Book at
- tickets.mm-travel.bg
- [email protected]
- Website
- TERRAVISION
Bus from Milan Bergamo Orio al Serio Airport to Piazza Luigi di Savoia
- Ave. Duration
- 50 min
- Frequency
- Every 30 minutes
- Estimated price
- €5–23
- Website
- TERRAVISION
- Phone
- 035.319366
- [email protected]
- Website
- orioshuttle.com
Bus from Milan Bergamo Orio al Serio Airport to Piazza Luigi di Savoia
- Ave. Duration
- 50 min
- Frequency
- Every 30 minutes
- Estimated price
- €11–14
- Schedules at
- orioshuttle.com
- Phone
- +386 40 121 900
- [email protected]
- Website
- slovenija.eu.com
Shuttle from Ljubljana to Trieste Airport
- Ave. Duration
- 1h 30m
- Frequency
- On demand
- Estimated price
- €110–220
- Schedules at
- slovenija.eu.com
- 1 -3 persons
- €170
- 4-8 persons
- €220
- Phone
- +386 070740450
- [email protected]
- Website
- easydrive.si
Shuttle from Ljubljana to Trieste Airport
- Ave. Duration
- 3h
- Frequency
- Twice daily
- Estimated price
- €22
- Schedules at
- easydrive.si
Want to know more about travelling around Italy
Rome2Rio's Travel Guide series provide vital information for the global traveller. Filled with useful and timely travel information, the guides answer all the hard questions - such as 'How do I buy a ticket?', 'Should I book online before I travel? ', 'How much should I expect to pay?', 'Do the trains and buses have Wifi?' - to help you get the most out of your next trip.
Related travel guides
Italy Travel Guides
Read the travel guide
Getting to Milan from the airport
Read the travel guide
Want to know more about Flixbus?
Read the travel guide
Booking & Getting There
Zagreb to Milan bus services, operated by FlixBus, arrive at Milano, Autostazione Lampugnano station.
Zagreb to Milan train services, operated by HŽ Putnički prijevoz (HŽPP), arrive at Villach Hbf station.
Yes, the driving distance between Zagreb to Milan is 601 km. It takes approximately 6h 13m to drive from Zagreb to Milan.
Book your Zagreb to Milan train tickets online with Omio.
Book your Zagreb to Milan bus tickets online with Omio and FlixBus.
There are 13746+ hotels available in Milan.























































