OverlandSEA

Rail-first journey planning across Southeast Asia

Singapore to Bali by ferry and train

Three boats and two trains: the strait to Batam, thirty-two hours at sea to Java, then the rails east and the dawn crossing into Bali.

6 legs · 4 days · 1 border · about $135 all in

Open this route in the planner Change the pace, the beds or the passport and the numbers follow.

Pragmatic routing

Singapore Bali overland

4–10days
6legs
1border
$135all in
16h 30mon rails
1d 9hat sea
4hby road

Singapore to Bali is as much a boat journey as an overland one: 6 legs (2 on rails, 3 by sea, 1 by road) across 2 countries, with 1 frontier in between. It is 4 days if every connection is there when you reach it, and up to 10 if you arrive the day after one — the difference is waiting for a service that does not run daily, not travelling. The one to watch: Batam Centre to Jakarta (Gambir) does not run every day. The water is the point here rather than a gap in the railway — this is a journey people take deliberately, and the slow version is the good version.

2 timezones: UTC+7, UTC+8

Convert every published time to a single clock in your own notes before you book. Operators publish in their own local time and label it inconsistently.

Stations that catch people out

  • Singapore (HarbourFront) Rail dead end. Everything onward from here is a boat.
  • Probolinggo The usual railhead for Bromo. The crater rim is a jeep ride beyond Cemoro Lawang.
  • Banyuwangi (Ketapang) The ferry pier is beside the station. This is what makes "Singapore to Bali overland" literally true.

Other ways round

The recommendation is what this planner would do with no further information. These are the genuinely different journeys between the same two points — not the same route with a station moved, which is why there are two of them and not ten. This page is written around the recommended one; open another in the planner to get its own crossings, nights and costs.

  • Recommended showing

    Through Singapore, Indonesia

    2d 14h moving 4 days $135 6 legs

    Rails as far as they go, a boat where the land ends.

  • Alternative 1

    Through Malaysia, 12h road Pekanbaru to Palembang

    3d 15h moving 7 days $285 18 legs

    3 days longer, $150 dearer and 18 h more on a road.

    Open this one in the planner
  • Alternative 2

    Through Malaysia, 1d 2h road Medan to Palembang

    4d 11h moving 8 days $361 19 legs

    4 days longer, $226 dearer and 29 h more on a road.

    Open this one in the planner

The route

Durations are typical scheduled running times, not departures, and the figure under each service is how often it runs — the number that decides whether a missed connection costs you an hour or a day. Where a last departure is shown it is the one worth setting an alarm for. No planner in this region can give you a departure time you should trust: the operators publish nothing in common. Take these legs to the booking sites below and read the real clock there.

Leg & operatorTimeFare
1 Singapore (HarbourFront) Batam Centre Riau / Straits ferries Reported HarbourFront or Tanah Merah fast ferry 20 a day · roughly hourly from HarbourFront and Tanah Merah last 21:00 This is how you get past Singapore's dead end. Full immigration both ends. No bookable site of its own — try 12Go12go.asia 1h $18
Change at Batam Centre allow 2 h minimum Ferry to ferry at the same terminal
2 Batam Centre Jakarta (Gambir) Pelni Reported Pelni KM Kelud (Batu Ampar – Tanjung Priok)Economy berth about weekly · the Jakarta sailing is normally the Wednesday one; the rotation alternates via Tanjung Balai Karimun and Bintan The reason not to cross Sumatra by coach. Batu Ampar to Tanjung Priok in about a day and a third, arriving in Jakarta itself rather than at the far end of three bus days. Economy is a berth in an open dormitory from around $26; a cabin is roughly $80. Book ahead around Idul Fitri, when this ship is how a good part of Sumatra goes home. Book with Pelnipelni.co.id 1d 8h $28
Change at Jakarta (Gambir) allow 2 h minimum Arriving off a sleeper onto a long-distance departure
3 Jakarta (Gambir) Surabaya (Gubeng) KAI Reported KAI north-coast line frequent · Java's main corridors run all day via Cirebon · Semarang Book with KAIbooking.kai.id 10h $20
Change at Surabaya (Gubeng) allow 30 min minimum Same station, same operator, seat to seat
4 Surabaya (Gubeng) Banyuwangi (Ketapang) KAI Reported Mutiara Timur / Probowangi 8 a day · through the day via Probolinggo · Jember Book with KAIbooking.kai.id 6h 30m $8
Change at Banyuwangi (Ketapang) allow 2 h minimum Rail to ferry in the same town
5 Banyuwangi (Ketapang) Gilimanuk ASDP Indonesia Ferry Structural ASDP Ketapang–Gilimanuk every 30–60 min · around the clock, all year Runs around the clock, pier beside the station. The dawn crossing is the one people remember. Book with ASDPferizy.com 45m $1
Change at Gilimanuk allow 90 min minimum Same terminal, different operators — no through ticketing, no held connection
6 Gilimanuk Denpasar Local transfer Reported Bus / private car on demand · taxis, tuk-tuks and songthaews wait at the station; nothing to time Pay on the spot 4h $10

