// Adds dimensions UUID, Author and Topic into GA4
Monday, August 3, 2026
31.9 C
Singapore

It’s June! Best time to hit the beach in Johor Bahru!

SINGAPORE: Are you thinking of a trip across the Causeway for some shopping, makan, or maybe a restful time of Vitamin Sea?

More and more, Johor Bahru (JB) is turning out to be THE place to go for a weekend getaway, thanks to the strong SingDollar and a tourism push from Malaysia’s government.

However, since thousands of other Singaporeans may have the same idea, when and how to go may be key to ensuring your vacay, whether a day trip or a few days’ stay, is enjoyable.

Screenshot 2024 03 01 at 3.41.36 PM
Photo from Unsplash

Worry not, fam, we gotchu. Here are our best tips and tricks for your next enjoyable journey to JB.

Best months to go to JB

Because JB is so close to Singapore, you can expect weather conditions to be pretty similar. This means it’s hot all year round, but some months are hotter than others, so dress accordingly.

If you’re hitting the beach, you can go practically any time, but the best months for beachgoers are between June and September.

Check the weather for rain before you make plans. November and December, and sometimes April, are the rainiest months.

Screenshot 2024 03 01 at 3.42.09 PM e1718562304790
Photo from Unsplash

Tourism in JB is highest in December, March, and April, and you can expect flight and accommodation prices to be higher in these months. November is the month with the fewest tourists.

Read also: 5 best hotel rates in JB await you! — Leap into Malaysia for your next post-leap day getaway

Best time to leave if you’re driving

It’s well documented that the traffic to JB can last four hours or even longer of your precious time, so planning well is important.

On weekdays, your best bet is to leave early; around 5 am would be optimal.

Remember that more than 300,000 people cross the land border between Singapore and Malaysia daily, making it one of the busiest in the world.

There is a traffic dip between 12 noon and 3 pm if you want to take advantage of that. The worst time to go would be between 5 and 9 pm.

On Saturdays, before 5 am is also the safest time to go, and traffic is usually light on Sundays.

When returning from JB, you might want to head to Singapore between 1 pm and 3 pm on weekdays and after 8 pm to avoid the crush.

Saturday mornings to Sunday early afternoon should not be a problem, BUT by 2 pm on Sundays, traffic builds up significantly and, at times, does not let up until past 11 pm.

Screenshot 2024 03 01 at 3.41.50 PM
Photo from Unsplash

Pro-tip: Check the One Motoring website or the ICA Facebook page for real-time traffic info before you go.

Travel hack: Take the ferry or a shuttle

Did you know you can take a painless, traffic-less ferry ride to JB and be there in 45 minutes? It’s the perfect solution for day-trippers; read it all here.

Then there’s also the KTM Shuttle Tebrau that brings Singaporeans to JB for less than S$5 in a five-minute trip. Tickets for the shuttle, which can be booked here, are largely sold out on weekends and holidays, so make sure to plan ahead! /TISG

Read related: Where to go in JB for shopping, eating, sightseeing and more!

- Advertisement -

Hot this week

Singapore fashion retailer Love, Bonito urges customers to remain vigilant against potential scams after security incident

SINGAPORE: Singapore fashion retailer Love, Bonito urged customers to remain vigilant against potential scams after a security vulnerability on its website allowed unauthorised access to customer a...

‘Getting zero offers for 2 months was a good slap in the face’: Fresh grad reluctantly accepts job offer that pays below salary expectations

SINGAPORE: It seems the job market is forcing the hands of some fresh graduates, pushing them to accept jobs that pay below their salary expectations. Recently, an NUS graduate shared anonymously...

Popular Categories

document.addEventListener("DOMContentLoaded", () => { const trigger = document.getElementById("ads-trigger"); if ('IntersectionObserver' in window && trigger) { const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { lazyLoader(); // You should define lazyLoader() elsewhere or inline here observer.unobserve(entry.target); // Run once } }); }, { rootMargin: '800px', threshold: 0.1 }); observer.observe(trigger); } else { // Fallback setTimeout(lazyLoader, 3000); } });
// //
Enable Notifications OK No thanks