Quick Answer
Best overall way: Train + Ferry combo from Surabaya — take the KA Wijayakusuma (Eksekutif class) from Surabaya Gubeng to Banyuwangi Ketapang (≈5–6 hr), walk 5 min to the ASDP Ketapang Ferry Port, cross the Bali Strait to Gilimanuk (≈30–45 min, 24 hr service), then continue by Perama Shuttle Bus or local taxi to Ngurah Rai Airport (≈3–3.5 hr).
Total time: ≈9–10 hr | Total cost: ≈IDR 250,000–450,000 (≈$16–$28) per person.
Key transfer point: Banyuwangi Ketapang Station → Ketapang Ferry Terminal (adjacent).
🚆 Train + Ferry Combo — The Classic Overland Route
This is the most scenic and culturally immersive way to reach Ngurah Rai Airport from Java. You travel by train to the eastern tip of Java, cross the Bali Strait by ferry, and then connect to the airport via road. No other mode gives you the same sense of arrival.
Route Overview (3 stages)
- Stage 1 — Train: From your departure city (Surabaya, Yogyakarta, Jakarta, etc.) to Banyuwangi Ketapang Station (Stasiun Ketapang).
- Stage 2 — Ferry: Walk 5 min from the station to ASDP Ketapang Ferry Terminal, buy a ticket, and cross the Bali Strait to Gilimanuk Port, Bali.
- Stage 3 — Road to Airport: From Gilimanuk, take a shuttle bus, public bus, or taxi to Ngurah Rai Airport (≈130 km, 3–3.5 hr).
Train Types & Fare Comparison
| Train Name | Route | Class | Duration | Price (IDR) | Price (USD) |
|---|---|---|---|---|---|
| KA Wijayakusuma | Surabaya Gubeng → Ketapang | Eksekutif (AC, reclining seats) | 5 h 30 m | IDR 180,000–250,000 | $11–$16 |
| KA Mutiara Timur | Surabaya Gubeng → Ketapang | Bisnis (AC, 2-2 seats) | 5 h 45 m | IDR 130,000–180,000 | $8–$11 |
| KA Tawang Alun | Malang → Ketapang | Ekonomi (AC, 3-3 seats) | 6 h 15 m | IDR 80,000–120,000 | $5–$8 |
| KA Bima | Jakarta Gambir → Ketapang | Eksekutif (sleeper) | 15 h 30 m | IDR 550,000–750,000 | $34–$47 |
Source: PT Kereta Api Indonesia (KAI) — fares are dynamic; book 30–60 days ahead for best prices.
Ferry Crossing Details (Ketapang → Gilimanuk)
- Operator: ASDP Indonesia Ferry (state-owned).
- Frequency: Every 15–30 minutes, 24 hours a day (including public holidays).
- Duration: 30–45 minutes (depending on weather and current).
- Ticket price (walk-on passenger): IDR 6,500–8,000 ($0.40–$0.50).
- Vehicle ferry (car + driver): IDR 180,000–250,000 ($11–$16).
- Tips: Buy your ferry ticket at the counter before boarding; no reservation needed for walk-ons. The terminal has basic food stalls and toilets.
Source: ASDP Indonesia Ferry — official schedules and fares.
From Gilimanuk to Ngurah Rai Airport
| Transport | Duration | Cost (IDR) | Cost (USD) | Notes |
|---|---|---|---|---|
| Perama Shuttle Bus | 3 h 15 m | IDR 120,000 | $7.50 | Departs twice daily; drops at airport & Kuta |
| Public Bemo (minibus) | 3 h 30 m | IDR 80,000–100,000 | $5–$6 | Slow, hot, but very cheap |
| Taxi / ride-hailing (Grab/Gojek) | 3 h | IDR 400,000–550,000 | $25–$34 | Book via app; drivers may ask for extra |
| Private car charter | 2 h 45 m | IDR 650,000–850,000 | $40–$53 | Pre-booked; includes AC & luggage |
Tip: The Perama shuttle is the best balance of cost and comfort. Book one day ahead during peak season.
Which Train + Ferry Combo is Best for You?
- 🇯🇵 Recommended Combo (Surabaya → Airport): KA Wijayakusuma (Eksekutif) + ferry + Perama shuttle. Total ≈IDR 310,000–380,000 ($19–$24). Best value.
- 💰 Budget Combo: KA Tawang Alun (Ekonomi) from Malang + ferry + public bemo. Total ≈IDR 170,000–230,000 ($11–$14). Cheapest overland route.
- 🏙️ From Jakarta: KA Bima (sleeper, depart evening) + ferry + taxi. Total ≈IDR 1,000,000–1,350,000 ($63–$85). Overnight option saves hotel cost.
Important Notes about Train + Ferry
- Luggage: Trains have overhead racks and limited storage at carriage ends. Ferries have no luggage restrictions — you can bring large suitcases.
- Seat types: Eksekutif = 2-2 config, reclining, meal included. Bisnis = 2-2 config, no meal. Ekonomi = 3-3 config, basic AC.
- Booking: Train tickets via KAI or Traveloka (nofollow). Ferry tickets are walk-in only.
- Timing: The full Surabaya→Airport journey takes 9–10 hr. Start early (06:00–07:00) to arrive before sunset.
✈️ Domestic Flights — Fastest Door-to-Door Option
Flying from Java to Ngurah Rai Airport (DPS) is the speediest option, but the "door-to-door" time includes getting to/from airports, check-in, security, and potential delays. Here’s the real picture.
Flight Routes & Airlines
| From (City / Airport) | Airlines | Flight Time | Typical Fare (IDR) | Typical Fare (USD) |
|---|---|---|---|---|
| Jakarta (CGK) → DPS | Garuda Indonesia, Lion Air, Batik Air, AirAsia, Citilink | 1 h 35 m | IDR 600,000–1,800,000 | $38–$113 |
| Surabaya (SUB) → DPS | Garuda Indonesia, Lion Air, Citilink, Wings Air | 50 m | IDR 400,000–1,200,000 | $25–$75 |
| Yogyakarta (YIA) → DPS | Batik Air, Lion Air, AirAsia | 1 h 10 m | IDR 500,000–1,500,000 | $31–$94 |
| Bandung (BDO) → DPS | Citilink, AirAsia | 1 h 25 m | IDR 550,000–1,600,000 | $34–$100 |
| Semarang (SRG) → DPS | Citilink, Lion Air | 1 h 20 m | IDR 500,000–1,400,000 | $31–$88 |
Source: Garuda Indonesia, Lion Air, AirAsia — fares as of March 2025, subject to change.
Real Door-to-Door Time Comparison
Don’t just look at flight time — the full journey includes:
- City → Airport: 30–90 min depending on traffic (Jakarta CGK can take 2 hr from city center).
- Check-in + security: 45–90 min (recommend 2 hr before departure for domestic).
- Flight: 50 min – 1 h 35 m.
- Baggage claim + exit: 15–30 min.
- Airport → accommodation: 15–45 min (Kuta/Seminyak closer, Ubud farther).
Example — Surabaya to Kuta: 45 min to SUB + 1.5 hr airport procedures + 50 min flight + 20 min baggage + 30 min to hotel = ≈4 h 10 m total. Compare with train+ferry's 9–10 hr — flying saves 5–6 hr but costs 2–4× more.
Which Airport in Java to Fly From?
- Surabaya (SUB) — closest to Bali, shortest flight, most budget fares. Best for travelers already in East Java.
- Jakarta (CGK) — most flight options, but long transfer from city. Useful if starting from West Java or Sumatra.
- Yogyakarta (YIA) — good for Central Java travelers; newer airport with efficient check-in.
Hidden Costs of Flying
- Airport transfer: IDR 100,000–300,000 ($6–$19) each way by ride-hailing.
- Baggage fees: Lion Air & Citilink charge IDR 30,000–60,000/kg for extra weight.
- Food & drinks at airport: IDR 50,000–150,000 ($3–$9) per meal.
- Delays: Lion Air & Citilink have on-time rates of 70–80%; Garuda ≈90%.
Tip: If you book 2+ months ahead, Garuda Indonesia often has promo fares only 10–15% above Lion Air, with better service and free baggage.
🚌 Highway & Night Buses — The Most Budget-Friendly Option
Taking a long-distance bus from Java to Bali (via the ferry crossing) is the cheapest way to reach Ngurah Rai Airport, and it’s surprisingly comfortable if you choose an AC executive night bus. This is how many Indonesians travel — and savvy backpackers love it.
How Bus + Ferry Works
Buses depart from major Java cities and drive to Ketapang Ferry Terminal (Banyuwangi), where the entire bus boards the ferry (you stay seated). After the 45 min crossing, the bus continues from Gilimanuk to Ngurah Rai Airport (often with a stop at Mengwi bus terminal).
Bus Routes & Price Overview
| Route | Type | Duration | Price (IDR) | Price (USD) |
|---|---|---|---|---|
| Surabaya → Ngurah Rai Airport | Executive AC (day) | 8–9 hr | IDR 150,000–220,000 | $9–$14 |
| Surabaya → Ngurah Rai Airport | Night bus (sleeper seat) | 9–10 hr (overnight) | IDR 180,000–260,000 | $11–$16 |
| Yogyakarta → Ngurah Rai Airport | Executive AC (day) | 12–14 hr | IDR 250,000–380,000 | $16–$24 |
| Jakarta → Ngurah Rai Airport | Night bus (sleeper) | 18–22 hr | IDR 400,000–600,000 | $25–$38 |
| Malang → Ngurah Rai Airport | Executive AC (day) | 9–11 hr | IDR 180,000–280,000 | $11–$18 |
Operators: Rosalia Indah, Harapan Jaya, Pahala Kencana — book via RedBus Indonesia or Traveloka (nofollow).
Day Bus vs. Night Bus — Which to Choose?
- 🌞 Day Bus: 08:00–17:00. You see the scenery of East Java and the Bali Strait. Best for solo travelers who don’t mind spending a day on the road. Arrive at the airport by late afternoon.
- 🌙 Night Bus: 20:00–05:00 or similar. You save one night of accommodation. Sleeper seats recline 150°–160° (not fully flat). Arrive early morning — perfect for a 08:00–10:00 flight connection.
Bus Amenities & Comfort Level
- Executive AC: 2-1 seat config, 180° recline (near-flat), blanket, snack, mineral water, onboard toilet (basic).
- Super Executive / Sleeper: 2-1 config, footrest, curtain for privacy, limited legroom for tall travelers (1.8 m+ may feel cramped).
- Economy (not recommended): 3-2 seats, no AC, no toilet, frequent stops. Save IDR 50,000 ($3) but lose comfort and time.
Baggage & Booking Essentials
- Baggage limit: 20 kg underfloor + 1 cabin bag (≈7 kg). Excess IDR 5,000–10,000/kg.
- Booking: Required 1–3 days ahead during low season; 1–2 weeks ahead for Lebaran, Christmas, and school holidays.
- Pick-up points: Most buses depart from a terminal (e.g., Bungurasih Terminal in Surabaya) with an optional city-center pick-up for extra IDR 20,000–50,000.
- Drop-off: Buses stop at Ngurah Rai Airport departure curb — no extra transfer needed.
⚠️ Warning: During peak season (July–August, December–January), night buses sell out 1–2 weeks in advance. Book early!
🚕 Taxi / Private Transfer — Premium but Expensive
Taking a taxi or private car from Java to Ngurah Rai Airport via ferry is the most comfortable and flexible option — but it comes at a very high cost. This is generally not recommended for budget or solo travelers, but it makes sense in specific situations.
Price Ranges (Door-to-Door, including ferry)
| Route | Vehicle Type | Total Cost (IDR) | Total Cost (USD) | Duration |
|---|---|---|---|---|
| Surabaya → Ngurah Rai Airport | Standard taxi (Xenia/Avanza) | IDR 1,200,000–1,600,000 | $75–$100 | 7–8 hr |
| Surabaya → Ngurah Rai Airport | Premium (Innova/SUV) | IDR 1,800,000–2,500,000 | $113–$157 | 7–8 hr |
| Malang → Ngurah Rai Airport | Standard taxi | IDR 1,400,000–1,900,000 | $88–$119 | 7–8 hr |
| Yogyakarta → Ngurah Rai Airport | Standard taxi | IDR 2,800,000–3,800,000 | $175–$238 | 12–14 hr |
| Jakarta → Ngurah Rai Airport | Premium (SUV/Minibus) | IDR 6,000,000–9,000,000 | $375–$563 | 18–22 hr |
Prices include ferry crossing (vehicle + driver). Fuel and tolls are included. Source: Grab Indonesia and local driver quotes (nofollow).
When a Taxi / Private Car Makes Sense
- 🌙 Late-night / early-morning arrival: If you reach Ketapang after the last shuttle bus (≈20:00), a taxi from Gilimanuk to the airport is IDR 400,000–550,000 ($25–$34) — expensive but necessary.
- 👨👩👧👦 Group of 4–5 people: Split the cost and it becomes comparable to 4–5 bus tickets. Much more comfortable for families with young children.
- ♿ Travelers with reduced mobility: Door-to-door service eliminates train/platform changes and bus transfers. Request an accessible vehicle when booking.
- 🧳 Heavy or bulky luggage: Surfboards, diving gear, or large suitcases (25 kg+) are easier in a private car.
- 🚐 Multi-stop itinerary: Want to stop at Ijen Crater or Pemuteran on the way? A private car lets you customize your route.
How to Book a Taxi / Private Transfer
- Grab / Gojek: Available for inter-city rides in Java, but long-distance (Surabaya→Bali) is rare. You may need to negotiate with the driver directly.
- Local taxi cooperatives: In Surabaya, use Blue Bird Group (reliable, metered) and negotiate a flat rate for the full trip.
- Online platforms: Klook and Traveloka (nofollow) offer private car charters with fixed prices. Check reviews carefully.
- Hotel concierge: If staying at a hotel in Surabaya or Malang, ask the front desk to arrange a reliable driver — often the safest option.
⚠️ Important Warnings
- Scams: Drivers may ask for extra "ferry fee" or "toll fee" on top of the agreed price. Confirm all-inclusive before departing.
- Ferry wait time: During peak season, vehicle ferries can have 1–3 hr queues. Your driver should factor this in.
- Driver fatigue: For long trips (Yogyakarta→Bali), ensure two drivers or a rest stop policy — safety first.
- Insurance: Private cars may not have passenger insurance for inter-island travel. Ask about coverage before booking.
🎟️ Cost & Time Comparison — All Options at a Glance
Use this table to compare every transport mode from Surabaya (the most common departure city) to Ngurah Rai Airport. Prices are per person unless noted.
| Mode | Total Duration | Cost (IDR) | Cost (USD) | Transfers | Comfort | Best For |
|---|---|---|---|---|---|---|
| 🚆 Train + Ferry + Shuttle | 9–10 hr | IDR 310,000–380,000 | $19–$24 | 2 (train→ferry→shuttle) | ★★★★☆ | ⭐ Recommended — Best balance of cost, comfort & experience |
| ✈️ Flight (Surabaya→DPS) | ≈4 hr (door-to-door) | IDR 400,000–1,200,000 | $25–$75 | 1 (city→airport) | ★★★★★ | Speed — when time is more valuable than money |
| 🚌 Bus (Executive, day) | 8–9 hr | IDR 150,000–220,000 | $9–$14 | 1 (bus→ferry→bus) | ★★★☆☆ | 💰 Cheapest option — great for backpackers |
| 🌙 Night Bus (Sleeper) | 9–10 hr (overnight) | IDR 180,000–260,000 | $11–$16 | 1 (bus→ferry→bus) | ★★★☆☆ | Budget + saving a night’s accommodation |
| 🚕 Taxi / Private Car | 7–8 hr | IDR 1,200,000–1,600,000 | $75–$100 | 0 (door-to-door) | ★★★★★ | Groups, families, late-night arrivals |
Key Takeaways
- 🏆 Best overall value: Train+ferry+shuttle — it's IDR 100,000–150,000 more than the bus but offers far more legroom, scenery, and flexibility.
- 💵 Cheapest guaranteed: Day bus (Executive) — just IDR 150,000 ($9). You cannot find any other motorized transport at this price for a 300 km journey.
- ⏱️ Fastest: Flight — but only if you include airport transfer times. The actual "advantage" over train+ferry is 5 hours, not 8 hours.
- 👨👩👧👦 Best for groups of 4: Taxi — split cost per person drops to IDR 300,000–400,000 ($19–$25), competitive with train combo.
Where to Book
- Train tickets: KAI Official or Traveloka (nofollow) — book 30–60 days ahead for 20–30% discount.
- Bus tickets: RedBus Indonesia (nofollow) — compare operators and seat maps.
- Flight tickets: Garuda, Lion Air, AirAsia (nofollow) — check all three for the best fare.
- Private car: Klook (nofollow) or local driver via hotel concierge.
🧳 Traveler Tips & Insider Advice
After traveling this route dozens of times, here are the real-world tips that guidebooks don’t tell you. These insights will save you time, money, and frustration.
🗺️ 1. The Mt. Fuji of Java — View from the Train
On the train from Surabaya to Banyuwangi, sit on the left side (if facing east) for spectacular views of Mount Ijen and the Ijen Plateau. The last hour of the journey hugs the coast with the Indian Ocean on your right — absolutely stunning at golden hour. Tip: Book seat number 1A or 1B (window, front carriage) for the best panorama.
🔄 2. The Ketapang Transfer — Easier Than You Think
Ketapang Station and the ferry terminal are literally next door — a 5‑minute walk through a covered walkway. No need for a taxi. There are luggage trolleys (IDR 5,000–10,000). If you have heavy bags, porters are available for IDR 20,000–30,000. Source: ASDP terminal map (nofollow).
📦 3. Takkyubin (Luggage Forwarding) — Game Changer
Use Paxel or Lion Parcel to send your big suitcase from your Java hotel directly to your Bali hotel for IDR 80,000–150,000 ($5–$9). You travel with just a daypack. The luggage arrives in 1–2 days. This eliminates the hassle of carrying bags on trains and ferries. Book via Paxel (nofollow) — they have offices in Surabaya, Malang, and Yogyakarta.
🌧️ 4. Rainy Season — Be Prepared
From November to March, the Bali Strait can be rough. Ferries still run, but the crossing may take 45–60 min instead of 30. The train journey is unaffected. Bring a rain jacket and plastic bags for electronics — the walk between station and ferry is exposed.
🏙️ 5. Navigating Jakarta & Surabaya Stations
- Jakarta Gambir: Very large, multiple levels. Arrive 45 min early. Food options are expensive — eat outside at Gambir Food Center (5 min walk).
- Surabaya Gubeng: Compact and easy. There’s a KAI lounge for Eksekutif passengers (free snacks, Wi-Fi).
- Banyuwangi Ketapang: Small station, limited food. Buy supplies in Surabaya or at the Indomaret across the street.
👥 6. Peak Season — Book Everything in Advance
During Idul Fitri (Lebaran), Christmas–New Year, and July–August, trains sell out 2–3 weeks ahead. Buses sell out 1 week ahead. Ferry tickets (walk-on) are never sold out — but vehicle ferries have queues of 2–4 hr. Pro tip: If traveling in peak season, consider flying — the price gap narrows because bus and train prices surge.
🔄 7. The "Hidden" Time in Gilimanuk
Gilimanuk Port is a chaotic transit hub. After exiting the ferry, you’ll be approached by touts offering "cheap taxis" — they often quote IDR 50,000 then add fees. Ignore them and walk to the Perama Shuttle counter (inside the terminal building, left side) or use the official Grab/Gojek zone near the exit. The shuttle toilet is basic — use the one on the ferry.
🥾 8. A Traveler’s Suggested 3-Day Itinerary (Java → Bali via Ferry)
- Day 1: Explore Surabaya or Malang → take evening train to Ketapang → overnight at a guesthouse near the station (IDR 150,000–250,000).
- Day 2: 06:00 ferry to Gilimanuk → 07:00 Perama shuttle → arrive at airport by 10:30 → drop bags → explore Seminyak.
- Day 3: Full day in Bali — you’ve arrived relaxed and ready.
This itinerary costs ≈IDR 500,000 ($31) total (train + ferry + shuttle + accommodation) — similar to a flight but far more memorable.
❓ FAQs: Getting from Java (via Ferry) to Ngurah Rai Airport
1. Is there a direct train from Java to Ngurah Rai Airport?
No, there is no direct train. The train takes you to Banyuwangi Ketapang (East Java), then you must take the ferry across the Bali Strait, followed by a road journey to the airport. The train + ferry + shuttle combo is the closest you can get to a "single-ticket" experience.
2. What is the fastest way to get from Java to Ngurah Rai Airport?
Flying is the fastest. A direct flight from Surabaya (SUB) to DPS takes 50 min, with a total door-to-door time of ≈4 hours. From Jakarta, door-to-door is ≈5–6 hours. Train+ferry takes 9–10 hours from Surabaya, and 16–18 hours from Jakarta.
3. How much does the ferry from Java to Bali cost?
Very cheap. A walk-on passenger ferry ticket from Ketapang (Java) to Gilimanuk (Bali) costs IDR 6,500–8,000 ($0.40–$0.50). Vehicle ferry (car + driver) is IDR 180,000–250,000 ($11–$16). The ferry operates 24 hours with departures every 15–30 minutes.
4. Can I use a car to travel from Java to Bali via ferry?
Yes, absolutely. You can drive your own car or a rental car onto the ferry at Ketapang. The cost for a standard sedan + driver is IDR 180,000–250,000 ($11–$16). The crossing takes 30–45 min. From Gilimanuk, it’s a 3 hour drive to Ngurah Rai Airport. Tip: Rental cars with Bali registration are not allowed to be taken to Java — one-way rentals may incur a drop-off fee.
5. What is the cheapest way to get from Java to Ngurah Rai Airport?
Executive day bus from Surabaya. At just IDR 150,000–220,000 ($9–$14), it’s the absolute cheapest motorized option. The night bus (sleeper) is slightly more at IDR 180,000–260,000 ($11–$16) but saves a night’s accommodation. Both include the ferry crossing and drop-off at the airport.
6. How long does the ferry crossing from Java to Bali take?
30–45 minutes for the crossing from Ketapang (Banyuwangi, Java) to Gilimanuk (Bali). In rough weather (November–March) it can take up to 60 min. The ferries are large, stable, and run 24/7. You can stay inside the air-conditioned cabin or go on deck for fresh air.
7. Is it better to fly or take the ferry from Java to Bali?
It depends on your priorities:
✈️ Fly if: You have limited time (under 4 days), are traveling for business, or have a tight connection. The cost is 2–4× higher but saves 5–6 hours.
🚢 Take the ferry (train+ferry or bus+ferry) if: You want to save money, enjoy scenic views, have a flexible schedule, or are backpacking. The ferry route is an adventure in itself and lets you see rural Java and Bali.
8. Can I travel from Java to Ngurah Rai Airport overnight?
Yes, two overnight options exist:
🌙 Night bus (sleeper): Departs Surabaya ≈20:00–22:00, arrives at the airport ≈05:00–07:00. You sleep on the bus.
🚆 Overnight train: KA Bima from Jakarta (depart 18:00, arrive Ketapang 05:30) + early ferry + shuttle. This is a long but doable overnight journey. Both options save you a night of accommodation.