Travel Java by train, the civilised way! |
|
Train travel on Java
An excellent train system links all the main cities on Java, including Jakarta, Bandung, Yogyakarta, Solo, Surabaya, Probolinggo (for Mt Bromo) and Ketapang (for the ferry to Bali). Trains are cheap, comfortable and air-conditioned, the ideal way to get around. Indonesian trains run on narrow-gauge 3' 6" tracks, but are fast and usually punctual, with efficient computerised reservations. The Indonesian for train is Kereta Api - literally fire carriage.
Useful country information: Visas, currency, etc.
Classes explained: Luxury, Eksekutif, Bisnis & Ekonomi
A train ride from Jakarta to Bali in pictures
Travel insurance, mobile data & other tips
Recommended hotels on Java & Bali
Times & fares for Java
Bandung - Yogyakarta - Solo - Surabaya
Surabaya - Probolinggo - Ketapang (for Bali)
Sumatra & Bali
It's easy to travel by train & ferry between Java and Bali, or Java & Sumatra.
Java to Sumatra by train & ferry
Other routes
Ferries to Borneo, Sulawesi & Papua
Ferries between Singapore & Jakarta
Europe - Indonesia by Trans-Siberian Railway
Route map: Click for larger map
© OpenStreetMap contributors, available under the creative commons licence.
Useful country information
Train travel on Java
Maps
How to check train times & fares
-
The easiest way to check times & fares is to use agency site en.tiket.com/kereta-api, see the advice in the how to buy tickets section below.
-
Or you can use the official Indonesian Railways site www.kai.id, but it's currently only in Indonesian.
You may find it 403 forbidden, but if you have a VPN simply setting it to Indonesia will unblock it. Why we all need a VPN these days.
You'll end up on their sales site booking.kai.id and can use the journey planner to check train times and fares. Google's Chrome browser will translate anything you don't understand.
-
These online systems are for long-distance trains, they don't cover suburban trains around Jakarta or Surabaya, or the local trains to Merak or local trains between Yogyakarta & Solo. For Jakarta commuter trains and Yogyakarta-Solo local trains see www.krl.co.id (Indonesian only).
How to buy tickets
Option 1, buy at booking.kai.id, only Indonesian bank cards accepted
-
booking.kai.id is the official Indonesian Railways (Kereta Api Indonesia or KAI) ticket sales website which has offered online booking since 2012. However, it's of little use to overseas travellers as it's only in Indonesian and only accepts Indonesian credit cards. Use options 2 or 3 instead. At the time I write this it's also geo-blocked and only accessible if you use a VPN set to an Indonesian IP address (because hackers don't have VPNs, right?)
Option 2, buy at www.bookaway.com, overseas cards accepted
-
www.bookaway.com is a reliable western agency that enables online ordering of Indonesian train tickets for popular routes.
-
It offers the most popular trains & routes on Java, with instant confirmation, but not every train or route. You can book in multiple currencies including £, €, $, Au$. Naturally, they charge a booking fee. Feedback welcome.
-
Booking opens around 6 weeks ahead. Tickets can be bought up to and including the day of departure.
-
How to use bookaway.com: Run an enquiry. You can specify stations if you know them, for example Gambir Station to Tugu Yogyakarta, rather than searching in general terms from Jakarta to Yogyakarta as generic searches bring up all sorts of secondary trains to/from secondary stations.
In the search results, first look for the class you want: EKS for Eksekutif, BIS for Business, EKO for Ekonomi. Read more about classes.
Look closely at the specific departure & arrival stations, using the timetables on this page as a guide. For example, if you searched from Jakarta to Yogyakarta instead of specifying stations, you'll see options from Gambir to Tugu Yogyakarta, from Pasar Senen to Lempuyangan and from Pasar Senen to Tugu Yogyakarta. In this case, the best trains go from Gambir, and Yogyakarta (listed as Tugu Yogyakarta) is the main station in Yogya, Lempuyangan is a secondary station.
Then look at the letter between the class code and 'train', for example the 'H' in EKS H train. The letter is simply a price bucket code, select the cheapest price you can find for the class you want that brings up the train you want.
Option 3, buy at en.tiket.com/kereta-api, can also be used
-
en.tiket.com/kereta-api is a reliable Indonesian agency which connects to the Indonesian Railways (KAI) ticketing system to sell train tickets online for all routes and trains. en.tiket.com/kereta-api can be used by overseas travellers to buy tickets or just check Indonesian train times & fares. It'll work on your mobile, or you can download the Tiket app. They charge a small booking fee.
-
Booking opens around 6 weeks ahead. Tickets can be bought until the day before departure, but not on the day of travel.
-
For English, click the red & white Indonesian flag at top right and select English. Then click Trains.
Before you start, make sure you have passport numbers and exact names for each passenger. If you want them to get a text alert, have their mobile number handy too, or you can use your own contact number for all passengers.
Any passenger 3 or over counts as an adult. Children under 3 travel free, but they don't get their own seat.
-
Which station to select in which city?
Jakarta: Type Jakarta and select the Jakarta all stations option. Jakartakota is the historic 1929 terminus that's now only used by local trains, station code JAKK. Gambir is Jakarta's modern central station used by the best Eksekutif class trains to most destinations, station code GMR. If trains from Gambir are full or the times don't suit you or you want to travel in Ekonomi class, try typing station code PSE and selecting Pasar Senen which is the second most important station in Jakarta and also pretty central.
Yogyakarta: Type Yogya and select Yogyakarta or enter station code YK.
Solo (Surakarta): Type Solo and select Solobalapan or enter station code SLO.
Surabaya: Type Surabaya and select the Surabaya all stations option. Surabaya Pasar Turi (SBI) is the station for travel to/from the Semerang & Jakarta direction and Surabaya Gubeng (SGU) is for travel to/from Solo, Yogyakarta, Bandung, Probolinggo or Ketapang (Banyuwangi).
-
Use the filter! To simplify the long list of train/class/price level combinations in the search results, use the filter on the left to select only the class you want, let's say Eksekutif.
-
Which class to select? KAI trains have 4 classes, Luxury Eksekutif, Eksekutif, Bisnis & Ekonomi. Most trains just offer Eksekutif & Ekonomi, though some of the best trains are Eksekutif class only. Eksekutif is the most popular choice for western visitors though Ekonomi class is perfectly acceptable. Read more about classes.
-
Which price to select? You should always select the cheapest price level shown for the train & class you want.
First-timers get confused here, so I'll explain: You'll see each train listed multiple times, the same class on the same train may be repeated several times with different prices.
For example, you might see Jakarta to Yogyakarta on train 10 in Eksekutif class repeated 4 times with 4 different fares, Rp.490,000, Rp.510,000, Rp.550,000 and Rp.570,000. What's the difference, and which one should you select?
Answer: There is no difference, you get exactly the same seats in the same carriages whichever price you pick, so always pick the cheapest.
What you're seeing here is a primitive attempt at airline-style dynamic pricing, with various 'price buckets' on offer. An airline would of course only show you one price, the cheapest that's available, with all the other higher-priced fare buckets hidden away behind the scenes. But Indonesian railways rather unhelpfully show you all the possible price buckets, not just the cheapest.
-
Which seat to select? See the Travel Tips section for advice on choosing a seat.
-
Credit card rejection: Important!
At the payment stage, your non-Indonesian credit card may or may not work.
Tiket.com have a process for accepting payment from overseas users, follow their instructions.
-
Booking confirmation: After payment you'll be sent an email with a printable booking confirmation attached. This has an alphanumeric booking code and a QR barcode. Print this out and take it with you. If you can't access a printer, don't worry as the alphanumeric Indonesian Railways booking reference is all you need to print a boarding pass at the station.
-
You still need a boarding pass: You cannot board the train with the Tiket.com confirmation, you must get a boarding pass at the station. Getting the boarding pass at the station is easy, read the advice below about boarding passes.
-
Feedback if you use en.tiket.com/kereta-api is always welcome.
Option 3, buy at www.traveloka.com/en-id/kereta-api
An agency that works in the same way as Tiket, it may accept your credit card if Tiket doesn't.
Option 4, buy tickets at Indomaret convenience stores
-
Many branches of Indomaret convenience stores and some branches of other chains such as Alfamart have a touch-screen terminal selling various types of ticket including train tickets. You'll find Indomaret stores almost everywhere, it's often easier to buy your tickets from a local Indomaret than to go to the station. Many branches sell train tickets, although not all. They charge a small fee, about 7,500 rupiah.
-
Go inside and find the touch-screen terminal, the photo below shows what to look for. Touch i-tiket, then Kereta Api which means train.
-
A journey planner appears. It's in Indonesian but easy to work out. Enter from, to & date of travel, remembering that in Jakarta the main station is Gambir (station code GMR), in Yogya the station you want is Yogyakarta (YK), in Solo the station you want is Solobalapan (SLO), and in Surabaya the station you usually want is Surabaya Gubeng (SGU) unless you're going to or from Jakarta or Semarang in which case you want Surabaya Pasar Turi (SBI).
-
Enter the number of passengers. Dewasa means adult, which here means anyone aged 3 or over. Infants means children under 3.
-
Click Next and you'll see a list of train/class/price combinations. Sort the results by departure time to see them in a logical order. Then use the filters to see only the class you want, let's say Eksekutif. If you see more than one price for the train/class combo you want, simply pick the cheapest price - there is no difference in actual seating, this is just a primitive attempt at airline-style variable pricing. Then click Next.
-
If you now see the passenger details screen, tickets are available! If you get an error message in Indonesian, then that train/class/price combo is sold out. Don't worry, simply go back to the previous page and select the next price level up (or select a different train or class if you've already tried all the price levels for the train & class you want). Repeat as necessary until clicking Next gets you to the passenger details screen.
-
Enter passenger names and ID (passport) numbers. HP number means Hand Phone (mobile phone) number, just leave this blank or make one up if you don't have an Indonesian mobile phone number, it doesn't matter.
-
When you've entered passenger details, click to continue. A small paper ticket is printed out below the screen. Take this to the cash desk and pay for your train tickets in cash - according to one report, you may even get a free box of teabags. You'll get a reference number which you use to get a boarding pass from the check-in counters at the station, see the advice below about boarding passes.
Option 5, buy tickets at the station
-
It's not usually difficult to buy tickets at the station a day or two before departure or even on the day of travel, although trains are busy so be prepared to travel in another class or train if your first choice is fully-booked.
-
Busy periods: There are certain times of year when trains get fully booked many weeks ahead so early online booking is a must. These include the period around Chinese new year and especially the Islamic national holiday of Idul Fitri (Eid) at the end of Ramadan.
-
Remember to take your passport. If you're buying more than one ticket you'll need the passport number for each passenger.
-
Fill out an order form first. At most stations you'll find a desk with pens and blank booking forms near the ticket windows. Fill in a form with your required journey, date, class, number of passengers and passenger names & passport numbers. This will save time at the ticket window, indeed they may send you away if you haven't filled one out.
-
Pick the right ticket window. These words above each ticket window may help you find the right one:
Loket = ticket counter
Pemesanan = Ticket booking = ticket window, often followed by the classes sold at that window..
Pembatalan, pengembalian = window for cancellations & refunds.
Penujalan haru ini (Go Show) or Penjualan langsung (Go Show) = tickets for today including Go Show tickets. Go Show tickets are discounted tickets only sold within 2 hours of train departure, if seats remain available.
Tutup = closed!
Some major stations have separate booking windows for long-distance tickets. At Surabaya Gubeng there's a reservation centre for long-distance tickets on the left side of the station, separate from the short-distance ticket windows near the entrance to the platforms. Jakarta Pasar Senen has a reservations centre for long-distance tickets closest to where you drive or walk into the station driveway.
-
Self-service machines. Major stations may also have one or more self-service touch-screen ticket machines. They may only be in Indonesian, but they are easy enough to use as the process is straightforward and almost identical to using the touch-screen terminals in Indomaret convenience stores - so if you read option 4 below you'll know how to use the machines at stations too. You pay with rupiah banknotes.
Important: Orange boarding passes
At all the most important stations such as Jakarta, Surabaya, Yogyakarta, Solo, Bandung, Semarang, Purwokerto, Jember, Malan & Ketapang (Banyuwangi Baru), a boarding pass system has operated since 2016.
If you buy a ticket online at Tiket.com, Bookaway.com or from an Indomaret mini-market or a travel agency, you'll get a booking reference or QR barcode. You cannot board the train with this booking confirmation, you must get an orange boarding pass, using one of the self-service check-in counters at least 10 minutes before departure. Or you may be sent an email with a link which allows you to print a boarding pass, both methods work.
If you buy at a station more than 3 days before departure, they'll give you a blue ticket. You cannot board the train with the blue ticket, you must use it to get an orange boarding pass at one of the self-service check-in counters at least 10 minutes before departure.
If you buy at a station less than 3 days before departure, they'll give you the orange boarding pass and you can board the train.
To get a boarding pass at the station, go to one of the touch-screen computer terminals marked Check-in counter at the station entrance and either scan the barcode or type in the booking reference. Your booking will appear on the screen. Touch print and the paper roller printer will print your boarding passes. No ID is needed. You can do this at any time between several days before departure right up until a few minutes before departure. Originally, you could only print off a boarding pass at the station where your journey starts, now you can print them off for any journey at any station.
ID check before accessing the platforms: You will be asked to show the boarding pass and your passport at the ID check desk at the entrance to the platforms, it's all part of a drive to eliminate ticket scalping.
At smaller stations where they have not introduced the boarding pass system, you can board the train with the blue ticket.
Or use the KAI access app: It's reported that you can also generate a boarding pass 2h or less before your train leaves by entering your booking details into the KAI Access app, which you can download for Android or iPhone. Feedback appreciated.
On board Indonesian trains
Eksekutif, Bisnis & Ekonomi class
Eksekutif class (EKS) is air-conditioned with individual reclining seats, usually reclining to a good 30 degrees, arranged 2+2 across the car width. Seats normally face forwards, but can be rotated to face either direction by depressing the foot pedal on the aisle side. There's a small drinks table on the wall by each pair of seats with two power sockets underneath, European 2-pin type. The best trains are Eksekutif class only.
A handful of the very best trains have Eksekutif Luxury class with individual flatbed seats in addition to normal Eksekutif class seats.
Bisnis class (BIS) is air-conditioned with non-reclining padded seats, 2+2 across the car width. Seats normally face forwards, but have a walkover back that can be pulled from one side of the seat bottom to the other so the seat can face either way. There's a small drinks table on the wall by each pair of seats with two power sockets underneath, European 2-pin type. Bisnis class is a perfectly acceptable alternative if Eksekutif class is fully booked or if you want to save money. Bisnis class is getting rare, available on relatively few trains.
Ekonomi class (EKO) is air-conditioned with non-reclining padded seats, usually 2+3 across the car width. Seats are usually arranged in face-to face bays of 4 or 6 There's usually a small drinks table on the wall by each pair of seats with two power sockets underneath, European 2-pin type. Many trains are Ekonomi class only, and it's perfectly safe and comfortable to use Ekonomi class trains if the timings suit you better, or if other classes or trains are full. A few Ekonomi trains are now equipped with modern cars with 2+2 reclining seats, notably on the Jakarta-Semarang-Surabaya route. These are not dissimilar to Eksekutif class but with significantly less legroom.
Eksekutif Luxury classes
In addition to normal Eksekutif class cars, three types of Eksekutif Luxury Class are now available on a few key trains, usually just one luxury car per train.
Eksekutif Luxury
This is available on the Argo Dwipangga between Jakarta Gambir, Yogyakarta & Solo. A cut above the normal Eksekutif class seats, these luxurious seats have leg-rests and a significant recline, although with a 140 degree recline they don't go completely flat. They are arranged 2+1 across the car width, instead of 2+2 as in normal Eksekutif class. A blanket is provided, although not sheets. Courtesy of www.discoverbyrail.com, click the images for larger photos.
This is available on the Argo Bromo Anggrek & Sembrani between Jakarta Gambir & Surabaya. Introduced in 2018, these are flatbed seats like you find in business class on an airline, with a 170 degree power-recline with surround walls for privacy and individual flat-screen TV entertainment. They are arranged 1+1 across the car width. Headphones, bottled water and a blanket are provided, although not sheets. The fare includes a complimentary packed meal and soft drinks, served by a hostess. Courtesy of www.discoverbyrail.com, click the images for larger photos.
Eksekutif Luxury Compartment Suites, see video guide
This is the latest luxury offering, only available between Jakarta Gambir, Yogyakarta & Surabaya on the Argo Semeru & Bima. It consists of fully-enclosed private compartments either side of a corridor running down the centre of the car, reminiscent of Singapore Airlines or Emirates first class suites. In the middle of each private room in glorious isolation is a flatbed seat with a 170 degree recline, lightweight sleeping bag provided. The fare includes a complimentary meal and soft drinks, served by a hostess. I can't help feeling that someone with an airline background has tried to reinvent the railway sleeping-car and failed, never having seen one! Courtesy of Nonstopeurotrip, click the images for larger photos. See video guide.
Luggage allowance 20 Kg
Luggage arrangements on Indonesian trains are simple: You take your bags with you onto the train, and stick them on the overhead racks above your seat. These take anything up to backpack or medium suitcase size, see the photo below. If you have larger cases or you have difficulty lifting your bags up, you can put your bags in the gap behind the rearmost seats at the rear of the carriage in Eksekutif or Bisnis class cars, see the photos below.
Kereta Api Indonesia (KAI) introduced a 20 Kg luggage allowance per person in all classes in 2016. KAI are reasonably serious about the 20 Kg limit, and luggage may be weighed before boarding if it looks heavier than 20 Kg.
If you have more than 20 Kg of luggage, don't worry. You can take up to 40 Kg per person if you pay an excess baggage fee at the departures gate. The cost is Rp 10,000 ($0.68) per excess Kg in Eksekutif class, Rp 6,000 in Bisnis class, Rp 2,000 in Ekonomi. Indeed, at Jakarta Gambir you may find a little desk with electronic scales next to the departure gate for payment of excess luggage fees.
KAI apply the 20 Kg per person limit to the total of all passengers travelling together, so if there are two of you and one has a 15 Kg bag and the other 25 Kg, that's fine as you're within the 20 Kg x 2 = 40 Kg limit in total. They also seem to apply the 20 Kg limit to your main bags, without worrying too much about handbags or the 6 Kg daypack you're wearing on your back.
In theory KAI also have a maximum size limit for luggage and you may see airline-style does your bag fit in here displays near the departure gate, 70cm x 48cm x 30cm. Fortunately they don't seem to bother with this, as long as you stay within the 20Kg limit. So there is absolutely no problem taking backpacks or suitcases onto the train, indeed I have travelled with people who took two large 23 Kg hard-sided suitcases that were well beyond KAI's theoretical size limit and we were never stopped or questioned about our luggage on any journey. Although of course they may simply go easy on overseas visitors!
Food & drink
Every long-distance train has a catering car in the centre of the train with a counter selling tea, coffee, bottled water, soft drinks, crisps and various types of microwaveable tray meals, typically with rice and chicken (chicken = ayam) or fried rice (nasi goreng) and meatballs (bakso). The catering car usually has one or two bays of seats with tables.
However, there's no need to visit the catering car as a refreshment trolley passes up and down the train so you can buy all of these things at your seat. Orders for tray meals may be taken and delivered later once microwaved back at base. A typical tray meal costs around Rp 30,000, about $2.50. Go for it, they're tastier than they look!
You are of course free to take your own food and drink.
Travel tips
Toilets: All cars have one or two toilets, sometimes basic but usually reasonably clean and I have yet to find any KAI toilet without toilet roll, soap & water. The most modern cars have two western-style toilets or one western and one squat toilet. Only the oldest cars have two squat toilets.
Smoking is not allowed anywhere on a KAI train, although you can smoke briefly on the platform at station stops. As the on-train announcements warn, "The passenger who carry smoke onto the train, we will carry off you at the next station...".
Car numbers: Cars are numbered by class, usually starting from the front. So car 1 is usually the first car behind the locomotive, car 8 at the rear. If the train has two or more classes, numbers are repeated in each class, with an Eksekutif car 1, 2 & 3 and a Bisnis car 1, 2 & 3. So don't mistakenly board Bisnis car 1 if your seat is in Eksekutif car 1.
Seat numbering: Seat numbering is similar to planes, with the rows numbered typically from 1 to 13 in Eksekutif or 1 to 17 in Bisnis and the seats in each row lettered A, B, C, D across the car width, where A and D are the window seats and the aisle is between seats B and C.
In most Eksekutif cars there are a couple of exceptions to this rule. In the first & last rows the seats are reduced to 2+1 or 1+2 across the car width to make space for the access door and in these rows seat B (where seats shown are B, C & D) or seat C (where seats shown are A, B & C) is a 'solo' seat that is both window & aisle.
Choosing a seat: If you book online at Tiket.com or use a self-service ticket machine or Indomaret ticket terminal you can choose an exact seat from a highly-simplified seating plan, see the picture below. Seat numbers appear if you hover over a seat. The plan doesn't show the aisle, this is between seats B and C. Remember that A and D are normally the window seats on either side.
Remember that Eksekutif class cars typically have 13 rows of seats and Bisnis class 17 rows. The plan you see may not show all the rows, only those seats & rows which are available to book online (although the example below does show all rows 1-13). So if you only see rows 7 to 11 on the plan, it doesn't mean rows 1-6 and 12-13 don't exist, only that they are not bookable. Also note that you cannot tell whether row 1 or row 13 will be at the front as the car could run either way round, although all seats will be turned to face forwards.
I recommend choosing mid-car seats, avoiding rows 1-2 in any class, rows 12-13 in Eksekutif or 16-17 in Bisnis, as the ride is smoother on any train in mid-car and you get a better view of the scenery if you're not right up close to the forward bulkhead and (in Eksekutif class) the distracting bulkhead TV screen.
Jakarta Soekarno–Hatta airport train
A rail link from Jakarta's Soekarno–Hatta International airport to BNI City (formerly Sudirman Baru) station in central Jakarta opened in December 2017, now extended to Manggarai station. Trains now run every 30 minutes from around 05:00 until around 23:00. The fare is 70,000 rupiah ($5) and the journey takes 55 minutes from the airport to BNI City.
For times, fares & tickets, see reservation.railink.co.id.
Jakarta to Semarang & Surabaya
A range of trains links Jakarta with Surabaya, but the best train is the Argo Bromo Anggrek with Eksekutif Luxury & Eksekutif classes, clean, modern and powerfully air-conditioned. It has comfortable reclining seats with footrests and a catering car. There is both a daytime service and a time-effective overnight service. The overnight train doesn't have sleepers (these disappeared from Indonesian trains in the 1990s), but the Eksekutif Luxury class car (shown as Lux in the timetable below) has flatbed seats that go completely flat, blanket provided.
Shaded = the best quality trains, recommended. Jakarta to Surabaya is 725 km, 450 miles.
Lux = Eksekutif Luxury; Luxs = Eksekutif Luxury Sleeper; Luxc = Eksekutif Luxury Compartment Suites; Eks = regular Eksekutif seats. Eko = Ekonomi seats.
This timetable is only a summary, there are a few other trains, check times & fares at en.tiket.com/kereta-api (in English) or booking.kai.id (in Indonesian).
See map of Jakarta showing stations. In Semarang, the station is Semarang Tawang except for the Airlangga which uses Semarang Poncol.
(via Y) = runs via Yogyakarta & Solo, not Semarang, see route map at top of page.
Notes by train name:
Argo B = Argo Bromo Anggrek (Bromo Orchid), Eksekutif class only, regular Eksekutif class & Eksekutif Luxury Sleeper seats.
Argo S = Argo Semeru, Eksekutif class only, regular Eksekutif class seats plus one car of Eksekutif Luxury Compartment Suites.
Bima = Bima, Eksekutif class only, regular Eksekutif class plus one car of Eksekutif Luxury Compartment Suites.
Semb = Sembrani, Eksekutif class only, regular Eksekutif class plus one car of Eksekutif Luxury seats.
Blam = Blambangan Ekspres, Eksekutif & Ekonomi class
Pand = Pandalungan, Eksekutif class only with regular Eksekutif class seats.
Airl = Airlangga, Ekonomi class only, air-conditioned.
£1 = approx 20,100 rupiah; $1 = 15,500; €1 = 17,000. Prices vary by date & train, check fares as shown above.
Children under 3 travel free, no ticket required. Passengers 3 and over count as adults.
Prices vary significantly, with cheaper fares if you pre-book, for example Eksekutif class from 400,000 rupiah.
How to buy tickets: At the station, at Indomaret minimarkets or online at Tiket.com as shown here.
A journey on the Argo Bromo Anggrek
The Argo Bromo Anggrek (the Bromo Orchid) is Indonesia's premier train, linking Java's two largest cities in 9 hours at a creditable average speed of 80 km/h (50mph) start to stop on its narrow gauge tracks. The train keeps up a relentless 110 km/h (75 mph) between the few stops it makes, hooting ceaselessly at each level crossing, speeding non-stop through most smaller stations on its 9 hour dash - the same journey would take 15 hours by road. As you pass through each station, look for the station master in his red and gold hat, standing to attention outside his office watching the train pass through. The countryside is largely flat, rice paddies, villages, towns, palms and the occasional mosque. After Semarang there's a brief stretch where the train skirts the Java Sea, and around Cirebon you'll see the vast shadow of Mt Cereme in the distance to the south, its summit usually hidden by cloud. It's an active volcano and the highest point in west Java.
Jakarta to Bandung
You now have a choice of two different types of trai9n from Jakarta to Bandung.
Option 1, by regular train, city centre to city centre
There is a train every hour or two from Jakarta Gambir station to Bandung with Eksekutif & Bisnis class, taking about 3h10 for the 173 km. The fare is about 100,000 Rupiah in Eksekutif, 80,000 in Ekonomi. See www.kereta-api.co.id or en.tiket.com/kereta-api to check times & fares for your date. It's a scenic ride!
Don't overlook the convenience of the classic route now that the high-speed line is open: A 3h10 journey on the regular trains can be more convenient, cheaper and not much slower from city centre to city centre, as you don't need lengthy metro/taxi transfers at each end to/from out-of-town high-speed stations.
Option 2, by 350km/h high-speed train called Whoosh
A new high-speed line opened on 17 October 2023, linking Jakarta with Bandung at up to 350 km/h (217 mph) and taking just 46 minutes. These high-speed trains are operated by Whoosh, a separate company from KAI Indonesian Railways.
The trains have economy, business and VIP class.
For tickets and info see ticket.kcic.co.id.
The bad news is that the standard-gauge stations are not in the city centre: Jakarta's Halim station is 14 km from Gambir station, see location map, meaning a 48-minute taxi ride or 35 minute ride on the LRT Jabodebek light rail line. Bandung's Tegalluar station is a 23 km 52-minute taxi ride from Bandung's centrally-located normal station, see location map).
The high-speed trains stop at Padalarang about 12 minutes before arriving at Tegalluar, a feeder train runs from Padalarang to Bandung station in downtown Bandung.
A 350km/h Whoosh train at Halim station. Courtesy of Nonstopeurotrip.
Jakarta to Yogyakarta & Solo
Jakarta may be Java's capital, but Yogyakarta, known locally at Yogya, is its heart. Solo, also known as Surakarta, is Yogya's long-standing rival an hour to the east. Both cities should feature on any sensible trip to Java. It's easy to travel from Jakarta to Yogya or Solo by comfortable air-conditioned train, indeed it's the best way.
Shaded = the best quality recommended trains. See map of Jakarta showing stations. Jakarta to Yogyakarta is 522 km, 326 miles.
There are no sleepers on the overnight trains, only reclining seats and (on trains 8 & 9) flatbed seats in Eksekutif Luxury class.
You can check train times & fares using en.tiket.com/kereta-api (in English) or booking.kai.id (in Indonesian).
Notes by train name:
Argo L = Argo Lawu, Eksekutif Luxury class flatbed seats & regular Eksekutif class seats, air-conditioned.
Argo D = Argo Dwipangga, Eksekutif Luxury class flatbed seats & regular Eksekutif class seats, air-conditioned.
Argo S = Argo Semeru, Eksekutif Luxury Compartment Suites & regular Eksekutif seats.
Bima = Bima, Eksekutif class only, air-conditioned.
Taks = Taksaka, Eksekutif Luxury class & Eksekutif class, air-conditioned.
Bang = Bangunkarta, Eksekutif & Ekonomi class, air-conditioned.
Fajar = Fajar Utama, Eksekutif & Ekonomi class, air-conditioned.
Mata = Mataram, Eksekutif & Ekonomi class, air-conditioned.
Bogo = Bogowonto, Eksekutif & Ekonomi class, air-conditioned.
Senja = Senja Utama, Eksekutif & Ekonomi class, air-conditioned.
£1 = approx 20,100 rupiah; $1 = 15,500; €1 = 17,000. Prices vary by date & train, check fares as shown above.
Children under 3 travel free, no ticket required. Passengers 3 and over count as adults.
How to buy tickets: At the station, at Indomaret minimarkets or online at Tiket.com as shown here.
A journey on the Argo Dwipangga
Approaching Cirebon you'll see the vast shadow of Mt Cereme in the distance to the south, its summit usually hidden by cloud. It's an active volcano and the highest point in west Java. The nicest part of the journey from Jakarta to Yogya or Solo comes beyond Cirebon, where the train slows right down and snakes through gentle hills, past rice paddies nestling in narrow valleys amongst the jungle.
Watch the video
Yogyakarta to Solo
These two Javan cities are only an hour apart by train. Both are key stops on the tourist trail, Yogya is a must-see and Solo is well worth visiting. You can see Solo as a day trip from Yogyakarta by train if you like. There are two options for travel between Yogya & Solo:
-
Option 1, mainline express trains: These take less than an hour between the two cities, but must be reserved in advance, they are less frequent and cost significantly more than the KAI Commuter local trains. Station codes: Yogyakarta = YK, Solo (Solobalapan) = SLO.
-
Option 2, KAI Commuter local trains: This is the easiest option. Comfortable air-conditioned electric commuter trains link Yogyakarta & Solo every hour or two through the day, journey time 1h10.
The fare is only Rp 8,000, less than $1, but there are no simple one-trip tickets, you have to buy a rechargeable Kereta API kommuter card for Rp 30,000 and load it with value in multiples of Rp 10,000. So in practice your first ride costs Rp 40,000 and your second 10,000. Isn't smartcard technology wonderful? The same smartcard can be used for other KAI commuter trains, such as those around Jakarta.
These electric trains took over from the Prameks diesel trains in 2021 and operation was handed to KAI Commuter.
You can check times at the KAI Commuter website, commuterline.id/perjalanan-krl/jadwal-kereta (please let me know if that link stops working). It's in Indonesia, but easy enough to understand:
For Yogyakarta to Solo, select Yogyakarta as the starting station, enter a timeframe (00:00 to 23:00 if you like) and click Lihat. All departures shown in red go to Solo's main Solobalapan station, whether the final destination is shown as Solo or Palur.
For Solo to Yogyakarta, select Solo as the starting station, enter a timeframe and click Lihat. You want a departure shown as going to Yogyakarta, departures to Palur head in the opposite direction. Solobalapan is Solo's main station.
Tickets cannot be booked in advance, just buy at the station.
In Yogyakarta there's a dedicated KAI Kommuter ticket office just inside the entrance.
In Solo there's a KAI Kommuter ticket window at the top of the escalator from the entrance, see the photos below.
KAI Kommuter ticket office at Solo station, at the top of the escalators from the Kommuter entrance. Photos courtesy of Gary Stevens.
KAI Kommuter train at Yogyakarta. Photos courtesy of Gary Stevens & Peter Gremse.
Bandung - Yogyakarta - Solo - Surabaya
The station in Yogyakarta is Yogyakarta, station code YK. The station in Solo is Solobalapan, station code SLO.
Probolinggo is the usual railhead for visiting Mt Bromo. Surabaya Gubeng station code is SGU.
You can check train times & fares using en.tiket.com/kereta-api (in English) or booking.kai.id (in Indonesian).
There are no sleeping-cars, night trains just have reclining seats. There are additional express trains between Yogyakarta & Solo, not shown here.
Notes by train name:
Argo S = Argo Semeru, Eksekutif class only, air-conditioned.
Argo W = Argo Wilis, Eksekutif class only, air-conditioned.
Bima = Bima, Eksekutif class only, air-conditioned.
Tura = Turangga, Eksekutif class only, air-conditioned.
Ran = Ranggajati, Eksekutif & Bisnis class, air-conditioned.
Wij = Wijayakusuma, Eksekutif & Ekonomi class, air-conditioned.
Mala = Malabar, Eksekutif & Ekonomi classes, air-conditioned.
Mut = Mutiara Selatan, Eksekutif & Ekonomi class, air-conditioned.
Lod = Lodaya, Eksekutif & Bisnis class, air-conditioned.
Sanc = Sancaka, Eksekutif & Ekonomi class, air-conditioned.
Bandung to Surabaya is 696 km, 435 miles. Yogyakarta to Surabaya is 308 km, 193 miles.
£1 = approx 20,100 rupiah; $1 = 15,500; €1 = 17,000. Prices vary by date & train, check fares as shown above.
Children under 3 travel free, no ticket required. Passengers 3 and over count as adults.
How to buy tickets: At the station, at Indomaret minimarkets or online at Tiket.com as shown here.
Traveller William Bernstein reports: "The Argo Wilis is one of the world's great trains in terms of scenery, particularly the first 100 km east of Bandung; if Bali had a railroad, this is what the scenery would look like. Reserving in advance wasn't really necessary, service was about on a level with a local European second class train."
Traveller Edmund Carew travelled Surabaya-Bandung on the Argo Wilis: "The aircon trains were only 50 to 75 per cent full: it was incredibly easy to book, with no queues at Surabaya or Bandung. However, third class trains around Surabaya were packed as were local trains on the 'snappy' Bogor line from Jakartakota station. The Indonesian railways make a real effort to run on time. Mostly they seem to be no more than 15 minutes late, which is good although schedules between Surabaya and Bandung (hilly last bits) was only an average speed of 57 - 58 km/h."
Traveller William Bernstein reports: "The Yogyakarta -Surabaya train was squeaky clean, the service was exquisite and the scenery as gorgeous as from the Bandung-Surabaya train. The Indonesians have definitely upgraded their system, and particularly their day trains, from what we’ve seen, over the past 40 years."
A journey on the Ranggajati
Shaded = recommended trains.
Banyuwangi Baru station was renamed Ketapang in 2020, station code KTG.
You can check train times & fares using en.tiket.com/kereta-api (in English) or booking.kai.id (in Indonesian).
Notes by train name:
Rang = Ranggajati, Eksekutif & Bisnis class, runs to/from Solo & Yogyakarta.
Wij = Wijayakusuma, Eksekutif & Ekonomi class, all air-conditioned, recommended.
Muti = Mutiara Timur (Eastern Pearl), Eksekutif & Ekonomi class, all air-conditioned.
Blam = Blambangan Ekspres, Eksekutif & Ekonomi class, all air-conditioned.
Sri = Sri Tanjung, Ekonomi class only, air-conditioned.
Prob = Probowangi, Ekonomi class only, air-conditioned.
Fare: Surabaya to Ketapang costs around 290,000 rupiah in Eksekutif, 210,000 rupiah in Bisnis, 88,000 rupiah in Ekonomi.
£1 = approx 20,100 rupiah; $1 = 15,500; €1 = 17,000. Prices vary by date & train, check fares as shown above.
How to buy tickets: At the station, at Indomaret minimarkets or online at Tiket.com as shown here.
A journey to Ketapang
Java to Bali by train & ferry
It's easy, cheap and fun. Take a comfortable air-conditioned train from Surabaya to Ketapang (the station was called Banyuwangi Baru until 2020) at the eastern tip of Java. It's then a 350m 5-minute walk from the station to Ketapang ferry terminal, from where ferries sail every 15 minutes to Gilimanuk on Bali, crossing time just 45 minutes. Buses run from Gilimanuk to Bali's capital Denpasar, or you can take a taxi or get your hotel to arrange a transfer from Gilimanuk to anywhere on Bali. See the video guide here.
It's safe, comfortable, cheap and easy to arrange. The train needs a reservation, but you can buy the ferry ticket at the ferry terminal and just find a bus or taxi on arrival at Gilimanuk. With great scenery on the train ride through eastern Java, this is the best way to travel from cities on Java to anywhere on Bali.
Surabaya & Probolinggo ► Bali
-
Step 1, take a comfortable air-conditioned train from Surabaya or Probolinggo to Ketapang, see the timetable above.
There's a convenient daytime express with Eksekutif & Bisnis class called the Mutiara Timur (Eastern Pearl) leaving Surabaya Gubeng at 08:55 and arriving Ketapang at 15:45. There's superb scenery as the train curves around the rice fields and jungles of eastern Java.
You can also travel time-effectively overnight, leaving Surabaya Gubeng at 22:45 arriving Ketapang 04:55, or at leaving Surabaya Gubeng at 23:50 and arriving at Ketapang at 06:00. Both those trains have Eksekutif & Ekonomi class, but only in the form of reclining seats, not sleepers.
Buy tickets online at en.tiket.com/kereta-api following the advice here or buy at the station.
-
Step 2, take a ferry from Ketapang to Gilimanuk.
Ferries sail from Ketapang to Gilimanuk every 15 minutes, 24 hours a day. The crossing takes about 45 minutes.
Ketapang ferry terminal is only 350m from Ketapang railway station, a 5 minute walk, see walking map.
Walk out of Ketapang station and look for the main station approach road leading directly away from the station. It's across the forecourt in front of you, a little to the right. Walk 150m down this station approach road to the busy main road, turn right and walk another 150m, and Ketapang ferry terminal is on your left on the other side of the road.
The passenger entrance is marked Passengers. Walk down the narrow retail passage.
The fare is 10,600 rupiah for an adult foot passenger, less than $1.
Buying a ferry ticket used to be easy, but they've made it complicated!
Option 1, buy a ferry ticket on your phone at ferizy.com. This does not accept credit cards, you must pay with cash or card at a supermarket within an hour after booking the ticket, for example the Alfamarket across the road from the ferry terminal. You must then print you boarding pass at the kiosks in the ferry terminal. Then use these to go through the turnstiles to the ferry. Feedback appreciated.
Option 2, ask a local to buy a ticket for you for a fee, perhaps hand them 15,000 rupiah.
The ferry operator website is www.indonesiaferry.co.id, in Indonesian only. You usually board the ferry via the vehicle ramp onto the semi-open car deck, you climb stairs to the passenger deck above where you'll find shaded seats, toilets, and a kiosk selling drinks and snacks. If you can't get your bags up the stairs, leave them on the car deck against the side.
If you arrive at Ketapang by train at 12:30 you can easily be on a ferry leaving at 13:15 arriving at Gilimanuk on Bali at 15:00 Bali time - remember that Bali is one hour ahead of Java.
If you arrive at Ketapang by train at 20:05 you can be on a ferry leaving at 21:00 and arriving in Gilimanuk on Bali at 22:45 Bali time.
-
Step 3, take a bus from Gilimanuk to Denpasar or use a taxi.
Gilimanuk Bus Terminal is right outside the ferry terminal, just walk out of the ferry terminal exit onto the road and turn right.
Local buses link the ferry terminal at Gilimanuk with Denpasar's Mengwi bus terminal, distance 125 km or 78 miles, journey time 3 hours, fare around 60,000 rupiah (£4 or $5). You'll need to change at Denpasar Mengwi bus terminal for local buses to places like Ubud, Bali's cultural and tourist capital - there are no direct buses from Gilimanuk. Long-distances buses were moved from the former Ubung bus station to the new Mengwi bus terminal in 2017. Feedback appreciated.
Alternatively you can take a taxi direct to your destination on Bali, which will be a lot quicker but more expensive. You're looking at 750,000 rupiah ($57) for a private taxi from Gilimanuk to Ubud, for example. Or your hotel on Bali may also be able to arrange a transfer from Gilimanuk. Feedback appreciated.
Bali ► Probolinggo & Surabaya
-
Step 1, travel to Gilimanuk on the western tip of Bali by bus, taxi or private transfer.
Regular local buses link Denpasar's Mengwi bus terminal with Gilimanuk bus terminal, 125 km, journey time about 3½ hours, fare around Rp 60,000 (£4 or $5). Long-distances buses were moved from the former Ubung bus station to the new Mengwi bus terminal in 2017. In Gilimanuk the bus terminal is right next to the ferry terminal. Starting in somewhere like Ubud, you'll need to take a local bus to Denpasar first.
A taxi direct from Ubud to Gilimanuk will take about 3½ hours and cost around Rp 750,000 ($57), not too bad if there are two or three of you to share the cost. Your hotel may be able to arrange a private transfer.
-
Step 2, take a ferry from Gilimanuk on Bali to Ketapang on Java, ferries sail every 15 minutes 24/7, crossing time 45 minutes.
The fare is 10,600 rupiah for an adult foot passenger, less than $1.
Buying a ferry ticket used to be easy, but they've made it complicated!
Option 1, buy a ferry ticket on your phone at ferizy.com. This does not accept credit cards, you must pay with cash or card at a supermarket within an hour after booking the ticket. You then print you boarding pass at the kiosks in the ferry terminal. Feedback always appreciated.
Option 2, ask a local to buy a ticket for you for a fee, perhaps hand them 15,000 rupiah.
You then use the boarding pass to go through one of the two turnstiles, sliding your luggage underneath. Walk up the stairs and over the walkway to the next available ferry. Staff will tell you which that is.
You usually board the ferry via the vehicle ramp onto the semi-open car deck, you climb stairs to the passenger deck above where you'll find shaded seats, toilets, and a kiosk selling drinks and snacks. If you can't get your bags up the stairs, leave them on the car deck against the side.
On arrival at Ketapang, walk off the ferry and out of the ferry terminal following the exit signs. Turn right onto the main road and walk 150m. Turn left and walk another 150m up the station approach road to Ketapang station (formerly known as Banyuwangi Baru), there's a blue and white sign to the station at the road junction. See walking map.
Remember that Java time is 1 hour behind Bali time.
-
Step 3, take a train from Ketapang to Probolinggo or Surabaya Gubeng, see the train timetable above.
Depending where you're starting on Bali, if you left early enough you might make the 11:00 Wijayakusuma to Probolinggo & Surabaya, arriving late afternoon. Otherwise there's the mid-afternoon Ekonomi class Probowangi arriving in Surabaya in the evening, see the timetable above.
Alternatively, you might prefer to travel from your starting point on Bali to Gilimanuk and across on the ferry to Ketapang on day 1 at your leisure, stay overnight in Ketapang then take a train to Surabaya next morning. You'll find more places to stay in Ketapang than in Gilimanuk, although the choice is still limited. For something reasonably nice try the Ketapang Indah Hotel, 1.7 miles south of the ferry terminal, with rooms set in gardens, a good swimming pool, free WiFi, bar & restaurant.
There's also a night train leaving Ketapang at 19:30 but it arrives at Surabaya Gubeng at silly o'clock. But it's an option, if you've a hotel room waiting!
Book the train online at en.tiket.com/kereta-api following the advice here, buy at the station in Ketapang, or buy at an Indomaret convenience store including many on Bali.
In Denpasar, the Indonesian railway website lists the Rama Duta Bali agency as selling train tickets, at Jl.Diponogoro Pertokoan Gontong Biru, No.150 Blok B No.04, Denpasar, Bali.
Java to Bali in pictures
Watch the video
Java to Sumatra by train & ferry
It's easy to travel between Java and Sumatra by train & ferry, it's incredibly cheap, safe, a real experience, and no prior reservation or planning is necessary.
You take a train the 151 km from Jakarta to the port of Merak from where ferries sail to Bakauheni on the southern tip of Sumatra every 20 minutes around the clock taking between 90 & 120 minutes. A local bus or taxi will then take you the 94 km from Bakauheni to the main southern Sumatra town of Bandar Lampung in about 90 minutes. Once in Bandar Lampung, there's a twice-daily train to Palembang. Here are the details, feedback would be appreciated.
Jakarta ► Bandar Lampung (Sumatra)
-
Step 1, travel from Jakarta's Tanah Abeng station to Rangkasbitung by air-conditioned electric suburban train.
These run every hour through the day, increasing to half-hourly at busy times. The fare is Rp 8,000, less than $1. No prior reservation is necessary, just turn up, buy a ticket to Rangkasbitung (they can't sell tickets to Merak) and hop on the next train.
You can check times at the KAI Commuter website commuterline.id/perjalanan-krl/jadwal-kereta (please let me know if that stops working).
-
Step 2, travel from Rangkasbitung to Merak by air-conditioned local train, these run every few hours, Ekonomi class only.
The fare is Rp 3,000, again no prior reservation is necessary, buy a ticket at Rangkasbitung station and hop on the next train.
You can check train times using Google, just search for 'Rangkasbitung to Merak' and select public transport. You can also check them using the KAI Access app.
-
Step 3, take a ferry from Merak to Bakauheni on Sumatra.
In Merak, the ferry terminal is only 100m from the station, see walking map.
Ferries sail every 15-20 minutes around the clock, the crossing takes around 2 hours. The foot passenger fare is around 14,000 Rupiah, around $1, see www.indonesiaferry.co.id. Just turn up & buy a ticket at the port, no reservation necessary.
-
Step 4, take a bus from Bakauheni ferry terminal to Bandar Lampung.
The 94 km (59 mile) journey takes 90 minutes by bus or taxi and there's always lots of local transport available: A bus from Bakauheni to Bandar Lampung's Rajabasa bus station costs around Rp 20,000, roughly $2. An angkot shared taxi will cost around Rp 35,000 ($3), ask the driver to drop you off at your hotel.
-
Here's a summary timetable:
Bandar Lampung (Sumatra) ► Jakarta
-
Step 1, take a bus from Bandar Lampung to Bakauheni ferry terminal.
The 94 km (59 mile) journey takes 90 minutes by bus or taxi and there's always lots of local transport available. A bus from Bandar Lampung's Rajabasa bus station to Bakauheni costs around Rp 20,000, roughly $2. An angkot shared taxi will cost around Rp 35,000 ($3).
-
Step 2, take a ferry from to Bakauheni on Sumatra to Merak on Java.
Ferries sail every 20 minutes, 24 hours a day, the crossing takes between 1h30 & 2 hours. The foot passenger fare is around 12,000 Rupiah, less than $2, see www.indonesiaferry.co.id. Just turn up & buy a ticket at the port, no reservation necessary.
In Merak, walk 100m from the ferry terminal to the station, see walking map.
-
Step 3, travel from Merak to Rangkasbitung by air-conditioned local train, these run every few hours, Ekonomi class only.
You can check train times using Google, just search for 'Merak to Rangkasbitung' and select public transport. You can also check times using the KAI Access app.
The fare is Rp 3,000, again no prior reservation is necessary, buy a ticket at the station and hop on the next train, no reservation needed.
-
Step 4, travel from Rangkasbitung to Jakarta's Tanah Abeng station by air-conditioned electric suburban train.
These run every hour through the day, increasing to half-hourly at busy times. The fare is Rp 8,000, less than $1. No prior reservation is necessary, just turn up, buy a ticket and hop on the next train.
You can check times at the KAI Commuter website commuterline.id/perjalanan-krl/jadwal-kereta (please let me know if that stops working).
-
Here is a Sumatra to Jakarta summary timetable:
The journey in pictures
The ferry from Java to Sumatra, at Merak. Courtesy of www.discoverbyrail.com.
If you take this route and get photos of the ferry, ferry journey or bus to Bandar Lampung, please email me!
Train & bus travel on Sumatra
There are a handful of train services in Sumatra, but no system covering the whole island. See map of Sumatra. There's a daily train to Palembang from Bandar Lampung, although just to confuse you the station at Bandar Lampung is known as Tanjungkarang, its former name, even though it's been known as Bandar Lampung since 1983 - and Palembang station is usually referred to as Kertapati. See the timetable below. You can travel by bus from Palembang to Padang. It's 900km, one bus daily, probably overnight, but no information is available on the bus times.
Trains S11 S12 = comfortable Ekonomi class seats, air-conditioned.
Borneo, Sulawesi & Papua
Ferries between Java and Borneo
Ferries run by www.pelni.co.id link Tanjong Priok (near Jakarta) with Pontianak on Borneo, also Semarang (Java) with Ketapang, Kumai & Sampit (Borneo), and Surabaya (Java) with Sampit, Kumai or Batulicin (Borneo), with each route operating on a handful of dates each month, see www.pelni.co.id. Here is a Pelni ferry route map, dating from 2006 but still useful today: upload.wikimedia.org/wikipedia/ commons/a/a6/Pelni_Schifffahrtsnetz_2006.png.
Ferries between Java and Sulawesi, Java & Papua
Ferries run by www.pelni.co.id link various ports on Java with various ports on Sulawesi and Papua, see www.pelni.co.id. This Pelni ferry route map dates from 2006 but is still useful today: upload.wikimedia.org/wikipedia/ commons/a/a6/Pelni_Schifffahrtsnetz_2006.png.
Singapore to Jakarta by ferry
You can travel between Singapore and Jakarta by PELNI ferry, with a change of ferry at Pulau Batam, an Indonesian island just off Singapore. The service operates once a week. This Penli ferry route map may be useful, even if outdated! It's also possible to by-pass Singapore and travel by direct ferry between Pulau Batam and Johor Bahru in Malaysia, from where trains run to Kuala Lumpur.
Singapore ► Jakarta
-
Step 1, take a local ferry from Singapore to Pulau Batam, an Indonesian island just off Singapore.
Ferries shuttle regularly from Singapore Harbour Front terminal to Pulau Batam, journey time is around 45 minutes, fare S$29 (£15 or $23) one-way.
There are several operators on this route, see www.sindoferry.com.sg or www.batamfast.com. You can also arrange tickets through ferry agency www.wowgetaways.com/ferry.html.
There is also a regular hourly ferry from Johor Bahru in Malaysia to Pula Batam running 07:30-18:30, journey time 90 minutes, fare 69 Ringgit one-way, see www.batam-island-info.com/stulang-laut-ferry-terminal.
Once on Batam, transfer from the Sekupang ferry terminal to Batu Ampar ferry terminal by taxi or cheap but infrequent trans-Batam bus.
-
Step 2, sail from Pulau Batam to Jakarta on Java by weekly Pelni ferry.
The ferry m/v Kelud usually sails from Pulau Batam's Batu Ampar ferry terminal on Wednesdays at 15:00, arriving Tanjung Priok (Jakarta) at 15:30 next day.
The schedule can vary. Tanjung Priok is a ferry port 13 km north of central Jakarta. You should be at the port at least 2h before the scheduled ferry departure.
Fares start at USD 24 in ekonomi, USD 41 in klas 2B and rise to USD 76 in klas 1A. Ekonomi class = deck space. Klas 2B = berth in 8-bed youth hostel-style cabins. Klas 1B = berths in 4-berth cabins. Klas 1A = berths in 2-berth cabins with shower & toilet. Feedback appreciated.
The ferry company is Pelni, short for PT Pelayaran Nasional Indonesia, a state-owned ferry company.
You can check times for this ferry (but not book, if you're non-Indonesian) at www.easybook.com. Select Ferry ticket then book from Pelabuhan Batu Ampar to Jakarta. Make sure you are looking on the right day of the week. You can also check dates at www.pelni.co.id.
Foreigners can only book Pelni tickets in person at a Pelni office or at nearby local travel agencies with perhaps 15% commission on top, or if all else fails, at the port, and only within 3 days of sailing date. However, there is usually plenty of space.
There are plenty of buses between Tanjung Priok and central Jakarta, these buses run 24h/7.
Jakarta ► Singapore
-
Step 1, sail from Jakarta to Pulau Batam by weekly Pelni ferry.
The ferry m/v Kelud usually sails from Tanjung Priok (the ferry port 13 km north of Jakarta) on Thursday or Friday nights at 23:59, arriving Pulau Batam Batu Ampar ferry terminal at 05:30 on Saturday or Sunday, though the schedule can vary. You should be at the port at least 2h before the scheduled ferry departure.
Fares start at USD 24 in ekonomi, USD 41 in klas 2B and rise to USD 76 in klas 1A. Ekonomi class = deck space in shared rooms. Klas 2B = berth in 8-bed youth hostel-style cabins. Klas 1A = berths in more private cabins. Feedback appreciated.
The ferry company is Pelni, short for PT Pelayaran Nasional Indonesia, a state-owned ferry company.
You can check times for this ferry (but not book, unless you're Indonesian) at www.easybook.com. Select Ferry ticket then book from Jakarta to Pelabuhan Batu Ampar. Make sure you are looking on the right day of the week. You can also check dates at www.pelni.co.id.
Foreigners can only book Pelni tickets in person at the Pelni office at Jakarta Tanjung Priok port, and only within 3 days of sailing date. However, there is usually plenty of space. You'll need to take a taxi the 13km out of central Jakarta to buy the tickets a day or two before sailing day.
Once on Batam, transfer from the Batu Ampar ferry terminal to the Sekupang ferry terminal by taxi or cheap but infrequent trans-Batam bus.
-
Step 2, sail from Batam to Singapore.
Once on Pula Batam, ferries shuttle to Singapore Harbour Front regularly, journey time around 45 minutes, fare S$29 (£15 or $23) one-way. There are several operators on this route, see www.sindoferry.com.sg or www.batamfast.com. You can also arrange tickets through www.wowgetaways.com/ferry.html.
There is also a regular hourly ferry from Pulau Batam to Johor Bahru in Malaysia running 07:30-18:30, journey time 90 minutes, fare 69 Ringgit one-way, see www.batam-island-info.com/stulang-laut-ferry-terminal.
Ferry fares & accommodation
-
The fare from Pulau Batam to Tanjung Priok (Jakarta) or vice versa is:
999,000 Rupiah (£76 or $118) with a bed in a 1st class cabin with 2 beds and en suite shower & toilet, the fare includes 3 meals a day in the buffet restaurant. For sole occupancy you must pay for two tickets to get both beds. Soap, towels & toilet paper may not be provided, so take your own.
556,000 rupiah (£43 or $66) with a bed in a shared 2nd class cabin with 4 or 6 beds, also including 3 meals a day in the buffet restaurant
There are also 3rd class dormitories, meals not included.
-
The 14,716-ton m/v Kelud was built in 1998 and has a restaurant, and cafeteria. You'll also find other ferries from Batam to Belawan on Sumatra, and frequent ferries to Bintan (another Indonesian island not far from Singapore) from where there are yet more ferries to Java. Watch the video, a voyage to Java on the MV Kelud.
How to buy ferry tickets
-
Option 1: Foreigners can book Pelni tickets in person at a Pelni office within 3 days of sailing date (not before!). But there is usually plenty of space.
In Jakarta, go to the Pelni office at the Tanjung Priok port. There is no easy public transport from central Jakarta to the port, so take a taxi the 13km out of town a day or two before sailing day. In Batam, book in person at the Pelni office within 3 days of sailing date to book passage.
In Singapore, try contacting the Pelni office in Singapore at 52 Teluk Blangah Road #02-03 City Port Cebtere Singapore 0988229, 001. 65-62726811.
-
Option 2: You can try booking on the Pelni app on your phone. The problem here is that the app doesn't accept credit cards so you can't pay. However, after booking on the app it's reported that you can go to an Indomaret supermarket (main branches only) to make payment as they have some sort of arrangement with Pelni, similar to the arrangement they have with Indonesian railways. Feedback appreciated.
-
Option 3: You can book the Batam-Jakarta ferry in either direction by emailing Andy on tickets@discoverbyrail.com, the same rail expert that runs www.discoverbyrail.com. He can arrange ferry bookings via his contact in Indonesia. Only 1st class cabins are booked, with 2 beds, shower & toilet.
Travellers' reports
-
Travellers Stephen Choi and Chloe Rayfield have written an excellent blog with photos about the ferry journey, read their blog here.
-
Traveller Christoph Kessler reports (2016): "The ferry between Batam island (for Singapore) and Tanjung Priok (for Jakarta) currently leaves every Wednesday at 13:00, arriving at 18:00 next day. There are considerable changes during holiday periods like Eid Al Fitr. On our trip (Oct 19 2016) they hit both the departure and the arrival time with unbelievable precision - the difference could be measured in seconds rather than minutes. The Pelni office in Singapore is unable to issue tickets even if these have already been paid for. The correct place here is the Pelni office in Sekupang (Jl Dr Cipto Mangunkusumo 4, Sekupang, Tel. +62 778 321070), a 10 minute walk from the Sekupang ferry terminal. Pelni allows Internet bookings from about 3 weeks before sailing. However this does not help incoming tourists because the only payment method is at an ATM of bank BNI, to be completed within 24 hours of booking (aaarrghhh!!!). I had an Indonesian travel agent do this for me, and they sent me a jpg of the payment slip. This was sufficient to then retrieve the ticket at the Sekupang Pelni office. Looking back the whole exercise was not really necessary - there were plenty of vacant 1A class cabins on that day."
-
Traveller Antti Kukka reports "Travelling on Pelni ferries can be an enjoyable experience even in the cheapest class - but it's best to avoid the Idul Fitr (Lebaran) holiday at the end of Ramadan, when A massive surge of people travel to their ancestral home (trip known as mudik) and all of the ferries are going to be absolutely full of people, sleeping on deck, in lifeboats, in hallways."
-
Feedback is always appreciated!
Penang (Malaysia) to Medan (Sumatra, Indonesia)
-
Although the Langkawi-ferry website still shows this service, they in fact no longer operate a ferry on this route.
Europe to Indonesia by Trans-Siberian Railway
-
You can reach Indonesia overland from Europe using the trans-Siberian Railway - or could until Covid and the war in Ukraine intervened, it's currently not practicable.
-
You take a train from London, Paris or Amsterdam to Moscow, then a Trans-Siberian train from Moscow to Beijing, the twice-weekly train from Beijing to Hanoi in Vietnam, train to Saigon, bus through Cambodia to Bangkok, and trains south to Singapore for the ferries to Java.
-
To piece together such a journey, start with the Trans-Siberian page. Then see the Russia page for London-Moscow, and the Vietnam page for Beijing-Hanoi and Hanoi-Saigon. The Cambodia page covers Saigon to Phnom Penh and on to Bangkok. The Thailand page covers Bangkok to Singapore.
-
There are no ferries between Indonesia and Australia.
Recommended hotels
Java has some classic hotels, below I recommend some of the best places to stay in each city.
Jakarta: The Hermitage
Strangely, all the tourist sights in Jakarta (for example, Old Batavia) are north of Merdeka Square, when almost all the decent tourist class hotels are to the south, with nothing you'd want to see within walking distance. I recommend the wonderful Hermitage in the popular Menteng district just south of Gambir station. It's a fabulous hotel which only opened in 2016, with great staff, great food, free WiFi, free gym, a cigar lounge and an excellent rooftop pool & bar. The front building has been converted from a lovely Dutch colonial PTT (Post, Telephone & Telegraph) office built in 1943 with a new 9-floor building behind it containing the rooms and rooftop pool. The art deco design has been carried through the hotel with acres of white marble, this place is utter luxury but as this it's Indonesia a stay here is more affordable that you'd think.
You could also consider the Mercure Jakarta Batavia, opened in 2019 and now one of the few decent tourist hotels in the old town. It's just 6 minutes walk from Batavia's old town square and gets good reviews. Not as cosy or as historic a building as the lovely Hermitage, but with an old-town location.
Yogyakarta: The Phoenix Hotel
The venerable Phoenix Hotel is the place to stay in Yogyakarta. A landmark since 1918, the main building was originally the home of a wealthy merchant which became the residence of the Chinese consul after World War 2 before being converted into a hotel. The hotel has bags of quirky character, friendly staff and is excellently located, 15 minutes walk or 5 minutes by taxi from Yogyakarta station. There's free WiFi and an excellent swimming pool - it's worth paying a little extra for the pool-view rooms which have balconies overlooking the pool.
Surabaya: The Majapahit Hotel
In Surabaya, the place to stay is the historic Majapahit Hotel. Don't argue, trust me on this. I'll give you three reasons.
First, it's easily the best place in town, a true oasis amongst the tower blocks with elegant suites opening onto colonnades surrounding gardens with fountains. They simply don't make hotels like this any more. Great staff, two great restaurants, free WiFi, spa, and a good swimming pool.
Second, this old-world charm is no accident, this is no ordinary hotel. It's a genuine Sarkies Brothers hotel like Raffles in Singapore, the E&O in Penang and the Strand in Rangoon, opened in 1911 as the Hotel Oranje by Lucas Martin Sarkies, son of Martin Sarkies, co-founder of Raffles. But Raffles costs upwards of £400 a night, a similar suite at the Majapahit can be yours for £80. Like I said, don't argue, even if you're on a budget, splurge here.
And there's a third reason. There is major Indonesian history here - the Flag Incident of September 1945 is a key event in the history of Indonesian independence and it occurred right here at the Hotel Majapahit (at that period called the Hotel Yamato) in Room 33 and on the left-hand lobby flag tower, see en.wikipedia.org/wiki/Battle_of_Surabaya. I couldn't resist staying in a bit of history - on our way back through Surabaya I contacted the hotel and upgraded our room to the Merdeka Suite, the famous Room 33. Though I still don't know if Dutchman W.V.Ch.Ploegman met his end inside or outside that room. The Sarkies Suite next door (room 32) is the room that was reserved for the Sarkies family when they stayed.
Hotels in Ketapang, Gilimanuk
If you want to stop overnight on a journey between Java and Bali, you'll find more hotels in Ketapang on the Javan side of the Strait of Bali than a Gilimanuk on the Bali side, though the choice still isn't great. For somewhere half decent with free WiFi, a good swimming pool and (albeit somewhat characterless) rooms set in gardens, try the Ketapang Indah Hotel about 2km south of Ketapang ferry terminal, just off the main road.
Hotels on Bali: Bloo Lagoon Eco Village
There are many resort towns on Bali, some better for surfing, some for diving. Padangbai is on the southeast coast of Bali, family-friendly, good for diving, day trips to Ubud, fast ferries to the Gili islands and conventional ferries to Lombok. If that suits you, the place to stay is the Bloo Lagoon Eco Village on the headland just above the town with views over the bay. The village consist of self-contained bungalows with small kitchens, there's free WiFi, a good pool with water slide, a spa, and an excellent restaurant serving truly wonderful home-cooked food. Staff are great. The Bloo Lagoon Village was opened in 2009 by English architect Tony Gwilliam who has written a book about it, Far from boring.
Flights to Jakarta
Overland travel by train & bus around Indonesia is an essential part of the experience, so once there, don't cheat and fly, stay on the ground! But a long-haul flight might be unavoidable to reach it in the first place. For flights to Jakarta, compare airlines at Skyscanner.
Travel insurance & other tips
Always take out travel insurance
Never travel overseas without travel insurance from a reliable insurer, with at least £1m or preferably £5m medical cover. It should also cover cancellation and loss of cash and belongings, up to a sensible limit. An annual multi-trip policy is usually cheaper than several single-trip policies even for just 2 or 3 trips a year, I have an annual policy with Staysure.co.uk myself. Here are some suggested insurers. Seat61 gets a small commission if you buy through these links.
www.staysure.co.uk offers enhanced Covid-19 protection & gets 4.7 out of 5 on Trustpilot.
www.columbusdirect.com is also a well-know brand.
If you live in the USA try Travel Guard USA.
Get an eSIM with mobile data package
Don't rely on WiFi, download an eSIM with a mobile data package for the country you're visiting and stay connected. Most newer mobile phones can download a virtual SIM card so you don't need to buy a physical SIM, including iPhone 11 & later, see device compatibility list. Maya.net is a reliable eSIM data retailer with a 4.5 out of 5 Trustpilot rating and a range of packages including unlimited data.
Get a Curve card for foreign travel
Most banks give you a poor exchange rate, then add a foreign transaction fee on top. A Curve MasterCard means no foreign transaction fees and gives you the mid-market exchange rate, at least up to a certain limit, £500 per month at time of writing. The money you spend on your Curve card goes straight onto one of your existing debit or credit cards.
How it works: 1. Download the Curve app for iPhone or Android. 2. Enter your details & they'll send you a Curve MasterCard - they send to the UK and most European addresses. 3. Link your existing credit & debit cards to the app, you can link up to two cards with the free version of Curve, I link my normal debit card and my normal credit card. 4. Now use the Curve MasterCard to buy things online or in person or take cash from ATMs, exactly like a normal MasterCard. Curve does the currency conversion and puts the balance in your own currency onto whichever debit or credit card is currently selected in the Curve app. You can even change your mind about which card it goes onto, within 14 days of the transaction.
I have a Curve Blue card myself, it means I can buy a coffee on a foreign station on a card without being stung by fees and lousy exchange rates, just by tapping the Curve card on their card reader. The money goes through Curve to my normal debit card and is taken directly from my account (in fact I have the Curve card set up as payment card on Apple Pay on my iPhone, so can double-click my phone, let it do Face ID then tap the reader with the phone - even easier than digging a card out). I get a little commission if you sign up to Curve, but I recommend it here because I think it's great. See details, download the app and get a Curve card, they'll give you £5 cashback through that link.
Get a VPN for safe browsing. Why you need a VPN
When you're travelling you often use free WiFi in public places which may not be secure. A VPN encrypts your connection so it's always secure, even on unsecured WiFi. It also means you can select the geographic location of the IP address you browse with, to get around geoblocking which a surprising number of websites apply. See VPNs & why you need one explained. ExpressVPN is a best buy with a 4.7 out of 5 Trustpilot ranking which I use myself - I've signed up as an ExpressVPN affiliate, and if you go with expressvpn.com using the links on this page, you should see a special deal, 3 months free with an annual subscription. I get a small commission to help support this site.
Carry an Anker powerbank
Tickets, reservations, vaccination records and Interrail or Eurail passes are often held digitally on your mobile phone, so it's vital to keep it charged. I always carry an Anker powerbank which can recharge my phone several times over if I can't get to a power outlet. Buy from Amazon.co.uk or from buy from Amazon.com.