Banyuwangi ferry terminal, East Java

Getting In & Out of Java


Java has five international airports at Semarang, Yogyakarta, Surabaya, Solo-Surakarta and Indonesia’s busiest airport Soekarno-Hatta International Airport near Jakarta. Between them the connect with direct flights from Australia and other major Asian transport hubs such as Singapore, Bangkok, Kuala Lumpur or Hong Kong.

» read more

Jakarta, Semarang, Yogyakarta, Surabaya, Solo-Surakarta, Malang and Bandung all have busy domestic airports connecting Java with other Indonesian islands, with regular scheduled flights operating every day of the week. Flights with major carriers such as Garuda and AirAsia can easily be booked directly on line. For smaller Indonesian carriers such as Lion Air, Wings Air, Kalstar, Sriwijaya, Citilink we recommend finding and booking flights online with or a reputable travel agent once you’re on the ground in Indonesia.

» read less


Yes it’s true, you can travel between Denpasar, Bali and Surabaya, Java by train…sort of, with a bit of bus and ferry travel thrown in. For travel between Bali and Java, buses arrive and depart terminals in Denpasar, Mengwi (12km northwest of Denpasar and the best option for Ubud based travellers) for transfer to/from the Gilimanuk – Banyuwangi ferry crossing. There’s another bus transfer to/from the ferry to the Banyuwangi Baru train station on the Java side.

It might sound a little messy but it tends to run like clockwork with passengers directed on and off buses, ferries and trains with military precision. The beauty for travellers is that you can book a single long distance train ticket for the entire journey and not have to worry about working out the connections. Train times and fares can be found on the Indonesia Railways website but they only accept Indonesian credit cards so you can’t actually buy tickets with them. You can purchase tickets online through with foreign credit cards or in person at the Surabaya train station or the Indonesian Railways (KerataApi) agent at the Ubung bus terminal in Denpasar, Bali.


Ferry services operate between Singapore and Johor Bahru, Malaysia and Jakarta via Pulau Batam, an Indonesian island just 20km to the southeast of Singapore. For ferries between Singapore and Pulau Batam, you can check schedules with these operators: or For the Jonor Bahru to Pulau Batam ferry schedules check Berjaya Waterfront Ferry Terminal. Pelni (Indonesia’s national shipping company) operates the ferry service between Pulau and Tanjung Priok, on the northern outskirts of Jakarta, At the time of writing the ferry was running once weekly but schedules change regularly so check the Pelni website for the latest information (use Google Translate). The ferry takes around 24-25 hours in good weather not including transfers to/from Pulau Batam and cost about the same as a cheap flight between Singapore and Malaysia so unless you have a penchant for sea travel or an aversion to flying it’s hard to imagine why this would be anyone’s preferred option.

Pelni also operate numerous passenger services between Java and other Indonesian islands. Tickets can be purchased through any authorised Pelni agent. Again check their website for routes, schedules and authorised agents.

Local car and passenger also operate between Banyuwangi (East Java) and Gilimanuk (Bali), and Merak (West Java) and Bakauheni (Sumatra). For Bali transfers, see more on this page under Train and also Getting In & Out of Bali, or Getting In & Out of Sumatra. All these ferries run around the clock with departures as frequently as every 10-15 minutes during peak periods. No need to book in advance; just turn up at the ferry terminal and purchase your ticket prior to departure. Buses for transfers to various destinations meet the ferries at either end.