Indonesia is a vast archipelago, and getting between islands nearly always means flying or taking a boat. Within islands, buses and trains do most of the work. The system is imperfect but functional, and getting around is half the adventure.
Domestic Flights
For anything over a few hundred kilometres, fly. Domestic flights are cheap — Bali to Makassar, Yogyakarta to Manado, Jakarta to Jayapura — and save days of travel. Garuda Indonesia is the most reliable carrier; Lion Air, Batik Air, and Citilink are cheaper but have more delays. Book early for the popular routes (Jakarta–Bali, especially). Budget at least two to three hours for connections through provincial airports.
Ferries and Boats
The state-owned Pelni ferry company operates a network connecting hundreds of Indonesian ports, including the more remote islands. These ships are slow — sometimes days at sea — but cheap and a genuine way to meet Indonesians. Cabins are available in various classes.
For shorter inter-island hops, speed boats are the norm: Bali to the Gili Islands takes around 90 minutes, Bali to Lombok about the same. In eastern Indonesia, small local boats serve routes that no ferry covers. Schedules can be irregular and boats run in poor conditions, so check the weather before heading out on smaller vessels.
Trains
The train network is limited to Java and parts of Sumatra, but within Java it is excellent. Trains connect Jakarta to Yogyakarta (roughly 8 hours by express), Yogyakarta to Surabaya (4–5 hours), and on to Banyuwangi near the Bali ferry crossing. There are three classes: economy (basic), business, and executive (comfortable, air-conditioned, recommended). Buy tickets through the PT Kereta Api website or app, or at the station.
Indonesia launched its first high-speed rail line (branded Whoosh) between Jakarta and Bandung in 2023, cutting the journey from three hours to 45 minutes.
Buses
Buses are the backbone of overland travel, especially outside Java. For long distances, air-conditioned executive coaches are reasonably comfortable. Local minibuses (angkot or bemo) serve shorter routes and are cheap but can be cramped and slow. In cities, TransJakarta's bus rapid transit is efficient and cheap.
Urban Transport
Jakarta has a functional MRT and LRT network that makes getting around the capital far easier than it was a decade ago. Ride-hailing apps Gojek and Grab operate in all major cities and are the easiest way to get around at a fair price — use them instead of flagging down random taxis.
Renting a scooter is common on Bali and Lombok. It is cheap and convenient, but the roads are busy and the standard of driving can be alarming. If you are not experienced with motorbikes, a car with driver is a safer and not much more expensive option.