Jakarta is the capital of Indonesia and is located northwest of the island of Java. The Big Durian offers a lot of things to do and many put the city on their must-visit list while in Asia. Since Bali is located quite close to Jakarta , many travelers chose to travel between the two cities when working their way to mainland Asia or to Australia.
The Bali to Jakarta route is served by plenty of low cost carriers which makes flying really affordable. Single tickets start at US$30 and you can get between the two places in about 1 ½ hours.
But many budget travelers choose to travel either by a combination of bus, ferry and train or by bus and ferry. It does cost less than flying but you’ll be traveling about 24 hours (if there aren’t any delays).
Soekarno Hatta International Airport (CGK) is the main airport serving Jakarta and the island of Java. It is hub for Batavia Air, Cardig Air, Garuda Indonesia, Indonesia AirAsia, Lion Air, Merpati Nusantara Airlines, Republic Express Airlines, Sriwijaya Air and Wings Air.
Direct flights from Denpasar (Bali) to Jakarta are operated by Batavia Air, Citilink, Garuda Indonesia, Indonesia AirAsia , Lion Air , Merpati Nusantara Airlines, Sriwijaya Air and Wings Air. The cheapest flights are offered by Indonesia AirAsia and start at US$60 one way. The flight time is 1h 40 min. Return flights start at US$125 per person, on the same airline.
You can use a mix of bus , ferry and train to get from Bali to Jakarta.
First you need to travel from Bali to Yogyakarta, Malang, or Surabaya. This can be done by bus and ferry.
Buses to Yogyakarta leave each evening from Ubung Terminal in Denpasar. It takes about 15 hours and the bus ticket also includes the ferry crossing (over Rp200,000 / US$23 per person).
Buses to Surabaya leave from the same terminal. The ticket includes the ferry crossing and the total travel time is 8 to 10 hours. Prices start around Rp150,000 / US$17.25 per person.
From Yogyakarta you can take the morning train to Jakarta. The price for the express train is around Rp300,000 / US$34.50 per person and the total travel time is 8-10 hours.
From Surabaya you can take the Express train to Jakarta, either during the day (departure at 8 a.m.) or during the night (departure at 8 p.m.). The total travel time is 10 h 30 min. The fare is about Rp200,000 / US$23 per person.
>>read more about The train from Jakarta to Yogyakarta
The alternative is to take the bus and ferry from Bali to Jakarta. Tickets can be bought from the travel agents in the town(s). Two companies operate on this route: Lorena and Pahala Kencana (buses depart Denpasar at 6:30 a.m. and 3 p.m.)
The total travel time is about 24 hours but the buses are clean and you are also offered two meals. Delays can and will occur (sometimes even up to 10 hours). The price is about US$30 per person.
It is possible to rent a car and drive from Bali to Jakarta, but you’ll also be taking the ferry. So make sure to consider the price for crossing with a vehicle. The total travel time is about 21 hours. For your safety, do consider taking some breaks along the way.