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
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 & operator | Time | Fare | |
|---|---|---|---|
| 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.
| Leg | Runs | Last |
|---|---|---|
| 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.
- Singapore Batam HarbourFront or Tanah Merah fast ferry 1h
- Batam Jakarta Pelni KM Kelud (Batu Ampar – Tanjung Priok) 1d 8h
- Jakarta Surabaya KAI north-coast line 10h
- Surabaya Banyuwangi Mutiara Timur / Probowangi 6h 30m
- Banyuwangi Gilimanuk ASDP Ketapang–Gilimanuk 45m
- Gilimanuk Bali Bus / private car 4h
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.
-
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.
-
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.
-
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
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
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.
Everything else on this route, in no particular hurry:
-
·
ASDP Indonesia Ferry
Ferizy is ASDP's official booking platform. Crossings are frequent enough that walking up usually works too.
Book with ASDPferizy.com -
·
Local transfer
Taxi, tuk-tuk, songthaew or minivan at the station. Agree the fare before you get in.
Pay on the spot -
·
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 -
·
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 fare | included |
| 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 nightsThe 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 nightsThe Ketapang–Gilimanuk ferry runs around the clock, so you can choose your moment. Choose first light.
Photography
- Marina Bay Sands — Basile Morin, CC BY-SA 4.0, via Wikimedia Commons
- Kota Tua, Jakarta — CEphoto, Uwe Aranas, CC BY-SA 3.0, via Wikimedia Commons
- Mount Bromo — Thomas Hirsch (= user Ravn), CC BY-SA 3.0, via Wikimedia Commons
- Ijen blue fire — Sémhur (talk), CC BY-SA 4.0, via Wikimedia Commons
- Ubud — chensiyuan, CC BY-SA 4.0, via Wikimedia Commons
