
Most of us have had a bad bowl of fish soup. The broth tastes of little, the fish is dry and rubbery, and the whole thing feels like a missed chance. A good bowl is not complicated, but it does depend on a handful of things done properly.
This guide explains what makes good fish soup, from the ground up. It is written for anyone who wants to order better, cook better, or simply understand why one bowl beats another.
Here is what we will cover:
- Why fish freshness sets the ceiling for everything else
- How texture tells you whether the fish was handled well
- What broth balance actually means
- Where natural sweetness comes from
- How seasoning should support, not cover
Let's start where every good bowl starts: the fish itself.
Fish Freshness Sets the Ceiling

You cannot cook your way out of poor fish. Freshness sets the upper limit of how good a bowl can be, and nothing you do later lifts it past that point.
Fresh fish has clean, firm flesh and a smell of the sea rather than anything sour or sharp. In the bowl, it holds together and tastes clean, not muddy. That clean taste is the whole point of fish soup.
Sourcing decides a lot here. The more hands a fish passes through, the longer the journey from sea to bowl, and each layer of middleman typically adds 20 to 30 percent to the price along the way. Cut those layers out and you shorten the chain. At Hup Lok, local fish comes through the family wholesale business, Haixian, which is approaching its 50th year, while Japanese seafood comes direct from suppliers. You can see how the restaurant sources its seafood and why that shorter chain matters.
In short: start with good fish and you have a chance at a good bowl. Start with poor fish and no amount of seasoning saves it.
Texture: The Sign of Careful Handling
Texture is where handling shows itself. Well-kept fish stays firm and flakes cleanly. Fish that has been sitting too long, or overcooked, turns dry, stringy or mushy.
Different fish behave differently, too. Pomfret has soft, delicate flesh that needs a gentle touch. Batang is firmer and holds its shape well in hot broth. Knowing this changes how you eat.
Here is the single most useful habit for any bowl of fish soup: eat the fish early. In a hot broth, fish keeps cooking after it reaches your table. Leave delicate slices too long and they turn dry and firm. Take the fish first, while it is still tender, then work through the broth and noodles at your own pace.
Broth Balance: Body Without Trickery

A good broth has body. It coats the spoon slightly and carries flavour, rather than tasting like seasoned water. The question is where that body comes from.
Many stalls reach for evaporated milk to get a thick, creamy look. It works, and plenty of people grew up on it. But there is another way to build weight into a broth, and it changes the flavour completely.
Collagen, Not Milk
Collagen is the natural gelatine drawn out of fish bones during a long simmer. It thickens a broth and gives it a slight stickiness on the lips, without adding any dairy note. The flavour stays firmly in fish territory.
This is how Hup Lok builds its base. The broth is made from batang bones and a siput (shell) base, cooked down until the collagen thickens it naturally. It is not thickened with milk. It is thickened with the fish itself.
The takeaway: thickness alone is not the goal. A balanced broth has body and a clean fish flavour, and knowing the source of that body tells you a lot about the bowl.
Natural Sweetness Comes From the Ingredients

Good fish soup has a gentle sweetness, and it should come from the ingredients rather than added sugar. Fish bones, shellfish and slow simmering all release a natural sweetness into the broth. That is the flavour you are chasing.
A shell base like siput deepens this. It adds a savoury, oceanic note that sits underneath the fish and rounds the whole broth out. You taste it as depth rather than any single ingredient.
If a broth tastes sweet in a flat, one-note way, that is often added sugar doing the work. Natural sweetness is subtler and more layered. Once you notice the difference, you cannot unnotice it.
Seasoning Should Support, Not Cover
The last piece is seasoning. Good seasoning lifts the fish and broth. Poor seasoning buries them. The aim is balance, not force.
Look at how Grandpa's Pomfret Fish Soup is finished. It carries shiitake, julienned ginger, tomato, salted plum and a splash of hua tiao wine. Each addition does a specific job:
- Shiitake adds a savoury, earthy depth
- Ginger lifts the broth and cuts any heaviness
- Tomato brings a gentle acidity
- Salted plum adds a savoury-sour edge
- Hua tiao wine rounds it off with a little warmth
None of these fight the fish. They frame it. That is the mark of good seasoning: you taste a complete bowl, not a list of strong flavours competing for attention.
The dish is a modern recipe, created by Chef Kee Leng and inspired by family memory rather than passed down word for word. It is named after the founder's own father. The founder's family has traded fish in Singapore for three generations, and that background shapes how Hup Lok's founder-led kitchen thinks about every bowl.
Common Mistakes to Avoid
A few errors show up again and again:
- Leaving the fish in the broth too long, it overcooks and dries out
- Judging a broth by colour alone, creamy white can mean milk, not fish
- Adding chilli or lime too early, taste the broth clean first, then adjust
- Assuming thicker means better, balance beats sheer richness
Putting It All Together

A good bowl of fish soup rests on a few honest things. Fresh fish sets the ceiling. Careful handling keeps the texture right. A balanced broth carries body and clean flavour, ideally from collagen rather than milk. Natural sweetness comes from the ingredients, and seasoning supports rather than covers.
Order your next bowl with these in mind. Check the fish, taste the broth on its own, and eat the fish early before it overcooks.
If you would like to taste a collagen-built Teochew broth for yourself, drop by Hup Lok on Havelock Road and start with Grandpa's Pomfret Fish Soup.