What stops running, and when

Not a timetable — this planner will not print a departure time it cannot stand behind, and no two operators here publish in a way that would let it. This is the other half of the question, and the half that strands people: which legs stop for the day, and how late. Nobody misses a connection for want of knowing the 14:05 existed. They miss it because the last boat went at 17:00.

LegRunsLast
Singapore (HarbourFront) Batam Centre HarbourFront or Tanah Merah fast ferry roughly hourly from HarbourFront and Tanah Merah 21:00

Day by day

Shape, not a timetable. This is built from running times, the connection buffers above and your chosen pace — it deliberately states no departure time, because none of these operators publish one this page could stand behind. Use it to decide how many nights to book and where; use the operator sites for the clock.

Day 1 1d 13h moving
  • Singapore Batam HarbourFront or Tanah Merah fast ferry 1h
  • Batam Jakarta Pelni KM Kelud (Batu Ampar – Tanjung Priok) 1d 8h
Night aboard — Pelni KM Kelud (Batu Ampar – Tanjung Priok)
Day 2 10h 30m moving
  • Jakarta Surabaya KAI north-coast line 10h
Night in Surabaya
Day 3 10h 45m moving
  • Surabaya Banyuwangi Mutiara Timur / Probowangi 6h 30m
  • Banyuwangi Gilimanuk ASDP Ketapang–Gilimanuk 45m
Night in Gilimanuk
Day 4 4h moving
  • Gilimanuk Bali Bus / private car 4h
Arrive

Where you sleep

Priced where the journey actually stops, not averaged across the region — the difference between a night in Siem Reap and a night in Singapore is a factor of five, and it is worth seeing before you book. Figures are indicative low-season rates for a room booked a week or two out; the totals below use the simple private room band. 1 further night is spent aboard, already inside the fare.

  • Surabaya night of day 2 $25
    $8hostel bed$25simple private room$55good mid-range hotel
  • Gilimanuk night of day 3 $25
    $8hostel bed$25simple private room$55good mid-range hotel

Border crossings

Itineraries die at frontiers, not on track. Never plan one of these without checking the current position for your own passport.

Singapore ↔ Batam

Singapore ↔ Indonesia
Where
Ferry terminal — immigration at the terminal, not on the boat
On the train?
n/a
Luggage
Yes
Visa
Indonesian visa-on-arrival or e-VOA is available to many nationalities at the main Batam terminals. Confirm the specific terminal is an international checkpoint.
Cash on the far side
Indonesian rupiah.
Time cost
About 60 minutes of formalities

The trap. Some Riau ferry terminals are domestic-only. Arriving at the wrong one wastes a day.

Where this breaks

Ranked by what actually ends trips, not by probability. A missed last connection costs a day and an unplanned hotel; a missed afternoon connection costs an afternoon.

  1. caution

    Batam Centre to Jakarta (Gambir) does not run every day

    This one goes about weekly — the Jakarta sailing is normally the Wednesday one; the rotation alternates via Tanjung Balai Karimun and Bintan. The days and the cost above are running times and fares: they do not include waiting for the next departure, because that depends on which day you arrive. On a weekly service that wait can be most of a week, and it is the difference between the length of the journey and the length of the trip.

    What to do. Find the sailing or departure date first and build the rest of the itinerary backwards from it, rather than planning the route and looking up this leg last.

  2. note

    The Singapore (HarbourFront) – Batam Centre boat is weather-dependent

    Ferries are cancelled rather than delayed, and a cancellation costs a day rather than an afternoon.

    What to do. Never make this crossing the only path to a fixed commitment. Leave a slack day between it and any flight home.

  3. note

    The Batam Centre – Jakarta (Gambir) boat is weather-dependent

    Ferries are cancelled rather than delayed, and a cancellation costs a day rather than an afternoon.

    What to do. Never make this crossing the only path to a fixed commitment. Leave a slack day between it and any flight home.

