Nairobi to Mombasa: All Options Compared
Three ways to get from Kenya's capital to its coast capital. One is the fastest. One is the most scenic. One is the cheapest. The Madaraka Express changed everything.
Option 1: By air: the fastest
Journey time: 55 minutes
Cost: KES 4,000–12,000 each way (varies by airline and when you book)
Airlines: Kenya Airways, Jambojet, Fly540, Skyward Express
Flights depart from Nairobi's JKIA (Jomo Kenyatta International Airport) to Mombasa's Moi International Airport (MBA). Multiple daily flights. Kenya Airways alone operates 4–6 departures per day.
Flying is the right choice if time is your priority, if you're heading to Diani Beach (fly to Ukunda Airstrip directly instead. See below), or if you can get a competitive fare.
Tip: If your destination is Diani Beach, fly direct from Wilson Airport to Ukunda Airstrip with Safarilink (50 min) rather than Nairobi–Mombasa then road. It is faster and often competitive on price. Search flights on Cabana →
Option 2: SGR Madaraka Express: the best value
Journey time: 4 hours 30 minutes
Cost: KES 1,000 (economy) to KES 3,000 (first class)
Departures: Multiple daily from Nairobi Central (Syokimau) and Nairobi Terminus stations
The Madaraka Express is Kenya's modern standard gauge railway. Built by China Communications Construction Company and opened in 2017. It runs on Chinese high-speed railway infrastructure at up to 120 km/h through Tsavo National Park. You will see elephant, giraffe and often lion from the train windows.
Why the SGR is often the best option
- Zero traffic: no road traffic jams, fixed 4.5-hour journey time
- Comfortable: air-conditioned, wide seats, dining car, good legroom
- Wildlife viewing: the route cuts through Tsavo National Park. Elephant herds visible regularly from first-class upper deck windows
- Central arrival: Mombasa Terminus station is close to the city and a short Uber from Nyali or Bamburi
- M-Pesa booking: book via SGR portal (krc.co.ke) or M-Pesa Paybill
Important: Book SGR tickets in advance. Popular trains sell out, especially weekends and holidays.
Option 3: Bus or matatu: the cheapest
Journey time: 8–10 hours (depending on traffic, road conditions and stops)
Cost: KES 700–1,500 each way
Companies: Modern Coast, Easy Coach, Mombasa Raha
Bus is by far the cheapest option but the longest. The Nairobi–Mombasa A109 highway passes through Tsavo. Theoretically game viewing from the bus window, but the journey is long, the road can be rough in sections, and breakdowns are not unheard of.
Best suited to budget travellers with maximum time and minimum budget, or for goods transport. Not recommended for business travellers or families.
Which should you choose?
| Option | Time | Cost | Best for |
|---|---|---|---|
| Flight | 55 min | KES 4,000–12,000 | Time-sensitive, business travel |
| SGR (Madaraka Express) | 4.5 hrs | KES 1,000–3,000 | Best overall. Value, comfort, wildlife |
| Bus | 8–10 hrs | KES 700–1,500 | Extreme budget only |
Our recommendation: SGR for the vast majority of travellers. The value, comfort and wildlife viewing (through Tsavo) make it the most interesting journey. If time is critical and budget allows, fly. Never take the bus if you have a better option.
Nairobi to Diani Beach: the extra step
Diani Beach is 35 km south of Mombasa on the south coast. Getting there requires one extra step:
- Best option: Fly direct from Wilson Airport Nairobi to Ukunda Airstrip (DIU) with Safarilink, 50 minutes, multiple daily flights, KES 8,000–15,000. No connection needed. Transfers from Ukunda to Diani properties are 10–20 minutes.
- Via SGR: SGR to Mombasa Terminus, then Uber/taxi to Likoni Ferry, then road to Diani. Total time from Nairobi: about 6.5–7 hours. Significantly cheaper than flying if cost matters.
- Via Mombasa flight: Fly to Mombasa, then 45–90 minutes by road including Likoni Ferry crossing. Similar to SGR routing but faster to Mombasa.
Book on Cabana: Zero Commission, Always
Every stay, safari and experience on Cabana is priced by the host. Zero commission added. Pay with M-Pesa or card.
Browse all stays →