They say it’s just as much about the journey as the destination, and as we re-enter another golden era of travel, spending more time traveling for your next trip abroad might not seem so bad. Still, lousy food, little legroom, and overcast skies make planes less than appealing. So what if you could travel from Bali to Jakarta by land instead?
We already know Southeast Asia is fantastic for multi-country ventures, crossing borders by land or sea has never been easier or cheaper and it’s one of the best ways to see the continent. But how does Indonesia, a vast archipelago, square up when it comes to alternative transport?
This guide looks at the best route to get from the popular Indonesian island to its bustling modern capital, without an airport terminal in sight. Find out how much it really costs to take the scenic route and if the haul is worth it. Buckle up, we’re in for a bumpy ride. Let’s go.
Table of Contents
Denpasar to Gilimanuk by Bus

Photo by lifuyu on Envato Elements
Bus travel is not well developed in Bali. While you will see some tourist groups being ferried around in coaches, there are almost no public buses that run between the popular areas of Kuta, Seminyak, and Canggu, and services from Ubud to the capital are mainly frequented by locals.
Still, this is rarely a problem for travelers and the cheap taxis and scooter rentals make getting around the Island of the God’s mostly hassle-free. Although, when it comes to reaching the capital, you’ll want to make the most of one of Bali’s more popular bus services to keep costs down.
Ubung Bus Station and Mengwi Bus Station are the two pain shuttle ports in Denpasar. You can travel from both terminals to Gilimanuk for the next portion of your journey, but we recommend Ubung for more bus options. Getting from your accommodation to Denpasar, whether you’re staying on the beaches of Uluwatu or in the rice fields of Ubud, is relatively cheap by taxi and you can book easily through locals or using the Gojek or Grab apps. It shouldn’t cost more than 200,000 IDR ($13) for an hour trip, although if you’re staying in Seminyak or Canggu expect this price to be a lot less.
The drive to the ferry ports in Bali’s northeast Gilimanuk from the island capital takes around three to four hours, which would set you back upwards of 500,000 IDR, and that’s if a taxi driver even agrees to take you that far. This is why the shuttle buses are the best option, starting from 50,000 IDR ($3.50) per person for local transit, and up to 100,000 IDR ($7) for an airconditioned coach and 180,000 IDR for a minivan ($12.50).
“Helpful” locals are likely to bump the price up and offer to carry your bags before trying to sell you a ticket, but head to the ticket office at Ubung Bus Station for the best prices. If you’re lucky, you’ll be able to buy a ticket with your ferry crossing from Gilimanuk to Banyuwangi included in the price starting from 75,000 IDR ($5) per person.
Don’t expect to leave on time and don’t have anything planned for your arrival in either Gilimanuk or Banyuwangi, Bali transport schedules can be unreliable. When you have found a bus and set off, strap in for a rather bumpy four-hour journey along winding, hilly roads with lots of risky overtaking, but this is all part of the adventure.
You’ll likely stop at a service station with restrooms and refreshments halfway through your trip, but don’t expect much more than a squat toilet in the rural west. Stock on some bottles of water and snacks as the vendors at the ferry port will charge a premium.
Gilimanuk to Banyuwangi by Ferry

If you’ve already purchased your ferry ticket with your bus fare, then once you’ve arrived in Gilimanuk it is just a matter of waiting for the next boat. The bus will drop you off right at the port and you’ll be met by the same crowd of locals jumping at the chance to carry your bags or sell you your ticket for the next portion of your trip. Even if you haven’t, tell vendors that you already have a ticket and head to the office for the best deals.
The ferries cross every 15 to 30 minutes, 24 hours a day, which is unusually frequent for Bali but this route is very popular with commuters who work in tourism on the island but live in East Java. The boat takes around 45 to 60 minutes and you can expect comfortable double-deck seating. There is also usually a cafe selling instant coffee, tea, and pot noodles and the upper deck serves as a communal smoking area.
The regular service makes this route perfect for doing without stops, but you can plan a night’s stay in Gilimanuk or Banyuwangi if you aren’t in a rush to get to Jakarta. As the ferry pulls into Ketapang, the small terminal near the town of Banyuwangi, you’ll be met with spectacular views of the Ijen Volcano, made even more mesmerizing at sunset. If you have a day to spare, consider a guided tour of Ijen and hike to the crater. Otherwise, there are a handful of hotels and homestays if you fancy a night’s sleep before continuing on your way.
Banyuwangi to Surabaya by Train

