Quick Answer
The best overall way to get from Malpensa Airport to Lake Maggiore is by train via Gallarate. Take a Trenord regional train from Terminal 1 to Gallarate (30 min, ~€5), then transfer to a Trenitalia train to Stresa (30 min, ~€4). Total travel time is about 1 hour 20 minutes to 2 hours, and total cost is approximately €9-€15. For the cheapest option, combine a train to Milano Cadorna with a S.A.F. Diemme bus.
By Train from Malpensa to Lake Maggiore
Traveling by train is the most balanced option, offering a good mix of speed, cost, and comfort. There is no single direct train, but the connections are generally efficient and scenic, especially the final approach along the lake.
The Two Main Train Routes
You have two primary rail routes, both requiring one change:
| Route | Steps | Approx. Time | Approx. Cost (One-Way) | Best For |
|---|---|---|---|---|
| Route 1: Via Gallarate (Fastest & Recommended) | 1. Malpensa T1 → Gallarate (Trenord Regional Train) 2. Gallarate → Stresa (Trenitalia Regional Train) |
1h 20min - 1h 40min | €9 - €12 | Most travelers. Fewer stops, often a shorter total journey. |
| Route 2: Via Milano Centrale | 1. Malpensa T1 → Milano Centrale (Malpensa Express by Trenitalia) 2. Milano Centrale → Stresa (Trenitalia Regional or Intercity) |
1h 45min - 2h 15min | €18 - €30+ | Those connecting from long-distance trains, or using a Eurail Pass. |
Step-by-Step: Via Gallarate
- Find the Station: Follow signs to “Malpensa Express” in Terminal 1. The train station is inside the airport.
- Buy Your Ticket: Purchase a ticket to “Stresa” at the Trenord ticket machines or counter. The system will calculate the fare for the entire journey (Malpensa → Gallarate → Stresa). Validate your ticket before boarding.
- Board the Train: Take any regional train heading to “Gallarate” or “Milano Porta Garibaldi”. The journey takes about 30 minutes.
- Change at Gallarate: Gallarate is a small station. Check the departure boards for trains to “Domodossola” or “Brig” – these stop at Stresa. The wait is usually 20-40 minutes.
- Final Leg to Stresa: The train ride from Gallarate to Stresa is a beautiful 30-minute trip along the southern part of Lake Maggiore.
Key Insight: The Malpensa-Gallarate segment is operated by Trenord, while the Gallarate-Stresa segment is operated by Trenitalia. Buying a single through-ticket covers both, but if you have a Eurail/Interrail Pass, it's only valid on the Trenitalia-operated legs.
By Bus from Malpensa to Lake Maggiore
Buses are the most budget-friendly option, with direct services connecting the airport to several key towns on the lake. The main operator is S.A.F. Diemme.
Direct Bus Services (S.A.F. Diemme)
Route: Malpensa Airport (Terminal 1 & 2) → Lake Maggiore (Stresa, Verbania-Pallanza, Verbania-Intra, Baveno).
- Frequency: Approximately 5-7 buses per day. Schedules vary significantly by season; fewer on weekends and in winter.
- Travel Time: 50 minutes to 1 hour 20 minutes, depending on your destination and traffic.
- Cost: €5 - €10 one-way if purchased online in advance. Slightly higher if bought from the driver.
- Where to Board: Look for bus stops outside Terminal 1 (Arrivals) and Terminal 2. Buses are usually marked “SAF” or “Stresa / Verbania”.
- Booking: Strongly recommended. You can book tickets online on the S.A.F. Diemme website or via platforms like Omio. This guarantees you a seat.
Train + Bus Combo (The Budget Champion)
For maximum savings and flexibility, consider this hybrid approach:
- Take the Malpensa Express train from the airport to Milano Cadorna station (42 min, €13).
- Walk a short distance to the bus stop near Cadorna (Piazzale Luigi di Savoia).
- Catch a S.A.F. Diemme bus from Milan to Stresa/Verbania (1h 10min - 1h 30min, €5-€8).
Why consider it? Buses from Milan sometimes have more frequent departures than those directly from the airport, offering more scheduling flexibility for a similar total price.
Luggage & Comfort:
Buses have standard luggage compartments. While comfortable for the journey, they don't offer the space or smoothness of a train. Night buses are not available on this route.
By Taxi & Private Transfer
This is a door-to-door premium service, ideal for specific circumstances but not recommended for budget-conscious travelers due to its high cost.
Taxi from the Airport Rank
- Availability: Taxis are available 24/7 outside both terminals.
- Cost: This is a very expensive option. The fare to Lake Maggiore towns (e.g., Stresa) is not metered but based on fixed rates or negotiations, typically ranging from €150 to €250+ for a one-way trip.
- Travel Time: 50 - 80 minutes, depending on traffic and your final destination.
- Risk: Always agree on a price before getting in the car to avoid disputes.
Pre-Booked Private Transfer (Recommended Luxury Option)
This is a safer, more reliable, and often better-value alternative to a random taxi.
- How it Works: Book online in advance with companies like Suntransfers, Welcome Pickups, or a local provider. Your driver will meet you in the arrivals hall with a name sign.
- Cost: €120 - €200 for a standard sedan (1-3 passengers), slightly more for minivans. Price is fixed and known upfront.
- Best For:
- Groups of 3-4+ (splitting the cost makes it reasonable).
- Families with young children and lots of luggage.
- Travelers arriving late at night after public transport has stopped.
- Those with mobility issues.
- Business travelers or those seeking absolute convenience.
Ticket & Cost Comparison: How Do Your Options Stack Up?
Use this table to quickly compare the key metrics of each transportation method from Malpensa Airport to Stresa, Lake Maggiore.
| Method | Avg. Travel Time | Avg. Cost (One-Way) | Transfers / Stops | Best For | Booking Advice |
|---|---|---|---|---|---|
| Train (via Gallarate) | 1h 20min - 2h | €9 - €15 | 1 (at Gallarate) | Best overall balance (speed/price/comfort) | Buy at station or via Trenord app. |
| Direct Bus (S.A.F. Diemme) | 50min - 1h 20min | €5 - €10 | 0 (Direct) | Cheapest direct option | Book online in advance. Limited seats. |
| Train + Bus Combo | 2h - 2h 30min | €18 - €22 | 1 (in Milan) | Flexibility, more departure times from Milan | Book bus online, train at station. |
| Private Transfer | 50min - 1h 20min | €120 - €200 | 0 (Door-to-Door) | Groups, late arrivals, luxury/convenience | Essential to book online in advance. |
| Taxi (Airport Rank) | 50min - 1h 20min | €150 - €250+ | 0 (Door-to-Door) | Emergency or if other options are closed | Agree on fixed price before entry. |
Key Takeaway: For solo travelers and couples, the train via Gallarate is the top recommendation. For absolute lowest cost, the direct bus wins if the schedule aligns. For groups or special circumstances, a pre-booked private transfer offers the best premium experience.
Traveler Tips & Insider Insights
Navigating the Journey Like a Pro
- Validate Your Train Ticket: Before boarding regional trains in Italy (Trenord, Trenitalia regionale), you MUST validate your paper ticket at the small green or yellow machines on the platform. Failure to do so can result in a hefty fine. E-tickets on your phone do not need validation.
- Beware of “Porta” Stairs: Stresa station has a significant flight of stairs to reach the main exit and town. There is no elevator. If you have heavy luggage, consider taking a taxi from the station rank to your hotel (cost: €10-€15).
- The Ferry is Your Lake Taxi: Once at Stresa, your primary mode of transport to other towns (Baveno, Isola Bella, Pallanza) is the ferry. Buy tickets at the ticket office on the waterfront. Schedules are seasonal.
- Check Seasonal Schedules: Bus and ferry frequencies drop dramatically from October to April. Always check the latest timetables on the operator’s website a day before your travel.
- Consider Your Final Destination: If your hotel is in Verbania, the direct bus may be better than the train to Stresa + ferry. Research the local bus (VCO Trasporti) connections from Stresa station to other western shore villages.
- Wi-Fi & Connectivity: Trains and buses often have spotty or no Wi-Fi. Download offline maps (Google Maps) and your ticket PDFs before leaving the airport terminal where Wi-Fi is available.
- Peak Season Crowds: In July and August, trains and buses can be very crowded. Board early to secure luggage space and a seat.
FAQs: Your Malpensa to Lake Maggiore Questions Answered
Is there a direct train from Malpensa Airport to Lake Maggiore?
No, there is no single direct train. The journey requires at least one change. The most common and efficient route involves taking a regional train from Malpensa Terminal 1 or 2 to Gallarate or Milano Centrale, then transferring to a train heading to Stresa, the main gateway station on Lake Maggiore.
What is the cheapest way to get from Malpensa to Lake Maggiore?
The cheapest option is typically the combination of a regional train and bus. For example, taking the Malpensa Express train to Milano Cadorna (€13) and then a S.A.F. Diemme bus to Stresa (€5-€8). Advance online bus bookings can sometimes offer even lower fares.
How long does the train journey from Malpensa to Stresa (Lake Maggiore) take?
The total train journey takes approximately 1 hour and 20 minutes to 2 hours, depending on your connection. The fastest route via Gallarate can take as little as 1h20m (30 min to Gallarate + 20-30 min wait + 30 min to Stresa). Routes via Milano Centrale are longer (1h45m - 2h).
Is a taxi or private transfer a good idea from Malpensa to Lake Maggiore?
For most travelers, a taxi is not cost-effective for this distance (70-90km). Fixed-price private transfers are a better luxury option, ideal for groups of 3-4+, those with lots of luggage, or arriving late at night. Prices range from €120 to €200+ one-way.
Can I use a Eurail or Italy Pass for the journey to Lake Maggiore?
Yes, but with a key distinction. Eurail/Italy Passes are valid on Trenitalia trains. The Malpensa Express to Milano Centrale is operated by Trenitalia, so your pass covers it (reservation fee may apply). The regional train from Gallarate/Milano to Stresa is also Trenitalia. However, the Malpensa Express to Cadorna is operated by another company (Malpensa Express Shuttle) and is NOT covered by rail passes.
What is the best option if I arrive at Malpensa late at night?
Late-night arrivals (after 10:30 PM) have limited options. Train services are greatly reduced. Your best bets are: 1) A pre-booked private transfer (most reliable). 2) A taxi from the airport rank (expensive). 3) Staying at an airport hotel and traveling the next morning. Always check the latest timetables for trains and buses before you travel.
Where exactly on Lake Maggiore do the buses and trains go?
Trains terminate at Stresa station, a central town on the western shore. Buses from Malpensa/Milan typically go to Stresa, Verbania, or Arona. From these hubs, you'll use local buses, ferries, or taxis to reach your final hotel/village. Stresa has the most frequent ferry connections to islands like Isola Bella and other lakeside towns.
Is it faster to fly into Linate or Bergamo for Lake Maggiore?
Not necessarily. While Linate (LIN) is closer to Milan, it serves fewer international flights. Bergamo (BGY) is a hub for low-cost carriers but is farther east. Malpensa (MXP) is the main international airport and, despite being northwest of Milan, has the most direct train/bus links to the western side of Lake Maggiore (Stresa, Baveno), making it often the most convenient air gateway.