Getting Around Indonesia — Flights, Ferries, Trains, Buses
How internal travel actually works in Indonesia: the cheap domestic flight network, ferries between the major islands, Java's train system, intercity buses, and the budget for each.
Indonesia is 5,000 km wide and split across 17,000 islands — internal transport is a real planning consideration. Fortunately the country has a well-developed network of cheap domestic flights, a substantial ferry system between islands, a useful train network on Java, and a wide range of intercity buses. This guide covers each, with realistic costs and time estimates.
Domestic flights
For most inter-island travel, flying is the practical option. Indonesia has multiple competitive airlines with national coverage:
- Garuda Indonesia: the flag carrier, full-service, slightly more expensive
- Citilink: Garuda's budget arm, low-cost full service
- Lion Air: largest low-cost carrier, extensive network, mixed reputation for delays and customer service
- Batik Air: Lion Group, slightly more upmarket
- Wings Air: Lion Group, regional/short-haul
- Super Air Jet: Lion Group, low-cost
- NAM Air: Sriwijaya Group, regional
- AirAsia Indonesia: regional + international low-cost
- Susi Air: small aircraft to remote destinations (Papua, eastern islands)
Typical fares (one-way, booked 2-4 weeks ahead):
- Jakarta to Bali: USD 30-80
- Jakarta to Yogyakarta: USD 30-60
- Jakarta to Medan: USD 40-90
- Jakarta to Makassar: USD 50-100
- Jakarta to Papua (Sorong, Jayapura): USD 100-200
- Bali to Lombok: USD 30-60
- Bali to Komodo (Labuan Bajo): USD 60-120
Booking: Traveloka, Tiket.com, Garuda website, Klook, Skyscanner. Local platforms (Traveloka especially) often have the best Indonesia-specific deals.
Practical:
- Allow 2 hours for domestic check-in at major airports (often less, but Jakarta and Bali can be chaotic)
- Indonesian airports are increasingly modern but service can be slow
- Luggage limits vary; check before booking
- Delays are common especially in monsoon season
- Ash from volcanic eruptions can ground flights for days
Ferries
The Indonesian ferry network is extensive, primarily run by PT ASDP Indonesia Ferry for short crossings and PT PELNI for long-haul.
Short ferries (mostly under 4 hours):
- Java to Bali (Ketapang/Banyuwangi to Gilimanuk): every 30 min, 1 hour
- Bali to Lombok (Padang Bai to Lembar): every hour, 4-5 hours
- Sumatra to Java (Bakauheni to Merak): continuous, 2 hours
- Sanur to Nusa Lembongan/Penida: 30-45 min by fast boat
Fast boats (for tourists):
- Bali to Gilis or Lombok: 1.5-3 hours, Rp 400,000-700,000 (USD 25-45) one way
- Bali to Nusa Penida/Lembongan: 30-45 min
- Lombok to Komodo: multi-day liveaboards from Bali or direct fast boats
- Various ferries in eastern Indonesia (Komodo region, Maluku, Papua)
PELNI long-haul: the state ferry operator runs large ships across Indonesia (Jakarta to Makassar, Surabaya to Maluku, etc.). Cheap (USD 30-100 for multi-day passages) but basic conditions. More an adventure than a comfort option; mostly used by Indonesians.
Practical:
- Fast boats can cancel in bad weather
- Bring motion-sickness medication
- Lifejackets should be provided; insist if not
- Liveaboards (Bali to Komodo) are popular: 3-5 day trips combining transport and diving
Trains (Java only)
Java has Indonesia's only substantial passenger rail network. Operated by PT KAI (Kereta Api Indonesia).
The main lines:
- Jakarta to Surabaya (via Cirebon, Yogyakarta, Solo, Madiun) — the spine
- Jakarta to Bandung (Whoosh high-speed since 2023: 45 min)
- Jakarta to Yogyakarta: 6-8 hours
- Yogyakarta to Surabaya: 4-6 hours
- Surabaya to Banyuwangi: 6-8 hours (gateway to Bali)
Service classes:
- Eksekutif: business class, recliner seats, meals
- Bisnis: business, less luxurious
- Ekonomi: economy, basic
- Premium Ekonomi: middle option
Typical fares:
- Jakarta to Yogyakarta (eksekutif): Rp 350,000-500,000 (USD 22-32)
- Jakarta to Surabaya (eksekutif): Rp 500,000-750,000 (USD 32-47)
- Jakarta to Bandung (Whoosh): Rp 250,000-450,000 (USD 16-28)
Booking: via KAI Access app or tiket.com or kai.id. Book several days ahead, especially for popular routes.
Practical:
- Trains are reliable and comfortable
- The Jakarta-Yogyakarta-Surabaya route is one of the more pleasant ways to see Java
- The new Jakarta-Bandung Whoosh is China's first high-speed rail export
- Trains book up during Idul Fitri and major holidays; book early
Intercity buses
Extensive network covering all islands. The major operators:
- DAMRI: state-owned, large network, mid-range comfort
- Sinar Jaya: large private operator, especially Java-Sumatra
- Lorena: long-haul, Java and Sumatra
- Various regional operators
Comfort tiers:
- Eksekutif/VIP: air-con, reclining seats, sometimes onboard meal/snack, sometimes overnight sleeper berths
- Ekonomi: basic, often crowded, no aircon
- Pat as: between
Typical fares:
- Jakarta to Yogyakarta (eksekutif): Rp 200,000-400,000 (USD 13-25), 8-12 hours
- Yogyakarta to Surabaya: Rp 150,000-300,000, 6-8 hours
- Trans-Sumatra: long, expensive, slow; flights almost always preferable
Practical:
- Buses are cheaper than trains or flights but slower
- Long overnight buses are common but tiring
- Bus stations (terminal bus) are often outside cities; allow time for transfer
- Booking via the bus operator websites or via 12Go.asia
Local transport in cities
Jakarta:
- MRT Jakarta (Lebak Bulus to Hotel Indonesia line, expanding)
- LRT Jabodebek
- TransJakarta BRT (longest BRT network in the world)
- KRL commuter rail
- Grab/Gojek
- Bluebird taxis
Surabaya:
- Suroboyo Bus (BRT)
- Trans Semanggi (BRT)
- Grab/Gojek
- Bluebird/Silverbird taxis
Yogyakarta:
- TransJogja (BRT)
- Becak (cycle rickshaw) for short trips
- Grab/Gojek
- Bluebird taxis
Smaller cities:
- Angkot (small minibuses on fixed routes)
- Ojek (motorcycle taxis), increasingly via Grab/Gojek apps
- Bluebird in larger cities
- Walking and bicycle where feasible
Private drivers
For multi-day or full-day sightseeing, private drivers are excellent value:
- Half-day: Rp 350,000-500,000 (USD 22-32)
- Full-day (8-10 hours): Rp 600,000-900,000 (USD 38-57)
- Multi-day: negotiate
The driver picks you up, waits at stops, returns you. Air-conditioned car included, fuel included, parking included; doesn't include attraction entry or the driver's lunch.
Booking platforms
For comprehensive coverage:
- 12Go.asia: trains, ferries, buses, some flights — best for comparing options
- Traveloka: Indonesian aggregator, strongest for domestic flights
- Tiket.com: similar to Traveloka
- Klook: tourist activities and some transport
- KAI Access: train bookings direct
- Garuda website: direct flight bookings
- Grab: ride-hailing in cities + some inter-city options
Realistic costs for a 2-week multi-island Indonesia trip
For a typical Bali-Java-Lombok trip:
- 4-6 domestic flights or fast boats: USD 200-400
- Inter-city trains/buses on Java: USD 50-100
- Local transport (Grab, taxis): USD 50-100
- Private driver day(s): USD 50-150
- Total transport: USD 350-750 per person
For shorter trips or single-island stays, substantially less.
Practical tips
- Book ahead for popular routes and during holidays
- Allow buffer time for delays, missed connections
- Bring snacks and water — service is variable
- Download the app before you need it (Grab, Gojek, Traveloka, KAI Access, 12Go)
- Have backup plans — flight cancellations and ferry delays are common
For most foreign visitors, Indonesia internal transport is more affordable and more comfortable than expected. The infrastructure has improved substantially in the past 10-15 years and continues to grow.