Flying from Bali to Jakarta is straightforward. But if you have time, there's a very different way to make the journey: cross from Bali to Java by ferry and spend the following days traveling west by train. It isn't the quickest route. That's part of the appeal. Instead of seeing Indonesia through another departure lounge, you get market towns, volcanoes, railway stations and a sequence of places that feel unlike the resort areas of southern Bali.
The journey requires planning, especially around the ferry and the first railway station, but it doesn't have to be complicated. Here's how we'd put it together without pretending that traveling the length of Java is a one-day excursion.
The route in plain English
Start by reaching Gilimanuk on Bali's western tip. Cross the Bali Strait by ferry to Ketapang on Java. Continue toward Banyuwangi, where you can begin using trains and road transport to reach East Java's major cities. From there, progress west through Surabaya and Yogyakarta before eventually reaching Jakarta.
A practical sequence is Bali → Gilimanuk → Ketapang/Banyuwangi → Probolinggo or Surabaya → Yogyakarta → Jakarta. You can skip a stop or add a night according to your interests. The route works best when you have at least a week, and more if you want to explore volcanoes and towns instead of spending each day in transit.
From your Bali hotel to Gilimanuk
Gilimanuk is far from the main southern tourist areas. If you're starting in Canggu, Seminyak, Ubud or Uluwatu, leave plenty of time for the road journey. A glance at the island's size can be misleading: traffic around popular areas and smaller roads farther west affect travel times.
Check bus or private transfer options that actually serve Gilimanuk rather than assuming every westbound bus reaches the port. An early departure can be sensible, but don't book an onward train for an impossibly tight connection on the Java side. You will need to reach the port, navigate boarding and disembark after the crossing.
Crossing the Bali Strait
The ferry from Gilimanuk to Ketapang is the essential link between the islands. Services are frequent, but operational conditions, queues and procedures can change. Indonesia's ferry operator ASDP offers booking and journey information through its Ferizy system. Check the correct crossing and passenger category through official channels before you travel.
The water crossing itself is relatively short; waiting, ticket arrangements and loading can make the entire process longer. Keep your passport and valuables accessible, particularly if you're traveling with a lot of luggage.
Here's one small detail that catches people by surprise: Java is one hour behind Bali. When you arrive at Ketapang, local clocks will show an hour earlier than they did in Bali. Check that your phone and booking apps are displaying times for the correct island before comparing ferry and train departures.
Banyuwangi: don't rush straight past it
Once you're on Java, Banyuwangi makes a useful first overnight stop. It gives you a chance to recover from the journey across Bali instead of immediately joining another lengthy train. The region is also associated with Mount Ijen, known for its volcanic landscape and crater lake.
Ijen tours can involve very early starts and physically demanding conditions. Access, safety restrictions and conditions at the crater can change. We wouldn't book an expensive fixed sequence of onward trains around a volcano visit without checking whether the visit is operating and how strenuous it is.
If you have no interest in a sunrise hike, that's fine. A quiet night, a local meal and an unhurried morning can be just as valuable before the longer railway journey.
East Java: Probolinggo, Bromo and Surabaya
From Banyuwangi, rail services link different parts of East Java. Probolinggo is commonly used as a gateway toward Mount Bromo, while Surabaya is a major transport center with onward rail choices.
Bromo is famous for volcanic scenery, but it adds road transfers and often an overnight stay. If you want to see it, give yourself a proper stop rather than assuming it can be comfortably squeezed between two long trains. You should also check local access rules, environmental restrictions and weather conditions.
Surabaya is often the more straightforward place to change pace or connect onward. It has multiple railway stations, so confirm the exact origin station printed on the ticket. Don't assume the city name alone tells you where to board.
Take the train toward Yogyakarta
For many travelers, Yogyakarta is the highlight of a trip across Java. The city has a lively arts and food scene and gives access to major cultural sites such as Borobudur and Prambanan. Those sites are outside the center, so plan transport separately and check current visitor arrangements rather than assuming they are quick stops on foot.
Use the official KAI ticketing system to compare trains. Java's rail network has different service categories and stations; a train ticket is tied to a specific departure and you should verify your boarding location. Some services have reserved seats, and journey times vary by route. A rail-focused trip works much better when you leave slack between key connections.
Spend at least two nights in Yogyakarta if you can. One day for the city and one for the surrounding sights is already a busy schedule.
The final train to Jakarta
From Yogyakarta, continue west toward Jakarta. Think about which part of Jakarta you need to reach. The city is enormous, and different railway stations can put you in quite different locations relative to your hotel or international departure airport.
If you're finishing the trip with a flight from Soekarno–Hatta International Airport (CGK), allow time to travel across the city and reach the correct terminal. We would avoid arriving in Jakarta on a long-distance train and scheduling a separate international flight only a few hours later. Delays and ground transfers are simply too unpredictable for that to be relaxing.
How many days do you need?
In one week, we'd focus on the transport corridor and choose a small number of stops. With ten or twelve days, you can add Banyuwangi, the Bromo area and a longer stay in Yogyakarta. If you only have three or four days, flying could be the more sensible choice: this isn't a journey worth rushing just to say you've done it by land.
The budget comparison also depends on your travel style. Trains, ferries and buses may be inexpensive individually, but extra accommodation, local transfers and tours can make an overland journey cost more than a domestic flight. The reward is the experience, not a guaranteed saving.
Planning your departure from Indonesia
Traveling from Bali to Jakarta stays within Indonesia. If you're eventually continuing to another country, your actual international departure might be from Jakarta (CGK) or somewhere else that fits your plans. A domestic train ticket or ferry ticket does not replace an international flight itinerary.
When an appropriate documentation process accepts a temporary reservation, Avionward can show an intended international route with passenger details, a flight date and a booking reference. It is a real short-term reservation but not a paid ticket, and it cannot be used to board. Standard reservations remain active for a limited period separate from the displayed flight date. Refer to the Indonesia destination guide and current official sources for circumstances that apply to your trip.
Is going overland worth it?
If you love train journeys, local towns and watching landscapes change, absolutely consider it. If you're working with a short holiday and mainly want to reach Jakarta, the flight is easier. Neither is a better way to travel in the abstract. The difference is whether you want the journey across Java to be part of the holiday, or simply a way to get to the next airport.
