How to Get from Batam to Johor Bahru
Contents
The short stretch of water separating the Riau Archipelago from the tip of the Malay Peninsula represents one of the most interesting transitions in Southeast Asia. Moving from the bustling, industrial energy of Batam to the modern sprawl of Johor Bahru (JB) is more than just a border crossing; it is a shift between two distinct cultures and economies. While many travelers focus on the Singapore link, heading straight to Johor Bahru is a direct gateway to Malaysia without transiting through a third country.
Whether you are heading across the border for a weekend of shopping at Johor's famous outlets, visiting Legoland Malaysia, or continuing your journey north toward Kuala Lumpur, the route is well-serviced and efficient. The journey across the Singapore Strait is a routine trip for locals and expats alike, making the logistics straightforward once you understand the terminal systems and immigration procedures. You can easily secure your spot by booking tickets on GoAsia.cc to ensure a seamless transition from Indonesia to Malaysia.
Batam to Johor Bahru by Ferry
The ferry is the way to make this trip: you cross the maritime border in a couple of hours. Three routes serve Johor Bahru. Dolphin sails from Batam Center to Stulang Laut at 07:30, 10:30, 13:45 and 17:00 Indonesian time.[1] Services also run from Harbour Bay to Stulang Laut,[2] and Ferry Global Group sails from Harbour Bay to Puteri Harbour.[3]

Fares and Crossing Times
An adult one-way ticket from Batam Center or Harbour Bay to Stulang Laut costs RM100, plus a surcharge of RM35.[2] The crossing from Harbour Bay to Puteri Harbour takes 1 hour 30 minutes to 2 hours.[3]
On a clear day you get a great view of the passing tankers and the distant Singapore skyline. Remember that you are crossing an international border. You clear Indonesian immigration at the Batam terminal before boarding and Malaysian immigration on arrival in Johor Bahru, so have your passport ready and check the visa requirements for Malaysia in advance. Batam is one hour behind Johor Bahru, so set your watch forward when you arrive.[2]
Comparing Your Options
| Mode | Price | Duration | Comfort |
|---|---|---|---|
| Ferry | From RM135 (RM100 + RM35 surcharge)[2] | 1h 30min - 2h (Harbour Bay to Puteri Harbour)[3] | Moderate |
Tips for Traveling from Batam to Johor Bahru
- Arrive Early: International immigration queues can be unpredictable, especially on weekends or public holidays, so arrive at the terminal well before departure.
- Check Your Terminal: Ferries to Johor leave from Batam Center (Stulang Laut) and Harbour Bay (Puteri Harbour, Stulang Laut, Pasir Gudang). Double-check your ticket to ensure you go to the right one, as they are in different parts of the island.
- Currency: Have a small amount of Indonesian Rupiah (IDR) for terminal costs and Malaysian Ringgit (MYR) for transport once you land in Johor.
Timetable
| Flight Batam - Johor Bahru $ 63.85–90.29 2h 59m – 1days 5h 28m | |
|
|
| Bus Batam - Johor Bahru $ 25.12 2h 12m | |
|
|
| Ferry Batam - Johor Bahru $ 22.84–25.23 1h – 2h 12m | |
|
Frequently Asked Questions
Use the booking tool on this page to compare the transport options currently available from Batam to Johor Bahru, including current prices and schedules.
The ferry is the practical way to travel. An adult one-way ticket from Batam Center or Harbour Bay to Stulang Laut costs RM100, plus a RM35 surcharge.
The ferry from Harbour Bay to Puteri Harbour takes 1 hour 30 minutes to 2 hours, which makes it the quickest way to cross the border.
By ferry from Harbour Bay to Puteri Harbour the crossing takes 1 hour 30 minutes to 2 hours. Add time for immigration at both ends.
This depends on your nationality. Since you are crossing from Indonesia to Malaysia, you must pass through Malaysian immigration. Many nationalities receive a visa-free entry for tourism, but you should check the latest Malaysian visa requirements before your trip.
Sailings can change because of the weather, so check your departure on the day. If you are prone to motion sickness, take a seat in the middle of the ferry and look at the horizon.
Ferries from Batam arrive at Stulang Laut, Puteri Harbour or Pasir Gudang. Stulang Laut is close to the Johor Bahru city center and the causeway to Singapore, which makes it the most convenient choice for most travelers.
Sources and background
Numbers in the text such as [1] refer to these sources.
- [1] Dolphin Fast Ferry: Dolphin Fast Ferry sailing schedule. Retrieved October 23, 2026.
- [2] Berjaya Waterfront Ferry Terminal (Stulang Laut): Schedule and fares, Berjaya Waterfront Ferry Terminal. Retrieved October 23, 2026.
- [3] Ferry Global Group: Ferry schedule: Harbour Bay to Puteri Harbour. Retrieved October 23, 2026.
Guide prices and journey times are indicative, not live quotes. A booked package may include transfers and waiting time as well as the main journey. Check the selected offer, pickup point and current conditions before booking.