// Adds dimensions UUID, Author and Topic into GA4
Saturday, June 13, 2026
28.3 C
Singapore

Mmm…Bak Kwa

Fussy, choosy and kiasu – these words best describe Singaporeans’ attitude towards one of their favourite festive foods, bak kwa (barbecued sliced pork). Three generations (and counting!) of Singaporeans grew up loving this quintessentially Hokkien delicacy that is usually consumed during the Chinese New Year season, as evidenced by the long queues outside popular bak kwa stalls days before the festive season. Sometimes, you do not have a choice other than to stand in line if you wish to make sure you have that thin slice of Chinese sweetmeat. 

So, instead of looking at popular bak kwa chains like Lim Chee Guan where the queue is kilometre-long, venture into the heartlands. You will discover many stalls selling bak kwa. Or head to Changi where bak kwa stalwart Kim Peng Hiang is located. Here are five stalls to check out for drool-worthy bak kwa.

1. Fragrance Foodstuff

Staying true to its namesake, this ba kwa stall and manufacturer claims to use only the best ingredients and time-honoured recipes to give its bak kwa a beef jerky-like taste.

Where to Go: Blk 709 Ang Mo Kio Avenue 8, #01-2591; Blk 449 Ang Mo Kio Avenue 10, #01-1719; Blk 53 Ang Mo Kio Ave 3, Ang Mo Kio Hub, #B2-39; Blk 192 Toa Payoh Lorong 4, #01-674; and 301 Upper Thomson Road, Thomson Plaza, #01-105

The Damage: S$60 for 1 kg

2. Kim Joo Guan

The name itself hints at a Peranakan diner, but Kim Joo Guan is essentially Chinese. There are only two types of bak kwa sold here – chilli and pork flavoured. The pork bak kwa is lighter on first bite but as you take your subsequent bites, the taste becomes heavier. If spicy is your thing, you will not regret trying the chilli-flavoured bak kwa.

Where to Go: 257 South Bridge Road

The Damage: S$49 for 1 kg (Traditional pork)

3. Kim Hwa Guan

Thin is always in fashion and Kim Hwa Guan’s bak kwa is sliced thin, and this contributes to the overall tenderness and sweetness of the meat.

Where to Go: 32 New Market Road, People’s Park Centre, #01-1022

The Damage: S$54 for 1 kg (Chilli minced pork and sliced pork); S$44 (Minced pork); S$52 (Honey minced pork); S$50 for 1 kg (Square minced pork).

4. Hu Zhen Long

Fusion seems to be the theme of this Sago Street bak kwa stall. The lobster bak kwa, made from prawn and lobster meats, is arguably the stall’s bestseller, thanks to its unique taste. Best of all – you get a pleasant, smoky infusion with hints of charcoal and charred spots on the surface. The original pork bak kwa is justly famous and so are the other festive goodies. During the day, staff will roast the meats under the sun to draw the unsuspecting traveller or passersby over to the stall.

Where to Go: 14 Sago Street

The Damage: S$20 for 1 kg (Original); S$68 for 1 kg (prawn and lobster)

5. Kim Peng Hiang

This 70-year-old bak kwa stall does not believe in following fashion trends. Instead of thin slices of pork, Kim Peng Hiang prefers thick pork slices which are well-marinated and barbecued overnight. To cater to the tastebuds of children and young adults, the outfit also sells pineapple-flavoured bak kwa.

Where to Go: 465 Changi Road

The Damage: S$42 for 1kg (Sliced royal pork, chilli sliced royal pork and BBQ chicken); S$38 (Original); S$45 for 1 kg (Pineapple BBQ pork).

 

- Advertisement -

Hot this week

Full overnight road closure near JB CIQ on June 15 to 16 for RTS Link works

Motorists heading to Johor Bahru via the CIQ should take note: a full overnight road closure along Jalan Ismail Sultan (Stulang-bound) will be in place for two nights from June 15 to 16 due to RTS ...

Singapore dad appeals to transport minister after MRT gate dispute involving toddler

From an IG post. A dad said that he and his wife have to work on a Saturday at least once a month, so they pass their baby to the man's mother-in-law at the train station on their way to work. "At ...

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