A guide for how to travel overland from Java to Bali by train, ferry, and bus.
Java and Bali are separated by the Bali Strait, and the islands are 2.4 km apart at the closest points. Ferries run continually between the two islands, so this is one of the easiest crossings when overlanding across Indonesia.
There are buses that originate from all over Java to Denpasar in Bali, so bus trips require little planning. It’s more enjoyable to travel across Java by train, so this guide explains how to travel from Java to Bali by train, ferry, and bus.
Index
Java to Bali overland map
Train: East Java
Surabaya – Ketapang
Probolinggo – Ketapang
Malang – Ketapang
Ferry from Java to Bali
Ketapang – Gilimanuk
Bali ground transport
Bus: Gilimanuk – Denpasar
Mengwi Bus Terminal
Terminal Ubung
Bus and taxi from bus terminals
Java to Bali overland map
Places referenced in this guide are shown on this map.
[Map of overland route from Java to Bali.]
Trains: East Java
Surabaya – Ketapang
[KA Probowangi at Surabaya Gubeng.]
KA Probowangi is a day train from Surabaya to Ketapang. This is the best option for day travel if you are slowly making your way across the archipelago.
There are also sleeper trains that operate from Surabaya to Ketapang. This will get you to Ketapang port early in the morning, which means you should be in South Bali by lunch time.
Search for Surabaya to Ketapang train tickets.
Probolinggo – Ketapang
Probolinggo is the most useful train station to get to Mount Bromo. If you’re travelling across Java for the first time it would be weird to not stop at Mount Bromo on the way to Bali.
[Bromo Tengger Semeru National Park.]
Probolinggo is on the Surabaya-Ketapang line, so the same trains that originate from Surabaya pass through Probolinggo.
There are Bromo tours that start in Probolinggo, or you can stay closer to the mountain at Cemoro Lawang and Wonotoro (a better option for sunrise tours).
The day train from Surabaya to Ketapang departs Probolinggo at 8:01, so there isn’t enough time to do a sunrise tour then get the train on the same day. Alternatively, you could get the overnight rain from Probolinggo to Ketapang.
Malang – Ketapang
Malang is another city that is useful for going to Bromo, and it’s a city that is well worth a stop.
Direct trains operate between Yogyakarta and Malang, so this is an alternative route if you aren’t planning to go to Surabaya.
There is a train service that operates from Malang to Ketapang, but it departs Malang at 16:30 and arrives at Ketapang at 23:40. You do not want to travel the ferries and buses of Indonesia overnight.
Search for Malang to Ketapang train tickets.
If you are staying in Malang and still want to get the train, it would be better to get the train to Banyuwangi Kota and stay in Banyuwangi. This is near enough to Ketapang to get a taxi in the morning, or you can stay for a day and explore if you are embracing the slow travel ethos. There are also Banyuwangi-Bali buses, so that would be easier than going to the ferry terminal and getting a bus in Bali.
Search for hotels in Banyuwangi.
Ferry from Java to Bali
There is no bridge from Java to Bali, so ferries are the only non-flying transport option.
Ketapang – Gilimanuk
[Java-Bali ferries in the Bali Strait.]
Ferries from Ketapang in Java to Gilimanuk in Bali run 24 hours a day. They leave every 20-30 minutes, though when I went it looked like they were sending ferries as fast as they could fill them. Either way, there is no need to stress about getting to the port before the next ferry departs.
I arrived in Ketapang by train, and it’s a 10-minute walk to the port. There are cycle rickshaws (becaks) outside the station, which I rarely use. In this case I decided to take one in the interests of this review. I was quoted 20,000 IDR to go to the port. I knew I was paying twice as much when I sat down and the other becaks riders started laughing. One even took a photo of me. I didn’t mind though as they picked the oldest uncle to take me, and I am too old to be haggling with uncles. Plus is was $1.25 USD. It just felt odd to get a ride for such a short distance. I marked this up as taking a hit for Nomadic Notes readers.
[Becaks at Ketapang Station.]
At the entrance to the ferry port there are representatives of bus companies that are selling seats on buses to Bali. I always feel on guard at ferry ports when someone is trying to sell transport. The agent said it would be quicker for me to get on a bus now rather than waiting for a bus in Gilimanuk. I reluctantly bought a ticket for 150,000 IDR ($9.40 USD), and this turned out to be the best decision.
The bus hadn’t arrived yet, but the agent said it was about 10 minutes away. 10 minutes in Indonesia could mean anything, but it was indeed about 10 minutes. The agent guided me to the bus, then the bus drove to the queue to board the ferry. A few minutes later the agent boarded the bus and told me to get on another bus that was leaving earlier, so I was glad he was looking out for me even after he had received his rupiah.
[On the bus at Ketapang Ferry Port.]
If you get a bus, you board the ferry with the bus. If you are a foot passenger, then you walk on when instructed.
[Truck and passenger bus in the ferry from Java to Bali.]
Once the bus has parked on the ferry, you are free to go to the upstairs deck.
The ferry crossing takes about 30 minutes on a normal crossing, but our ferry was stuck at sea for 30 minutes while waiting for an available dock.
[Waiting to dock at Gilimanuk, Bali.]
Board the bus before the ferry arrives so the bus can leave immediately. If you are a foot passenger, it’s a 6-minute walk (450 metres) to the Gilimanuk bus terminal.
Bali ground transport
Once you have arrived in Gilimanuk you may be lulled into thinking that your journey is almost over. If you are going to South Bali though (as most tourists are), then there is a long ride ahead.
Bali is one hour ahead of Java, so you also lose an hour if you didn’t account for that time zone change in your planning.
Bus: Gilimanuk – Denpasar
The bus from Gilimanuk Ferry Port to Terminal Ubung in Denpasar takes about 3 hours and 30 minutes to travel 123 km.
[Route map from Gilimanuk Ferry Port to Terminal Ubung (map link).]
My Google Maps estimated it to be a 3 hr 37 min trip. I’m familiar with the terrible traffic of Bali, so this was a believable figure. I budgeted 4 hours for this bus trip, and it turned out to be exactly 4 hours.
The bus stopped for fuel after 20 minutes of driving. This was a 10-minute fuel/toilet break, and then the bus drove non-stop for 3 and a half hours. When I’m on long trips I usually fast and reduce my liquid intake to a minimum. I was glad to not need to go to the toilet in those 3 and a half hours.
[A view of Bali traffic from the back of the bus.]
The trip is so slow because the main “highway” that runs along the coast is only two lanes for most of the way. All of the trucks that arrive from Java on the ferries use this road to go everywhere else in South Bali.
[The bus is constantly looking for opportunities to overtake trucks.]
The good part of the trip is that you get to see the beauty of West Bali. It is nowhere near as built-up as South Bali, so there are endless amounts of rice fields with mountains in the background.
There are some stunning river crossings that looked what people come to Bali for.
[The rivers in Kuta no longer look like this.]
Mengwi Bus Terminal
Mengwi Bus Terminal in Badung Regency is the long-distance bus terminal of Bali. If you are arriving by coach from another island then the bus will terminate here. There is a plan to extend the proposed Bali LRT to Mengwi, but that is far in the future if at all.
Mengwi Bus Terminal is closer to Ubud than Terminal Ubung so this is a better stop to get off at.
My bus was a small bus, so it made a stop at Mengwi and then kept going to Terminal Ubung.
Terminal Ubung
Terminal Ubung was the main bus terminal of Bali until it was replaced by Mengwi Bus Terminal. Ubung is still used by small buses and minivans, and it’s closer to Kuta-Seminyak and Sanur.
Bus and taxi from bus terminals
My bus arrived at Terminal Ubung in the evening and it was too late to consider a local bus. The local bus is Trans Metro Dewata. They don’t have a website, but you can download a PDF map via linktr.ee/transmetrodewata. The bus goes to Central Parkir in Kuta, where you can connect with other local buses.
Bluebird Taxi is a reliable taxi company in Bali, so take one of those if you see one. There were no taxis when I arrived, so I used the Grab app. If you are travelling in Indonesia then you should already be using Grab or Gojek for ride-hailing.
I was approached by a taxi driver before I had a chance to book a Grab. He asked where I was going and he showed me how much it would cost if I booked it on Grab. The price was 80,000 IDR ($5 USD) from Ubung to Legian, and I agreed to the fare. The taxi took 40 minutes, so that was a reasonable fare. After having taken a train, becak, ferry, and bus to get here, I was happy to finish the trip with a taxi.
This train travel guide is part of my Southeast Asia railways guide.
coral waight says
Very informative. Thanks.
Fiona says
Hi, James
Thanks for such detailed information in all your posts.
Do you have any recommendations or considerations for a journey from Bali to Jakarta?
Hoping to include the high speed train from Bandung to Jakarta and also the scenic train from Yogyakarta to Bandung. Is getting the panoramic train worth it?
Thanks
James Clark says
Thanks Fiona. If it’s your first time in Java then you can’t go wrong with the classic sites of Bromo and Yogyakarta (for Borobudur), and then finish with the high-speed rail. I still haven’t taken the panoramic train yet, so I don’t know myself. Cheers.
rama says
Using the panoramic train is worth it since is included meal and snack also bigger window.
Also, there is a new train direct from Yogyakarta, KA Wijayakusuma, which a better option since it is direct and included with Executive class with better legroom.
KA Wijayakusuma fare is 600kIDR(40 USD) and leave Yogyakarta in 18.40, arrive in Ketapang (ferry station) in 6AM next day.
Fiona says
Thank you Rama,
That looks ideal.
I’ll have a look at that and see what the times are going in the other direction.
The aim is to get from Bali to Jakarta by train.
: )