A return ferry to Batam costs S$76 to about S$87 once fees and fuel surcharges are added, and Bintan's resort ferry starts at S$87 on a weekday promo. We read the published fares, fee notes, schedules and promotions on six operators' own websites on 15 October 2026, ahead of the year-end school holidays.
Year-end holidays are when Batam and Bintan ferries fill up, and the cheapest ticket is not always the cheapest trip.
> Quick view: cheapest to Batam is BatamFast or Majestic at S$76 return; Sindo and Horizon come to about S$87 after fees. Bintan resorts start at S$87 on BRF's weekday promo. Peak dates from 6 November cost more.
How to choose
- Compare the all-in price, not the headline. BatamFast and BRF quote fares with every fee included. Sindo quotes S$28 one-way but adds S$10 in Singapore, about S$10 in Batam and a fuel surcharge each way, so its S$56 return becomes roughly S$87.
- Pick the Batam terminal first. Batam Centre suits Mega Mall and the ferry-side hotels; Harbour Bay (Horizon) is next to Bayfront Mall and Nagoya; Sekupang is on the west side; Nongsapura (BatamFast from Tanah Merah) serves the Nongsa resorts and golf courses.
- HarbourFront moved in July. Since 15 July 2026 all HarbourFront ferries leave from the new terminal at 5 HarbourFront Avenue (Singapore Cruise Centre). Check the counter number on your e-ticket.
- Book the year-end peak early. BRF's peak fare applies on most weekends from 6 November and every day from 18 December to 4 January. Batam boats on Friday evenings and Sunday afternoons in December sell out first.
- Do the arrival card before you queue. Indonesia requires the All Indonesia electronic arrival card, and BRF says it has been mandatory for Bintan visitors since 1 October 2025. Your passport needs at least six months of validity.
How we checked
Every fare, fee, timetable and promotion was read from each operator's own website on 15 October 2026. Horizon's price comes from its booking engine for travel on 4-5 November 2026. Fares and surcharges can change without notice, so confirm the total before you pay.
Related reads