Travelling From Bali To Yogyakarta, Java By Train

Our view out of the train window was one of lush jungle and towering volcanoes, tiny villages and rice paddies.

The train wound its way through the countryside on our journey from Bali to Yogyakarta, Java.

After spending a month in Ubud, Bali we were looking forward to an adventurous journey from Bali-to-Java.

We’d researched ways of getting to Java and of course, there is the normal flight there but we’d found a more inspirational and nostalgia way of travelling overland by road, ferry and train.

What’s more, it’s very inexpensive, scenic and adventurous.

Yes, it takes a lot longer than flying but for us, the journey and travel is all part of our adventure.

So here’s how we travelled from Bali to Yogyakarta by train and our experience of it.

Bali To Yogyakarta

The Bali Countryside

Step One – Ubud, Bali To Gilimanuk

Ubud is in central Bali so first of all, we needed to head West to the port town of Gilimanuk to catch a ferry to Java.

In some ways this is the most difficult section of the trip but only because there are no trains on Bali so the only options for travelling long distances is either by bus or private car.

We’d heard of some pretty horrible stories of the bus rides to Gilimanuk with mad drivers etc so we opted for a private car.

Don’t get us wrong, we’re budget travellers and been on some pretty hair raising journeys but on this occasion, it just didn’t seem right to go the bus option and plus all the timings worked out wrong for us being in Ubud.

It’s easy to find someone to drive you to Gilimanuk but we were lucky to have a friend who lent us their full-time driver for a very reasonable cost for the drive to the port.

The drive takes approx 3 to 3.5 hours through the countryside and along the South coast of Bali which is very pleasant.

Bali To Yogyakarta

Rice Paddies Of Ubud, Bali

Step Two – Gilimanuk To Ketapang, Java

We arrived in Gilimanuk after about 3 hours on the road and our driver Gusti dropped us off in the ferry terminal car park.

After a very short walk to the terminal, we found the ticket counter and purchased our tickets for the crossing.

The small ferry crosses the Selat Strait that separates Java from Bali.

A short while later we were boarding our ferry along with motorcycles, passengers and other vehicles.

The ferry is nothing fancy at all and its passenger deck is lined with rows of plastic seating.

It actually wasn’t too busy when we crossed but we understand it can get very busy on board at certain times of the day.

There’s not much to see while crossing other than other ferries and boats plying the Selat Strait, as well as Bali, getting further away and Java getting closer.

The ferry headed for Ketapang on Java’s Easternmost point and after about 30 minutes we arrived and disembarked.

The train station Banyuwangi Baru  ( where you can catch onward trains ) is only a short walk from the port but we had booked into a hotel for the night as our train to Yogyakarta didn’t leave until the next morning.

We stayed at the Ketapang Indah Hotel which we decided to walk to but was a bit further out of town than we thought so grabbing a taxi would have been a better idea.

The hotel is lovely with a pool and its own beach ( not a nice beach though) with a good view out over the Selat Strait.

Annabel loved that the hotel had a buffet dinner and breakfast.

It’s not the cheapest of hotels but it was nice to have some chill out time before our long journey the next day.

Bali To Yogyakarta

The Gilimanuk To Ketapang Ferry

Step Three – Ketapang To Surabaya

Instead of getting a train straight from Ketapang to Yogyakarta we decided to break our journey in Surabaya which lies on the North coast of Java and is a six and a half hour ride away.

You can book all of you tickets online at and print out your confirmation to hand to the counter staff at the stations who will then give you a boarding pass.

We’d booked tickets for the Mutiara Timur train which left the Banywangi Baru station at 9 am so it gave us time to have a nice breakfast at the hotel before catching a taxi to the station in time for the train.

At the station, we had to go to the ticket counter to receive our boarding pass for the train by showing our booking details.

We love train journeys so all three of us were really excited to see what this one would be like.

After a short wait, the locomotive rumbled into the station.

We found the correct carriage to board and then looked for our seats.

We’d booked what is called Executive class which are the most expensive seats on the train and at the time ( May 2016 ) were 150000 Rupiah, which sounds a lot but was actually only £7.86.

The difference between Executive class and Economy class is only about £2.50 per seat and in Executive class, you get a much more comfortable seat, more room overall for bags etc and less crowded than Economy but they are both air-conditioned.

There’s food available on the train either at the buffet car or brought around on a trolley but we bought some food with us on board.

The train is lovely, comfortable and clean with very smart carriage attendants which reminded us of flight attendants.

The journey is amazing as the train snakes its way through the interior of Eastern Java with views of rice paddies, villages, jungle and volcanoes all around.

At about 3.15pm we pulled into Surabaya Gubeng station.

We’d booked a hotel room a short walk from the station at the POP Hotel Gubeng which was nice, clean, modern and inexpensive.

We had to find the hospital for Sue to get some treatment after her Bali monkey ordeal. Not read about that yet? Here’s the post.

After the hospital visit, we found a nice looking place to eat that was a sort of diner where we ate scrummy hot dogs.

Bali To Yogyakarta

Our Ketapang To Surabaya Train Pulls In To Banywangi Baru Station

Step Four – Surabaya To Yogyakarta

Next morning we were up early to catch our 7.30am departure on the Sancaka Pagi train to Yogyakarta.

This is a five-hour trip and we booked the Executive class again.

It’s not as scenic as the Ketapang to Surabaya route but we enjoyed it none the less.

By 1 o’clock we’d arrived at Yogyakarta’s main city station.

Bali To Yogyakarta

On Board, The Sancaka Pagi Train To Yogyakarta

Our Opinion

All three of us absolutely loved this journey.

In this age of flying it’s refreshing to do a real old world journey even if it is on modern transport.

You get that real sense of having travelled a long distance and accomplishing something adventurous.

If you ever get the chance to travel from Bali to Yogyakarta, and you have the time, then we would highly recommend this trip.

The Nitty Gritty

Here’s the detail of how we got from Bali to Yogyakarta, Java

We hired a car and driver to take us from Ubud, Bali to Gilimanuk port.

At the ferry terminal, we bought tickets for the Gilimanuk- Ketapang crossing

The crossing takes 30-45 minutes.

We stayed at the Ketapang Indah Hotel overnight.

Caught the 9am Mutiara Timur train to Surabaya  ( we booked our tickets online here )

Arrived Surabaya at approx 3.15pm

We stayed at the POP Hotel Gunbeng

Caught the 7.30am Sancaka train to Yogyakarta

Arrived Yogyakarta at approx 1pm

Bali To Yogyakarta

Fantastic Rail Journey From Bali To Yogyakarta, Java