Contents
Leaving the industrial heartbeat of East Java for the tropical allure of Bali is a classic Indonesian transition. While Surabaya serves as a bustling gateway of commerce and colonial history, Bali offers a complete shift in pace, moving from the shadow of Mount Bromo toward the surf breaks of Canggu and the cultural heart of Ubud. The journey involves crossing the Bali Strait, a narrow strip of water that separates these two distinct islands, and the choice you make depends entirely on whether you value time or the slow-motion adventure of the road.
Travelers often find themselves weighing the efficiency of a quick flight against the overnight camaraderie of a long-distance bus. Both options are well-established and cater to different budgets. You can easily compare these options and book your tickets on GoAsia.cc to ensure your seat is secured before you arrive at the terminal.
Surabaya to Bali by Flight
For most travelers, flying is the preferred method of reaching the Island of the Gods. It turns what could be a grueling day of travel into a short commute, whisking you from Juanda International Airport (SUB) to Ngurah Rai International Airport (DPS) in about an hour. AirAsia's route page lists direct flights with Super Air Jet, Lion Air, Citilink, TransNusa and Batik Air, with departures including 05:15, 07:55, 11:15, 12:20, 13:35 and 14:00.[1]
The Flight Experience
The cheapest fare listed starts at about IDR 615,000 (about $34) one way (October 2026).[1] Booking platforms list economy fares of about $40 to $90 and a flight time of 1 hour to 1 hour 5 minutes.[2] You will spend part of that time climbing or descending. Upon arrival in Denpasar, you are centrally located to reach Kuta, Seminyak, or Sanur, though Bali's traffic can make the last stretch slow.
Surabaya to Bali by Bus
If you have more time and are looking to keep your costs low, the bus is a fantastic alternative. Booking platforms list buses from Surabaya to Denpasar at about $10 to $25 and about 11 hours 30 minutes to 14 hours 5 minutes (October 2026).[2] This is not just a road trip; it is a logistical feat that includes a ferry crossing from Ketapang in Java to Gilimanuk in Bali. The long duration makes it a significant commitment, but it can save you the cost of a night's accommodation as the buses travel overnight.

Bus Classes
Booking platforms list three classes on the Surabaya to Denpasar route:[2]
- VIP Class: The most common option, with departures at 16:30, 17:45, 17:50 and 18:30.[2]
- Executive Class: A departure at 19:00.[2]
- Luxury Class: The top-tier option, with departures at 17:00 and 17:30.[2]
Ask the operator what your class includes, as seats, facilities and meals differ between buses. The journey starts in the late afternoon or early evening, and you drive through the eastern stretches of Java before reaching the ferry port, usually at night. The ferry crossing can add waiting time: in late September 2026, ASDP put 26 ships on the Ketapang to Gilimanuk crossing to clear a queue of about 17 km on the Ketapang side after about three days of congestion.[3] Allow extra time, especially around holidays.
Comparing Your Options
| Mode | Price (USD) | Duration | Comfort |
|---|---|---|---|
| Flight | $34 - $90[1][2] | 1h - 1h 5min | High |
| Bus (VIP/Executive/Luxury) | $10 - $25[2] | 11h 30min - 14h 5min | Medium |
Tips for Traveling from Surabaya to Bali
- Book Ahead: While there are many flights, prices can spike during Indonesian public holidays or long weekends. Similarly, Luxury bus seats are limited and tend to sell out fast.
- Check Your Terminal: Surabaya's Juanda Airport has more than one terminal. Check your booking confirmation to see which terminal your airline departs from, and allow extra time for traffic on the way to the airport.
- Prepare for the Ferry: If taking the bus, keep a light jacket or sarong handy. The air conditioning on Indonesian buses is notoriously cold, and the sea breeze on the ferry can be chilly at night.
- Time Zone Change: Bali (WITA) and Surabaya (WIB) are in different time zones, so check the local departure and arrival times on your ticket.
- Arrival in Bali: Ask the bus company where it drops you in Bali. Bus terminals can be outside the main tourist areas, so it is often best to arrange a pickup or use a ride-sharing app.
Timetable
| Flight East Java - Bali $ 40.10–89.86 1h – 1h 5m | |
|
| Bus Surabaya - Denpasar $ 10.01–24.47 11h 30m – 14h 5m | |
|
Frequently Asked Questions
Use the booking tool on this page to compare the transport options currently available from Surabaya to Bali, including current prices and schedules.
The cheapest way to travel is usually the bus, at about $10 to $25 depending on the class (October 2026). Promotional flight fares can start at about $34, but they change by date.
Flying is the fastest option by a wide margin. The flight itself takes about 1 hour, compared to at least 11.5 hours on a bus.
A flight takes approximately 1 hour. If you choose to go by land and sea, the bus journey typically takes between 11 hours 30 minutes and 14 hours 5 minutes, depending on traffic and ferry wait times.
Buses from Surabaya to Denpasar cross by ferry from Ketapang to Gilimanuk. Ask the bus company whether the ferry fare is already included in your ticket before you buy it.
You will depart from Juanda International Airport (SUB), south of the city center. Allow plenty of time to reach the airport due to potential traffic.
Yes, the listed bus departures are in the late afternoon or evening, arriving in Bali the following morning. This is a popular way for budget travelers to save on a night of accommodation.
Sources and background
Numbers in the text such as [1] refer to these sources.
- [1] AirAsia: Cheap flights from Surabaya to Bali. Retrieved October 15, 2026.
- [2] 12Go: 12Go timetable: Surabaya to Bali. Retrieved October 15, 2026.
- [3] ASDP Indonesia Ferry: ASDP Percepat Pemulihan Layanan Ketapang-Gilimanuk, Optimalkan 26 Kapal dan Pola Operasi. Retrieved October 15, 2026.
Guide prices and journey times are indicative, not live quotes. A booked package may include transfers and waiting time as well as the main journey. Check the selected offer, pickup point and current conditions before booking.