9 Best Fish Soup in Singapore: Teochew Clear vs Cantonese Milky, and Which Is Worth the Queue (2026)
Contents
- In a hurry? Our quick picks
- At a glance
- 1. Han Kee Fish Soup — Amoy Street
- 2. Piao Ji Fish Porridge — Amoy Street
- 3. Angel Horse Teochew Fish Soup — Bugis
- 4. First Street Teochew Fish Soup — Kovan
- 5. Jin Hua Fish Head Bee Hoon — Maxwell
- 6. Xin Yuan Ji — Bugis
- 7. Mei Xiang Black & White Fish Soup — Jalan Besar
- 8. Blanco Court Fried Fish Noodles — Beach Road
- 9. 127 Lor 1 Toa Payoh Fish Porridge — Toa Payoh
- What locals actually recommend (the Reddit take)
- Other names worth knowing
- So which should you go to?
- Fish soup in Singapore: quick questions
- More Singapore food guides
Fish soup in Singapore splits two ways: the clear Teochew broth that tastes of the fresh sliced fish, and the milky Cantonese version where the bones are deep-fried until the soup turns creamy. Both are cheap, comforting hawker staples, and most of the best stalls sit in old food centres that sell out by mid-afternoon. We checked every stall below in August 2026 for its price, hours and hawker centre. Here are nine spots worth the queue, each with the one thing it does well.
How we chose: we started from the fish soup stalls Singaporeans actually queue for, then checked each in August 2026 against its own listing: which hawker centre it is really in, what a bowl costs today, and the hours it keeps. We corrected a few addresses that circulate wrongly online, dropped nothing that is still frying, and ranked by how good the bowl is for the price and the wait, not by reputation alone. Most of these are lunch-only stalls that sell out, so the hours matter as much as the soup.
In a hurry? Our quick picks
- Worth the queue: Han Kee at Amoy Street, for the thick, clean batang slices.
- Best milky Cantonese: Jin Hua at Maxwell, creamy from fried bones, cooked to order.
- Cheapest bowl: 127 Lor 1 in Toa Payoh, about $5 with no queue.
- Open late: Xin Yuan Ji near Bugis, to 11pm when the food centres have shut.
At a glance
| Stall | Area | Bowl | Style |
|---|---|---|---|
| Han Kee Fish Soup | Amoy St (Tanjong Pagar) | $5 / $7 / $9 | Clear sliced fish |
| Piao Ji Fish Porridge | Amoy St (Tanjong Pagar) | from $8 | Rich lard broth |
| Angel Horse | Albert Centre (Bugis) | $5.50–6.50 | Clear Teochew |
| First Street | Kovan | $6.80 / $9.80 / $12.80 | Teochew batang |
| Jin Hua | Maxwell | from ~$4.50 | Cantonese milky |
| Xin Yuan Ji | Bugis | from $5.80 | Sit-down, open late |
| Mei Xiang | Berseh (Jalan Besar) | ~$6.50 | Black & white |
| Blanco Court | Beach Rd (Bugis) | ~$7 | Fried fish |
| 127 Lor 1 | Toa Payoh | ~$5 | Heartland porridge |
1. Han Kee Fish Soup — Amoy Street
Photo: Google Maps
Han Kee cuts its batang mackerel thick and fresh, with none of the fishy edge, and the clean sliced fish soup is the one everyone lines up for. It has easily the longest queue at Amoy Street Food Centre, and at peak the wait can run close to an hour. Bowls are $5, $7 or $9 by size, in soup, bee hoon or porridge.
- Go for: the sliced fish soup, thick batang and all, in the size that matches your hunger. Ask for it in soup to taste the broth at its cleanest.
- Worth it: the bowl most worth the queue on this list if you go before the lunch rush. Weekday lunch only and it sells out, so the honest catch is the timing, not the soup.
- Where: Amoy Street Food Centre #02-129, Tanjong Pagar.
2. Piao Ji Fish Porridge — Amoy Street
Photo: Google Maps
Piao Ji is Han Kee's neighbour and rival at Amoy Street, and its draw is a heartier broth built on fried pork lard and shallots, best in the fish-and-prawn bowl that runs $13, $16 or $22 by size. A plainer fish soup starts at $8. The batang slices are thick and naturally sweet, and the queue can stretch past an hour at peak.
- Go for: the fish-and-prawn bowl, where the lard-and-shallot broth is at its richest. The plain fish soup from $8 if you want it lighter.
- Worth it: the pick over Han Kee when you want a fuller, richer bowl and do not mind paying more for the prawns. Same long Amoy Street queue, so come off-peak.
- Where: Amoy Street Food Centre, Tanjong Pagar.
3. Angel Horse Teochew Fish Soup — Bugis
Photo: Google Maps
Angel Horse keeps it simple: a clear, light Teochew broth with plenty of fish slices, no milk and no fried fish, best paired with its house salted-bean chilli. More than 30 years in at Albert Centre on Queen Street, it still draws a 20-minute queue at lunch. Bowls are around $5.50 to $6.50.
- Go for: the clear sliced fish soup with the house salted-bean chilli on the side. This is the bowl to taste what Teochew broth is meant to be.
- Worth it: one of the more honest bowls of clear fish soup in town, at a fair price with only a short wait. The smart central pick when you want light over rich.
- Where: Albert Centre Market & Food Centre, Queen Street, Bugis.
4. First Street Teochew Fish Soup — Kovan
Photo: Google Maps
The owner started as a fish vendor and opened this stall on Upper Serangoon Road in the 1980s; his sons run it now. The batang sliced fish soup is $6.80, $9.80 or $12.80 by size, the smallest bowl holding about seven slices and the largest close to sixteen. Add rice for 60 cents or mee sua for a dollar. The fish is fresh and firm, and the queue can hit 45 minutes.
- Go for: the batang sliced fish soup, sized to your hunger, with rice or mee sua added. The fresh, firm slices are the whole point.
- Worth it: a proper Teochew bowl in the east from a family that has done it for 40 years, cheaper and quieter than the town stalls. Go early, it opens at 8am and the queue builds.
- Where: 1014 Upper Serangoon Road, Kovan.
5. Jin Hua Fish Head Bee Hoon — Maxwell
Photo: Google Maps
Jin Hua has been doing Cantonese fish soup at Maxwell for over 20 years, and its Old Airport Road outlet carries a Michelin mention. The soup is milky from fried bones rather than added milk, though you can ask for milk stirred in. A basic bowl starts near $4.50, with grouper or a whole fish head costing more. Uncle cooks each bowl to order, so the queue takes a while.
- Go for: the fish head bee hoon in the milky broth, or a sliced fish bowl if you want it lighter. Ask for milk stirred in only if you want it richer still.
- Worth it: the standout milky Cantonese bowl here, and one of the few open into the evening. The cooked-to-order wait is the catch, so it rewards a patient, off-peak visit.
- Where: Maxwell Food Centre #01-77, Tanjong Pagar.
6. Xin Yuan Ji — Bugis
Photo: Google Maps
Xin Yuan Ji is a sit-down shop, not a hawker stall, with a wider menu that runs to a charcoal fish-head steamboat. The everyday order is the sliced or fried fish bee hoon from $5.80, cheap for a proper cooked bowl. Now past 30 years at its Tan Quee Lan Street original near Bugis, its real edge is the hours: it stays open until 11pm daily.
- Go for: the sliced or fried fish bee hoon from $5.80, or the charcoal fish-head steamboat if you are a group. A cooked bowl for hawker money.
- Worth it: the pick when the food-centre stalls have long shut, since it runs to 11pm daily. It packs out with office workers, so go early or off-peak.
- Where: Tan Quee Lan Street, Bugis.
7. Mei Xiang Black & White Fish Soup — Jalan Besar
Photo: Google Maps
Mei Xiang serves a single dish: the black-and-white fish soup, black for the fried fish slices and white for the fresh fish meat, both in the one bowl at about $6.50. A middle-aged couple make every bowl themselves, so there is no menu to agonise over and a few firm house rules, dine-in only among them. It opens a short lunch window and often sells out early.
- Go for: the black-and-white bowl, the only thing they make, so you get fried and fresh fish in the one soup. There is nothing else to decide.
- Worth it: the neat answer if you cannot choose between fried and fresh. The tight lunch window and early sell-out are the real catch, so time the visit and mind the house rules.
- Where: Berseh Food Centre, 166 Jalan Besar.
8. Blanco Court Fried Fish Noodles — Beach Road
Photo: Google Maps
Blanco Court on Beach Road is built around fried fish, with generous chunks in a hearty broth, and the fried fish soup runs about $7, most bowls landing between $7 and $11. There is a creamy version if you want it richer, and you can add pork slices, egg or tofu to bulk it up. It is cash only and a short walk from Bugis MRT.
- Go for: the fried fish soup, generous chunks and all, or the creamy version if you want it richer. Add pork, egg or tofu to make it a full meal.
- Worth it: the one to beat for fried fish, and it keeps longer daytime hours than the food-centre stalls. Bring cash, since it does not take cards.
- Where: 325 Beach Road, near Bugis.
9. 127 Lor 1 Toa Payoh Fish Porridge — Toa Payoh
Tucked in Toa Payoh West Market on Lorong 1, this stall draws neighbourhood crowds for a fish soup or fried fish bee hoon at about $5, with a sour-and-spicy seafood soup from $5.50. The broth is simmered until it turns naturally sweet, and the fish is cut neatly. It is a morning and lunch stop, and the cheapest bowl on this list.
- Go for: the fish soup or fried fish bee hoon at about $5, or the sour-and-spicy seafood soup for something with a kick. All of it is honestly cheap.
- Worth it: the best-value bowl here and no queue to speak of, a proper heartland breakfast or lunch. It closes at 2pm and shuts Mondays and Tuesdays, so plan the morning.
- Where: 127 Toa Payoh West Market & Food Centre, Lorong 1.
What locals actually recommend (the Reddit take)
Search Reddit's r/singapore or the food forums and the fish soup debate is really clear-versus-milky, plus one honest gripe about queues. The Amoy Street pair, Han Kee and Piao Ji, get named again and again as worth it, but almost always with the caveat to go off-peak or skip the hour-long wait entirely.
The contrarian thread that keeps coming up: a good neighbourhood bowl with no queue often beats a famous one you wait 45 minutes for. It matches our list. The heartland picks like 127 Lor 1 and First Street give you a fresh, cheap bowl without the town-centre crush, and Jin Hua wins the milky camp for the broth rather than the hype.
The one thing everyone agrees on: get there before the lunch rush, because the best stalls are lunch-only and sell out.
Other names worth knowing
The fish soup stalls people search for a lot that sit just outside our nine, and where they fit.
So which should you go to?
Pick by broth, area and timing:
- Clear Teochew: Angel Horse at Albert Centre or First Street in Kovan.
- Milky Cantonese: Jin Hua at Maxwell.
- Fried fish: Blanco Court on Beach Road, or Mei Xiang for fried-and-fresh in one bowl.
- Worth the queue, off-peak: Han Kee or Piao Ji at Amoy Street.
- Open late: Xin Yuan Ji near Bugis, to 11pm.
- Cheap, near home, no queue: 127 Lor 1 in Toa Payoh.
For a first bowl, Han Kee is the one to queue for if you time it, and 127 Lor 1 is the smart everyday pick when you would rather not wait at all.
Fish soup in Singapore: quick questions
How much does a bowl of fish soup cost in 2026?
A standard sliced fish soup runs about $5 to $7 at most hawker stalls here, with Han Kee starting at $5, Jin Hua near $4.50 and heartland bowls at 127 Lor 1 around $5. Larger bowls with grouper, pomfret, fish head or prawns go higher, up to about $22 for Piao Ji's big fish-and-prawn soup.
What is the difference between Teochew and Cantonese fish soup?
Teochew fish soup is a clear, light broth that lets the fresh fish come through, like Angel Horse and First Street. Cantonese-style soup, such as Jin Hua, is milky and richer, and the good versions get that creaminess from deep-fried fish bones rather than any added milk.
What is black and white fish soup?
It is a single bowl with both kinds of fish: black for the fried fish slices and white for the fresh, poached fish meat, in the one broth. Mei Xiang at Berseh Food Centre is the stall known for it, so you get the firm bite of fried fish and the clean taste of fresh fish together.
Which fish soup is open late or in the evening?
Most of these are lunch-only stalls, but Xin Yuan Ji near Bugis stays open to about 11pm daily, and Jin Hua at Maxwell runs to about 7.30pm, later than the usual food-centre close. The rest, including Han Kee, Mei Xiang and 127 Lor 1, shut by mid-afternoon.
Where can I get fish soup in the heartlands?
127 Lor 1 in Toa Payoh West Market does a roughly $5 bowl from 9am, and First Street has its long-running Upper Serangoon original in Kovan. These are cheaper and quieter than the central food centres, though both close early, so treat them as a morning or lunch stop.
Which fish soup is worth queueing for?
Han Kee at Amoy Street is the one most people say is worth the wait, for its thick, clean batang slices, with neighbour Piao Ji a close second for a richer broth. Both can run close to an hour at peak, so the trick is to go before the lunch rush. If you would rather not queue at all, a heartland bowl like 127 Lor 1 is the honest alternative.
More Singapore food guides
Same honest, homework-done approach for other cravings: our best zi char in Singapore, best chicken rice and best seafood restaurants.
Related guides
13 Best Chicken Rice in Singapore: Famous Hainanese Plates, from Michelin Stalls to Heartland Gems (2026)
12 Best Chilli Crab in Singapore: Black Pepper, Salted Egg & the Best Value Picks (2026)
10 Best Japanese Restaurants in Singapore: From $16 Unagi Bowls to Wagyu Rooms, Every Price Checked (2026)
11 Best Korean Fried Chicken in Singapore: Crispy Chimaek, Snow-Cheese Wings and Halal Chains, from Somerset to the Heartlands (2026)
7 Best Nasi Briyani in Singapore: Local Nasi vs Hyderabadi Dum, the Heritage Names & What a Plate Really Costs (2026)
17 Best Seafood Restaurants in Singapore: Crab, Oysters & the Day's Real Prices (2026)
Fishball Story (Timbre+ and stalls). A young hawker's Bib Gourmand take on fishball noodles, with handmade fishballs in a clean fish soup. A newer name worth the queue.
Ru Ji Kitchen (Holland Drive). A beloved fishball noodle and fish soup stall with springy handmade fishballs, and a long queue to match. Go early.
Song Fish Soup (Ghim Moh). A Michelin-listed sliced fish soup in Ghim Moh Market, clean broth and thick fish. Worth the detour if you are in the west.