Milan (Milano) is the main city of northern Italy and a principal economic hub. It is located 830km south of Amsterdam.
Let’s look at the options for travel between Amsterdam and Milan by air, train or bus.
1. Amsterdam-Milan by Air
Milan has 2 main airports – the large Milan Malpensa airport (MXP) which is some distance outside the city and the more central Milan Linate airport (LIN). Flights between Amsterdam Schiphol (AMS) and Milan take around 1 hour 40 minutes.
Skyteam codeshare partners KLM and Alitalia dominate this route.
KLM flies up to 5x daily from Amsterdam to Milan Malpensa using Boeing 737 aircraft. Return fares are priced from €110 excluding checked luggage.
Alitalia flies 3x daily from Amsterdam to Milan Linate using Airbus A319 aircraft. Base fares are broadly similar to KLM.
No frills airline Easyjet flies up to 4x daily from Amsterdam to Malpensa and 1x daily to Milan Linate. Return prices are available for just under €100 when you add in the luggage fees.
Spanish low-cost carrier Vueling has 1x daily flight from Amsterdam to Mialn Malpensa. Base fares (excluding luggage) start at about €70 return.
2. Amsterdam-Milan by Train
There are no direct train services from Amsterdam to Milan (or any other Italian cities). Probably the easiest way to do this journey by day is to travel one stop via Basel.
Amsterdam-Milan via Basel: From Amsterdam Central take the 0802 ICE International train which arrives at Basel SBB at 1447. Then take the 1731 Eurocity train to Milano Centrale which arrives at 2137 – a journey of just under 14 hours total.
Likewise, the Eurocity departs Milan at 1015 arriving in Basel SBB at 1455; the ICE International leaves Basel at 1513, arriving in Amsterdam at 2156. Note the connection in Basel may be a bit tight.
Amsterdam-Basel ICE one-way fares are from €40 (2nd class) and €60 (1st class), though you should book well in advance. Basel-Milan Eurocity one-way fares start at €29 (2nd class) and €49 (1st class).
How to book online: Amsterdam-Basel by rail can be booked at the NS International site
Basel-Milan tickets can be booked at the Trainline site
Amsterdam-Milan via Paris: Another possibility is to travel via Paris using the high speed Thalys and TGV trains. You have around 2 hours to change station in Paris and grab some lunch. The total journey time is around 13 hours.
Take a morning Thalys train from Amsterdam at 0917, arriving at Paris Nord at 1244. Then transfer to Paris Lyon where you take the TGV to Milano Centrale (1441 to 2150) via Lyon and Turin.
In reverse the early TGV departs Milan at 0600 arriving at Paris Lyon at 1319 – giving plenty of time to catch a Thalys back to Amsterdam (1525 to 1842).
Paris-Milan TGV fares start from €29 (2nd class) and €44 (1st class) if booking in advance. Amsterdam-Paris Thalys fares are priced from €35 (2nd class) and €72 (1st class).
Amsterdam-Milan via Paris night train: Take an afternoon Thalys from Amsterdam to Paris Nord and transfer to Paris Gare de Lyon station. From there take the Venice-bound Thello overnight train which departs at 1910 and arrives in Milan at 0600.
Coming back from Milan the Thello overnight train departs at 2313 and arrives at Paris Lyon at 0955 – you then connect to Paris Nord for a Thalys back to Amsterdam. Singles for the Thello start at €35 for a 6 berth couchette, €115 for a 1-bed sleeper.
Paris-Milan tickets for either the TGV service or Thello night train can be booked at the Trainline site
3. Amsterdam-Milan by Coach
German coach company Flixbus operates up to 2x direct coach service daily from Amsterdam Sloterdijk to Milan Lampugnano. There are also departures which require a single change in Germany or France. The trips take anything between 16-21 hours and singles start from around €39.
Eurolines runs daily coach departures from its Amsterdam Duivendrecht terminal to Milan with a change required in Paris (or even Barcelona). The journey times vary widely between 22 and 49 hours – avoid the ridiculously long connections! Singles start at €42.