Booking sequence

Book in order of scarcity times window length, not in the order you travel. The shortest leg on the whole spine sells out first.

  1. 1

    KAI

    ~45 days

    Plentiful, but the Bandung and Yogyakarta services fill at weekends.

    Good site, bookable from abroad. The Access by KAI app is easier once you are in Indonesia.

    Book with KAIbooking.kai.id
  2. 2

    Sea legs

    Mostly turn-up-and-go

    Langkawi and Samui routes are worth pre-booking in season, the Mekong slow boat the day before you sail, and the Philippine RORO crossings not at all — they are grounded or they are running.

  3. Everything else on this route, in no particular hurry:

  4. ·

    ASDP Indonesia Ferry

    Ferizy is ASDP's official booking platform. Crossings are frequent enough that walking up usually works too.

    Book with ASDPferizy.com
  5. ·

    Local transfer

    Taxi, tuk-tuk, songthaew or minivan at the station. Agree the fare before you get in.

    Pay on the spot
  6. ·

    Pelni

    Books online and through the Pelni app, and sells at the port. Economy is a numbered berth in an open dormitory; the cabin classes are a few dollars more and worth it on anything overnight.

    Book with Pelnipelni.co.id
  7. ·

    Riau / Straits ferries

    Operators on the Straits routes change often. Check what is currently sailing before you commit to a date.

    No bookable site of its own — try 12Go12go.asia

Where an operator cannot be booked from abroad — the Laos–China Railway above all — an aggregator is the practical route in. They add a fee, and some sell tickets they do not yet hold and buy them when inventory opens, which is a genuine cancellation risk on a scarce sleeper. Prefer the operator wherever the operator actually works, which is most of the time.

No affiliate links on transport. Every booking link above goes straight to the operator or aggregator and earns this project nothing. The operator's own site is listed first because it is usually cheaper and always more reliable, not because of what it pays — that ordering is the most load-bearing judgement on this page and it is not for sale. Booking URLs were last reviewed 2026-07 and are not machine-checked — if one is dead, search the operator name rather than trusting a reseller that ranks well.

Where it does earn. The hotel links in “Where you sleep” and the insurance link below pay a commission, at no extra cost to you. They are marked as paid links. Nothing about them changes a route, a price, or the order of anything: no hotel is recommended over another and no leg is routed differently because of them.

Costs

Transport, 6 legs$85
Accommodation, 2 nights — Surabaya $25, Gilimanuk $25$50
1 night on a sleeper — a bed you already paid for in the fareincluded
Total$135

Against flying

4 days, $135, 6 legs versus a flight of roughly 2h 51m gate to gate at somewhere around $89–185. That fare band is estimated from the 1678 km great-circle distance, not from live inventory — check it.

The plane wins on time and often on money. People take this route because the overland journey is the thing they want, not because it is efficient. If that is not you, fly — and there is no shame in the sleeper one way and the plane home.

If you have more time

Where the slow-travel value actually is — the detours that turn a transit into a trip.

  • Swap the north coast for Bandung and Yogyakarta

    +2 hours moving, +2 nights

    The router picked the north-coast line through Semarang because it is the quicker way across Java. The southern route — Whoosh to Bandung, then the Argo Wilis through the hills to Purwokerto and Yogyakarta — is slower, prettier, and puts you within reach of Borobudur and Prambanan. On a journey taken deliberately by land, that is usually the better trade.

  • Take the dawn crossing to Bali

    +0 nights

    The Ketapang–Gilimanuk ferry runs around the clock, so you can choose your moment. Choose first light.

Photography

Network reviewed 2026-07. No leg on this route is currently flagged as volatile. Cross-check anything time-critical against the operator and against Seat61 before you book. Fares are indicative.

Plan your own version of this route