Rome2Rio

How to get fromBatam to Batu Cavesby plane, train, ferry, bus, or subway

Find Transport to Batu Caves

See all options

There are 8 ways to get from Batam to Batu Caves by plane, train, ferry, bus, or subway

Select an option below to see step-by-step directions and to compare ticket prices and travel times in Rome2Rio's travel planner.

  1. Fly Hang Nadim International Airport to Kuala Lumpur International Airport, train

    best
    1. Fly from Hang Nadim International Airport (BTH) to Kuala Lumpur International Airport (KUL)plane plane BTH - KUL
    2. Take the train from Klia T2 to KL Sentraltrain train
    4h 25m
    RM 259–526
  2. Ferry, train

    cheapest
    1. Take the ferry from Batam Centre to Berjaya Waterfront Ferry Terminal Johor Bahruferry ferry
    2. Take the train from Jb Sentral to Kl Sentraltrain train Ets
    8h 19m
    RM 114–168
  3. Ferry, bus via Kl117 Bsn Lebuh Ampang

    1. Take the ferry from Batam Harbour Bay Ferry Terminal to HarbourFrontferry ferry
    2. Take the bus from Golden Mile Complex to Berjaya Times Squarebus bus Golden Mile Complex
    8h 20m
    RM 170–278
  4. Ferry to Senai International Airport, fly to Sultan Abdul Aziz Shah, train

    1. Take the ferry from Batam Centre to Berjaya Waterfront Ferry Terminal Johor Bahruferry ferry
    2. Fly from Senai International Airport (JHB) to Sultan Abdul Aziz Shah (SZB)plane plane JHB - SZB
    3. Take the train from Kuala Lumpur to Batu Cavestrain train
    7h 45m
    RM 264–375
  5. Ferry to Senai International Airport, fly to Kuala Lumpur International Airport, train

    1. Take the ferry from Batam Centre to Berjaya Waterfront Ferry Terminal Johor Bahruferry ferry
    2. Fly from Senai International Airport (JHB) to Kuala Lumpur International Airport (KUL)plane plane JHB - KUL
    3. Take the train from Klia T2 to KL Sentraltrain train
    8h 9m
    RM 215–463
  6. Ferry, subway to Seletar Airport, fly to Sultan Abdul Aziz Shah, train

    1. Take the ferry from Batam Harbour Bay Ferry Terminal to HarbourFrontferry ferry
    2. Take the subway from Harbourfront to Punggolsubway subway
    3. Fly from Seletar Airport (XSP) to Sultan Abdul Aziz Shah (SZB)plane plane XSP - SZB
    4. Take the train from Kuala Lumpur to Batu Cavestrain train
    7h 57m
    RM 498–1,066
  7. Ferry to Singapore Changi Airport, fly to Sultan Abdul Aziz Shah, train

    1. Take the ferry from Batam Centre to Tanah Merahferry ferry
    2. Fly from Singapore Changi Airport (SIN) to Sultan Abdul Aziz Shah (SZB)plane plane SIN - SZB
    3. Take the train from Kuala Lumpur to Batu Cavestrain train
    7h 25m
    RM 448–1,022
  8. Ferry, bus

    1. Take the ferry from Batam Harbour Bay Ferry Terminal to HarbourFrontferry ferry
    2. Take the bus from Golden Mile Tower Singapore to Terminal Bersepadu Selatanbus bus
    8h 54m
    RM 179–277

Batam to Batu Caves by ferry, foot, bus, and train

Calendar98Weekly Services
Duration8h 19mAverage Duration
TicketRM 114Cheapest Price
See schedules

Questions & Answers

What companies run services between Batam, Indonesia and Batu Caves, Malaysia?

There is no direct connection from Batam to Batu Caves. However, you can take the taxi to Hang Nadim International Airport (BTH) airport, fly to Kuala Lumpur International Airport (KUL), walk to Klia 1 2, take the bus to Klia2, walk to Klia T2, take the train to KL Sentral, then take the train to Batu Caves. Alternatively, you can take a ferry from Batam Centre to Batu Caves via Berjaya Waterfront Ferry Terminal Johor Bahru, Flat Sri Stulang, JB Sentral, Jb Sentral, Kl Sentral, and KL Sentral in around 8h 19m.

Airlines
Train operators
Bus operators
Ferry operators

Want to know more about travelling around the world?

Rome2Rio's Travel Guide series provide vital information for the global traveller. Read our range of informative guides on popular transport routes and companies - including How to get from JFK to New York City, Need to know: Eurostar, and Travelling to and around Russia for the 2018 FIFA World Cup - to help you get the most out of your next trip.