Quick Answer
The best way from Johor Bahru (JB) to Raja Haji Fisabilillah Airport (TNJ) is by ferry from Stulang Laut Ferry Terminal to Tanjung Pinang, followed by a 20-minute taxi to the airport. Total time: 3–4 hours. Total cost: RM55–85 (US$13–20). This is faster, cheaper, and more reliable than any flight or bus combination. Book ferry tickets online via Indomal Express or Majestic Ferry for the best rates.
🚢 Ferry from Johor Bahru to Tanjung Pinang (Then Taxi to Airport)
The ferry is the backbone of travel between Johor Bahru and Tanjung Pinang, the gateway to Raja Haji Fisabilillah Airport. This route is used by thousands of travelers every month and is the most practical, cost-effective, and time-efficient option. Below is a step-by-step breakdown, ferry operator comparison, and insider tips.
Step-by-Step Journey
- Get to Stulang Laut Ferry Terminal – Located just 15 minutes by taxi from central JB (RM15–25 / US$3–6). Address: Jalan Stulang Laut, 80300 Johor Bahru. Grab is widely available.
- Check-in & Immigration – Arrive 60 minutes before departure. Present your passport (min. 6 months validity) and ferry booking. Complete Malaysia exit immigration and Indonesia entry immigration at the terminal.
- Ferry Crossing – 2 to 2.5 hours across the Strait of Malacca. Services are air-conditioned, with reclining seats, a small snack bar, and toilet facilities. Seas are generally calm, but motion sickness pills are recommended for sensitive travelers.
- Arrive at Sri Bintan Pura Ferry Terminal, Tanjung Pinang – Complete Indonesia customs (Visa on Arrival if applicable – IDR 500,000 / US$32 for most nationalities). Luggage is screened.
- Taxi to Raja Haji Fisabilillah Airport – 20 minutes, IDR 50,000–80,000 (US$3–5) by metered taxi or Grab. The airport is 8 km east of the city center.
Ferry Operators Comparison
| Operator | Route | Duration | Adult Fare (RM) | Adult Fare (US$) | Daily Departures |
|---|---|---|---|---|---|
| Indomal Express | Stulang Laut → Tanjung Pinang | 2 h 15 min | RM55–70 | US$13–16 | 3 (08:00, 12:00, 16:00) |
| Majestic Ferry | Stulang Laut → Tanjung Pinang | 2 h 30 min | RM50–65 | US$12–15 | 2 (09:00, 14:00) |
| Bintan Resort Ferries | Puteri Harbour → Tanjung Pinang | 2 h 45 min | RM65–85 | US$15–20 | 2 (10:00, 15:30) |
Note: Fares are for standard class. Prices may vary by season. Children under 5: RM30–40 (US$7–9).
Ferry Seat Types & Onboard Experience
All ferries offer standard economy seating (2+2 configuration, reclining, adequate legroom). Business class is available on Indomal Express (RM80–95 / US$19–22) with wider seats, complimentary snack, and priority boarding. Baggage allowance is 20 kg per person plus hand luggage. Excess baggage: RM5–8/kg (US$1–2).
Why Ferry Beats All Other Options
- Time: 3–4 hours door-to-door vs 6–12 hours for any flight option.
- Cost: RM55–85 (US$13–20) vs RM200+ (US$47+) for flights.
- Reliability: Ferries run year-round; delays are rare (weather-related only).
- Scenic: Enjoy views of the Riau Islands and passing ships.
- Frequency: 5–7 daily departures combined across operators.
✈️ Flight from Johor Bahru to Raja Haji Fisabilillah Airport (via Transit)
There are no direct flights from Senai International Airport (JHB) in Johor Bahru to Raja Haji Fisabilillah Airport (TNJ). All flight itineraries require at least one transfer, making this option significantly more expensive and time-consuming than the ferry. However, for travelers who prefer to avoid sea travel or are combining trips, here are the viable transit options.
Option A: Via Batam (BTH) – Less Common but Possible
- Fly: JB (Senai) → Batam (Hang Nadim Airport) – Firefly or AirAsia, 1 h 10 min, RM120–180 (US$28–42).
- Ferry: Batam (Batam Centre) → Tanjung Pinang – 1 h 45 min, IDR 150,000–250,000 (US$10–16).
- Taxi: Tanjung Pinang port → Airport – 20 min, IDR 50,000–80,000 (US$3–5).
- Total time: 5–7 hours (including layovers and transfers).
- Total cost: RM200–310 (US$47–73) – roughly 3–4× the ferry direct cost.
Option B: Via Jakarta (CGK) – Longer but More Flight Choices
- Fly: JB → Jakarta (Soekarno-Hatta) – AirAsia, Batik Air, 2 h, RM150–250 (US$35–59).
- Fly: Jakarta → Tanjung Pinang (TNJ) – Lion Air, Wings Air, 1 h 50 min, RM200–350 (US$47–82).
- Taxi: TNJ Airport arrival – already at destination.
- Total time: 6–10 hours (including transit time at CGK – minimum 3 hours).
- Total cost: RM400–650 (US$94–153) – extremely high for this short distance.
Flight vs Ferry: Total Time & Cost Reality Check
| Option | Door-to-Door Time | Total Cost (RM) | Total Cost (US$) | Transfers |
|---|---|---|---|---|
| Ferry + Taxi (Best) | 3–4 h | RM55–85 | US$13–20 | 1 (ferry → taxi) |
| Flight via Batam | 5–7 h | RM200–310 | US$47–73 | 2 (flight → ferry → taxi) |
| Flight via Jakarta | 6–10 h | RM400–650 | US$94–153 | 1 (flight → flight) |
Bottom line: Flying is not recommended unless you have a specific reason (e.g., collecting flight miles, avoiding sea if pregnant or prone to motion sickness). The ferry is 3× faster and 5× cheaper.
🚌 Bus + Ferry Combo – The Budget Traveler's Option
For travelers on a tight budget, combining a bus from Johor Bahru to a secondary ferry terminal can save a small amount of money, though it adds complexity and time. This option is only recommended for experienced backpackers who are familiar with both Malaysia and Indonesia.
Route: JB → Batam (by Bus & Ferry) → Tanjung Pinang → Airport
- Bus from JB to Batam: Take a bus from Johor Bahru's Larkin Sentral to Batam's Harbour Bay Ferry Terminal. Buses depart hourly, 1.5 h, RM25–35 (US$6–8). Note: This includes a ferry crossing from Malaysia to Batam (the bus drives onto a ferry).
- Ferry Batam → Tanjung Pinang: From Batam Centre or Harbour Bay, take a ferry to Tanjung Pinang. 1 h 45 min, IDR 130,000–200,000 (US$8–13).
- Taxi to Airport: From Tanjung Pinang port to Raja Haji Fisabilillah Airport. 20 min, IDR 50,000–80,000 (US$3–5).
Total cost: RM55–80 (US$13–19) – only slightly cheaper than the direct ferry, but takes 5–7 hours.
Day Bus vs Night Bus
- Day bus (06:00–18:00): Frequent departures, easy to find, but you'll spend most of the day traveling.
- Night bus: Available from JB to Batam (last departure ~22:00), but ferries from Batam to Tanjung Pinang stop around 17:00. So you would be stranded in Batam overnight. Not practical for this route.
Booking & Luggage
- Book bus tickets via BusOnlineTicket.com or at Larkin Sentral counter.
- Ferry tickets can be purchased at Batam Centre terminal or via 12Go.asia.
- Luggage allowance on buses: 20 kg. Ferries: 20 kg. Excess luggage costs extra.
- Warning: You will pass through immigration twice (Malaysia exit, Indonesia entry at Batam, then internal ferry to Tanjung Pinang). Ensure your visa allows multiple entries if needed.
Verdict: Only choose this if you are already planning to visit Batam. Otherwise, the direct ferry from JB to Tanjung Pinang is cheaper, faster, and simpler.
🚕 Taxi / Private Transfer – Premium Door-to-Door Convenience
Private transfers offer the highest level of convenience but come at a significant premium. This option is best for: late-night arrivals, travelers with heavy luggage, families with young children, or those with limited mobility.
Option 1: Private Taxi from JB Hotel to Stulang Laut Ferry Terminal
- Cost: RM25–45 (US$6–11) depending on hotel location and time of day.
- Duration: 15–25 minutes from central JB.
- Booking: Grab, MyCar, or hotel concierge. Pre-book via Klook for fixed rates.
Option 2: Private Transfer from Tanjung Pinang Port to Airport
- Cost: IDR 80,000–120,000 (US$5–8) for a pre-booked car (vs IDR 50,000–70,000 for Grab).
- Duration: 20 minutes.
- Convenience: Driver meets you at the arrival gate with a name board, helps with luggage.
- Booking: Via Traveloka or local Tanjung Pinang transfer services.
Option 3: Full Journey Private Transfer (JB Hotel → TNJ Airport) – Very Expensive
- Cost: RM450–700 (US$106–165) – includes taxi from JB to Stulang Laut, ferry ticket (business class), and private car from Tanjung Pinang port to airport.
- Duration: 3.5–4.5 hours.
- Providers: Some tour operators like Riau Islands Trans offer combined sea+land packages. Not widely available – must be booked 48 h in advance.
- When to choose: If you are a VIP, have a very tight schedule and cannot wait, or are traveling with someone who has severe mobility issues.
Price Comparison of Local Transfers
| Route | Grab / Ride-hail | Metered Taxi | Pre-booked Private |
|---|---|---|---|
| JB city → Stulang Laut Ferry Terminal | RM15–22 (US$3–5) | RM20–30 (US$5–7) | RM30–45 (US$7–11) |
| Tanjung Pinang port → Airport | IDR 50,000–70,000 (US$3–5) | IDR 60,000–90,000 (US$4–6) | IDR 80,000–120,000 (US$5–8) |
Tip: For most travelers, Grab in Tanjung Pinang is the best balance of cost and convenience. Metered taxis at the port sometimes overcharge – always agree on the fare before boarding.
🎫 Tickets & Cost Comparison – All Options at a Glance
Use the table below to compare every transport option side by side. Best option and cheapest option are highlighted.
| Option | Total Time | Total Cost (RM) | Total Cost (US$) | Transfers | Comfort | Best For |
|---|---|---|---|---|---|---|
| ⭐ Ferry + Taxi (Best Overall) | 3–4 h | RM55–85 | US$13–20 | 1 | ★★★★☆ | All travelers |
| 💰 Bus + Ferry (Cheapest) | 5–7 h | RM48–70 | US$11–16 | 2–3 | ★★☆☆☆ | Backpackers, budget travelers |
| Flight via Batam | 5–7 h | RM200–310 | US$47–73 | 2 | ★★★☆☆ | Those avoiding sea |
| Flight via Jakarta | 6–10 h | RM400–650 | US$94–153 | 1 | ★★★☆☆ | Business travelers, mileage collectors |
| Private Transfer (Full) | 3.5–4.5 h | RM450–700 | US$106–165 | 0 (concierge) | ★★★★★ | VIPs, mobility issues, late night |
Where to Book Tickets
- Ferry: Indomal Express | Majestic Ferry | 12Go.asia (aggregator).
- Flight: AirAsia | Lion Air | Batik Air.
- Bus: BusOnlineTicket.com | EasyBook.
- Private Transfer: Klook | Traveloka.
Pro tip: Ferry tickets are often 10–15% cheaper when booked online at least 3 days in advance. Walk-up prices at the terminal are always higher.
🧳 Traveler Tips & Experience – Insider Knowledge
Based on hundreds of traveler reports and local advice, here are the real-world tips that can make or break your journey from Johor Bahru to Raja Haji Fisabilillah Airport.
1. Immigration & Visa – Don't Get Caught Out
- At Stulang Laut, you clear Malaysia exit and Indonesia entry before boarding. This takes 15–30 minutes on average.
- Visa on Arrival (VOA) costs IDR 500,000 (US$32) – bring Indonesian rupiah or pay by card (some terminals charge a 3% fee).
- Passport must have 6+ months validity and at least 2 blank pages.
2. Luggage Strategy – Use Takkyubin (Luggage Delivery)
If you have heavy bags, consider using luggage delivery service from JB to Tanjung Pinang. Indomal Express offers a baggage transfer service for RM15–25 per piece. Alternatively, pack light – a 20 kg limit on ferries is strictly enforced. Overweight bags cost RM5–8/kg (US$1–2).
3. The "Hidden" Cost of Flight – Don't Forget Airport Transfers
If you choose to fly, remember that Senai Airport (JB) is 30 minutes from JB city (RM30–40 taxi), and from TNJ airport to Tanjung Pinang city is another 20 minutes. Add these to your total time. The ferry port is much closer to both city centers – a major advantage.
4. Peak Season & Booking Warnings
- Hari Raya / Eid: Ferries sell out 2–3 weeks in advance. Book early.
- School holidays (May–June, November–December): Expect crowds at immigration.
- Monsoon season (November–January): Seas can be rough. Bring motion sickness pills. Ferries rarely cancel, but delays of 30–60 minutes are possible.
5. Food & Facilities at the Terminals
- Stulang Laut Ferry Terminal: Small café selling nasi lemak, sandwiches, and drinks. Limited seating.
- Sri Bintan Pura Terminal (Tanjung Pinang): Several warungs (local eateries) with Indonesian classics like mie goreng, soto, and fresh coconut water. ATM available.
- TNJ Airport: One small café and a convenience store. Don't expect airport-style dining.
6. Connectivity – SIM Cards & Wi-Fi
Buy an Indonesia eSIM (via Airalo or Holafly) before you travel. Physical SIMs are available at Tanjung Pinang port (Telkomsel, Indosat). Prices start at IDR 50,000 (US$3) for 10 GB. Free Wi-Fi is available at both ferry terminals and at TNJ airport (limited speed).
7. What Locals Do – The Insider Way
Experienced travelers on this route always: (a) book the first morning ferry (08:00) to avoid afternoon crowds, (b) bring a light jacket – air conditioning on ferries is very cold, (c) carry small denomination rupiah for taxi and snacks, and (d) use Grab rather than metered taxis at the port.
❓ FAQs: Johor Bahru to Raja Haji Fisabilillah Airport
1. Is there a direct ferry from Johor Bahru to Tanjung Pinang (for Raja Haji Fisabilillah Airport)?
Yes, direct ferries operate from Stulang Laut Ferry Terminal in Johor Bahru to Sri Bintan Pura Ferry Terminal in Tanjung Pinang. The journey takes about 2–2.5 hours. From Tanjung Pinang, Raja Haji Fisabilillah Airport is a 20-minute taxi ride away. Operators include Indomal Express and Majestic Ferry.
2. Can I fly directly from Johor Bahru to Raja Haji Fisabilillah Airport?
No, there are no direct flights from Johor Bahru (Senai International Airport) to Raja Haji Fisabilillah Airport (TNJ). You would need to transit via Batam (BTH) or Jakarta (CGK), which takes 6–12 hours total and costs RM200–650 (US$47–153) – significantly more than the ferry option.
3. What is the cheapest way to get from Johor Bahru to Raja Haji Fisabilillah Airport?
The cheapest way is the ferry from Stulang Laut to Tanjung Pinang (RM45–65) followed by an angkot or shared taxi to the airport (IDR 30,000–50,000). Total cost is around RM48–70 (US$11–16). Booking ferry tickets online in advance can save 10–15%.
4. How long does it take to get from Johor Bahru to Raja Haji Fisabilillah Airport by ferry?
The total door-to-door time is 3–4 hours. This includes: 30 minutes from central JB to Stulang Laut Ferry Terminal, 2–2.5 hours ferry crossing, 15–20 minutes immigration at Tanjung Pinang, and 20 minutes taxi ride to the airport.
5. Is there a night ferry from Johor Bahru to Tanjung Pinang?
No, there are no night ferries. The last departure from Stulang Laut is typically around 17:00–17:30 (5:00–5:30 PM). If you arrive in JB late, you will need to stay overnight and take the first morning ferry (usually 08:00–08:30) or consider a private taxi to the ferry terminal for an early start.
6. Can I use a Grab or Gojek from Tanjung Pinang port to Raja Haji Fisabilillah Airport?
Yes, Grab operates in Tanjung Pinang and is the most convenient way to get from Sri Bintan Pura Ferry Terminal to the airport. The fare is approximately IDR 50,000–70,000 (US$3–5). Gojek is also available but primarily for motorcycle taxis. Metered taxis at the port may charge IDR 60,000–90,000.
7. What is the best option for a family with children traveling from JB to Raja Haji Fisabilillah Airport?
The ferry + private taxi is the best family option. The ferry is comfortable with air-conditioned seating and a snack bar. Children under 5 often travel at a reduced fare (RM30–40). Book a private taxi from the port to the airport (IDR 80,000–100,000) to avoid queues. Total journey time is around 3.5 hours, making it manageable for kids.
8. Do I need a visa to travel from Johor Bahru to Tanjung Pinang (Indonesia)?
Most nationalities receive a free 30-day Visa on Arrival (VOA) upon arrival at Tanjung Pinang port. The fee is IDR 500,000 (US$32). Ensure your passport has at least 6 months validity. Malaysian citizens do not need a visa for stays up to 30 days. Check with the Indonesian embassy for your specific nationality.