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 less than 2 hours.
Book an Amsterdam-Milan flight via Omio which gives all airline options.
Skyteam partners KLM and ITA Airways dominate this route.
KLM flies up to 5x daily from Amsterdam to both Milan Linate and Milan Malpensa using Boeing 737s and KLM Cityhopper-branded Embraer aircraft. Return fares are priced from €150 excluding checked luggage.
ITA Airways flies up to 3x daily from Amsterdam to Milan Linate using Airbus A320 aircraft. Economy Light fares are from €170 return.
Easyjet flies up to 5x daily to Milan Malpensa and 1x daily to Milan Linate. If booking in advance, base prices are a bit less than KLM and ITA.
2. Amsterdam-Milan by Train
There are no direct train services from Amsterdam to Milan (or any other Italian cities). The best way to travel by day is to connect in either Basel or Paris. (note the Paris option is temporarily suspended)
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 2143 – a journey of just under 14 hours total.
Likewise, the Eurocity departs Milan at 0705 arriving in Basel SBB at 1132; the ICE International leaves Basel at 1513, arriving in Amsterdam at 2229.
Amsterdam-Basel ICE one-way fares are from €38 (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.90 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, Basel-Milan and some Amsterdam-Milan rail through-fares can be booked at the NS International site or at the Trainline site.
Amsterdam-Milan via Paris
Another possibility is to travel Amsterdam-Paris using the high speed Eurostar (formerly Thalys) and then take either a French operated TGV or an Italian operated Frecciarossa train between Paris and Milano. You have around 4 hours to change station in Paris and have some lunch. The total journey time is around 15 hours.
NOTE: Due to a landslide in summer 2023 the Paris-Turin-Milan line is closed and will likely remain closed for all 2024.
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 €46.
BlaBlaCar bus also offers a direct Amsteram-Milan coach service. Singles also start from around €46.
Book an Amsterdam-Milan coach trip with Omio.
Hotels/Activities
In Amsterdam you can book your hotel with Booking.com here. For a comprehensive selection of museums, activities and tours in Amsterdam book with GetYourGuide here
In Milan you can book your hotel with Booking.com here. For a selection of tours and attractions in Milan book with GetYourGuide here
This article was originally published in 2011 and has been continuously updated since then. Last update 16 April 2024.