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. Note that there have been some significant changes to service frequencies due to the ‘coronavirus’ measures.
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 less than 2 hours.
Skyteam partners KLM and Alitalia dominate this route.
KLM flies 2-3x daily from Amsterdam to Milan Malpensa using Boeing 737 aircraft. Return fares are priced from €110 excluding checked luggage.
Alitalia Cityliner flies 1-2x daily from Amsterdam to Milan Linate using Embraer 175 aircraft. Base fares are broadly similar to KLM.
No frills airline Easyjet currently has a daily flight from Amsterdam to Malpensa. Return prices are available for just under €100 when you add in the luggage fees.
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 0808 ICE International train which arrives at Basel SBB at 1447. Then take the 1728 Eurocity train to Milano Centrale which arrives at 2140 – a journey of just under 14 hours total.
Likewise, the Eurocity departs Milan at 1010 arriving in Basel SBB at 1456; the ICE International leaves Basel at 1513, arriving in Amsterdam at 2158. Note the connection in Basel may be a bit tight, so one could also consider an earlier departure (0720-1132) for Milan-Basel.
Amsterdam-Basel ICE one-way fares are from €37.90 (2nd class) and €60 (1st class), though you should try to book well in advance.
2nd class fares do not include a reserved seat on the ICE. You can reserve a seat for €4 per person for each one-way trip. It is not obligatory to make a seat reservation, however it can be worthwhile if the train is busy. Seats are in a 2-2 configuration.
1st class fares include seat reservation as standard, with seating in a 1-2 configuration.
Basel-Milan Eurocity one-way fares start at €29 (2nd class) and €49 (1st class).
How to book online: Amsterdam-Basel and some Amsterdam-Milan rail fares can be booked at the NS International site
Separate Basel-Milan tickets can be booked at TheTrainline site
Amsterdam-Milan via Paris: Another possibility is to travel via Paris using the high speed Thalys and TGV trains. You have around 4 hours to change station in Paris and have some lunch. The total journey time is around 15 hours.
Take an early morning Thalys train from Amsterdam at 0715, arriving at Paris Nord at 1038. Then transfer to Paris Lyon where you take the TGV to Milano Centrale (1443 to 2150) via Lyon and Turin.
In the other direction, the early TGV departs Milan at 0600 arriving at Paris Lyon at 1313 – giving plenty of time to catch a Thalys back to Amsterdam (1525 to 1844).
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).
Paris-Milan TGV tickets can be booked at TheTrainline site
3. Amsterdam-Milan by Coach
German coach company Flixbus operates a 1x daily direct overnight coach service between Amsterdam Sloterdijk and Milan Lampugnano. There are also departures which require a single change in Germany or France. The trips take anything between 16-24 hours and singles start from around €39.
This article was originally published in 2011 and has been continuously updated since then. Last update 30 September 2020.