Banyuwangi Baru train station is only around 200 meters from the ferry terminal. As you leave the harbor, turn right and the station is just ahead on your left. There are two trains every day, the 8.30 am service that arrives just before 3 pm, and the 10 pm service that gets into Surabaya Gubeng Station at 4.20 am.
You’ll need your passport for this portion of the journey. If you can’t present your passport or Indonesian identification card for native citizens, you’ll be turned away.
You have the choice between Eksekutif Class (1st) or Bisnis Class (2nd) on this train. Ticket prices vary depending on the season and availability but you should expect to spend around 100,000 IDR ($7) for Bisnes class and closer to 140,000 IDR ($10) for Eksekutif. Download the Kerati Api for the most up-to-date schedules and ticket prices.
The train might not be up to European standards, but travelers report very pleasant journeys with higher standards than many Southeast Asian trains on these services. Expect clean seats, helpful staff, and even porters to carry your luggage if you’re lucky. The Bisnis Class carriages all have double seats, but you’ll only have an assigned seat number in Eksekutif Class, otherwise it is first come first serve. There’s no seatback tray but you’ll have a small shelf to hold cups and a hook to hang belongings.
Most seats also boast an electrical socket below the shelf which is unusual even on European trains, so take this opportunity to charge your gadgets. All baggage can be stored on the overhead rails.
There are squat toilets on these trains with a sink and shower, although we wouldn’t recommend washing on the train unless you really have to. The toilets can also take some getting used to, especially while moving at a high speed.
Throughout the seven-hour journey, well-presented staff bring food and drinks carts regularly and in proper dishes for a small fee. Settle in, enjoy lunch or maybe try to get some sleep if you’re traveling at night and look out for views of Java from your window. Remember, when you arrive in Surabaya you’ll be in a different time zone, one hour behind Bali.
Surabaya to Jakarta by Train

Surabaya is a good place to take a few night’s break if you haven’t already. The port city on East Java’s north coast is an industrial and commercial hub with towering skyscrapers, winding canals, and Dutch colonial architecture. The bustling metropolis is nothing like Bali and the vibrant Arab Quarter and Chinatown are both worth a visit. You’ll also find the Ampel Mosque here which dates back to the 15th-century and the Tugu Pahlawan, a war memorial to honor the heroes of the Surabaya Street battles in 1945.
There are plenty of places to stay in Surabaya. You’ll arrive at Surabaya Gubeng Train Station but depart from Surabaya Pasar Turi Train Station, so this is a good excuse to explore a bit of the city even if you aren’t staying for a few days. You can buy your tickets from Gubeng for your next journey so you can get ahead of the schedule and plan around your train times.
Double-check your departure station before buying – this will be the longest and most expensive portion of your journey, and consider upgrading to Eksekutif class for extra comfort. Bisnes Class seats cost around 375,000 IDR ($26) and Eksekutif, 475,000 IDR ($33). You’ll also have to fill out a ticket reservation form but won’t have to show your passport this time. Don’t worry, the reservation form will have English translations.
There are five services that operate each day from Surabaya to Jakarta, the earliest departing at 8 am and arriving at 5 pm in Jakarta, with the last train leaving at 10.30 pm and running overnight to arrive at 9 am. The train covers over 700 kilometers and takes around ten hours. Esekutif Class seats are more similar to European standards here and you’ll have your own reclining seat with a footrest, pillow, and more legroom. The arms of the seat have a folding out table and every pair gets an electrical socket on the window side. These carriages look more like aircraft in style and you get your own overhead space for luggage above your seat.
Staff members come around with food but you also get a printed menu in Eksekutif Class. The train times and all the station stops are printed on the back of the menu too. This journey will give you a great chance to see some of Java. Although you’ll mostly be traveling through food crops and rice fields, the tracks run along the sea at one point which has a very different landscape to Bali.
Get some rest, read a book, and get up for regular walks up and down the carriage to stretch your legs. Many of these trains even have smoking areas, and of course, the beloved squat toilets.
After some inevitable delays, you’ll finally arrive at Jakarta Gambir Station around 5 pm if you traveled via the earliest service. Pat yourself on the back, you’ve made it: Bali to Jakarta without a single plane in sight. This journey takes some flexibility and patience but you’ll see a lot more of the country this way and if you’re not a fan of flying, you need not worry about traveling within Indonesia now. All prices are subject to change, but you could save a pretty penny choosing ferries and trains over planes.
How much does it cost to get from Bali to Jakarta?
So with plane tickets from Bali, Denpasar to Jakarta’s international airport averaging between just 800,000 ($55) and 1,000,000 IDR ($70), is traveling by land worth it? Well, if you’re making a last-minute trip or traveling in the low season, land travel could be cheaper. Starting at 550,000 IDR ($38) and without all the additional fees that come with flying, land travel is definitely an option for budget travelers.
How long does it take to get from Bali to Jakarta by land?
Our recommended route from Bali to Jakarta by land is ideally done with a number of stops. Not only is it important to get some rest, but there are a lot of sights to see on the way and landmarks like Ijen Volcano and Surabaya city all deserve a visit. Still, if you were in a rush, you could leave Bali around midday and arrive in Jakarta by the evening of the following day, with the quickest route taking just 30 hours including waiting times. This might mean pulling up to Surabaya at 4 am after the 10 pm train from Banyuwangi, before waiting for the 8 am service to Jakarta, but it can be done. We’d recommend booking your tickets in advance to guarantee a seat on your desired service.
Is Jakarta worth visiting?
Bali might be the first place that comes to mind when you think of Indonesia, and with its rolling paddy fields, majestic waterfalls, black sands beaches, and limestone cliffs, we don’t blame you. But Jakarta definitely shouldn’t be left out and it has a lot to offer in the way of megacity living. Quickly catching up with Bangkok in reputation, Jakarta is brimming with history, antiques, colonial architecture, and Islamic monuments. The city is also popular for its business sector and flashy high-rise hotels with alluring rooftop bars offering views over the city.