A top-down overhead flat lay shot displays a bowl of clear fish soup served with chopsticks, pink spoon, sliced fish, tomatoes, and greens on a dining table.

A good bowl of fish soup should taste of the sea. It should not smell like the back of a wet market at closing time. If you've ever wondered why fish soup tastes fishy, the cause is rarely the fish itself. It is usually how the fish was handled, how the bones were treated, or how hard the pot was pushed.

This guide is for anyone who cooks fish soup at home or wants to understand what they're tasting when they order it. It covers:

Why Does Fish Soup Taste Fishy?

A high-angle close-up shot captures a spoon scooping tender fish slices from a bowl of clean Teochew fish soup.

Fishiness is different from fish flavour. Fish flavour is clean and slightly sweet. Fishiness is sharp, sour and lingering.

Most of it comes from three sources. As fish ages, compounds in the flesh break down into trimethylamine, which carries the familiar "old fish" smell. Fish fats are delicate and oxidise easily, which adds stale, oily notes. Blood left in bones and trimmings turns bitter and metallic once heated. Each one is avoidable. None of them is fixed by adding more seasoning at the end.

This applies across styles. Whether you're eating your way through Singapore's clear fish soup scene or ordering a milky broth, the same rules hold. A rich broth can hide fishiness for a spoonful or two. It cannot hide it for a whole bowl.

It Starts Before the Kitchen

Fish that has passed through many hands has spent more time out of the water and more time being moved. Every extra step is another chance for it to lose condition. That shows up in the pot.

Hup Lok is supplied by Hai Sia Seafood at Jurong Fishery Port, the family business now run by the founder's brother. Fewer hands sit between the fish and the bowl. That gives the kitchen more control over what goes into the broth. Control is the point.

Bone Handling: Where Most Fishiness Begins

A high-angle close-up action shot shows fresh fish bones being rinsed under running tap water in a stainless steel colander to remove blood and prevent bitter off-notes.

Bones carry flavour, but they also carry blood. Bloodlines along the spine and any remaining gills are the usual culprits. Once heated, they cloud the broth and leave a bitter, metallic finish.

Cooks deal with this by cleaning bones thoroughly before they go into the pot. Rinsing away blood and removing anything that shouldn't be there is unglamorous work. It is also where a clean broth is won or lost.

Heat Control: Don't Push the Pot

Heat draws flavour out of bones. Too much of it draws out the wrong things.

A broth left at a hard, rolling boil for too long breaks down fats and overcooks the fish solids. That's when stale, oily notes creep in. Longer is not always better. Past a certain point, more time only adds more of what you don't want.

Our broth takes roughly an hour. The founder's father made his soup without a fixed written recipe. Chef Kee Leng, who is also a partner, balanced and refined it, setting the ratios, heat and timing so the kitchen can make the same bowl each service. The aim was never a long simmer. It was a broth that comes out clean every time.

What Goes Into the Pot

A top-down overhead flat lay shot showcases soup ingredients arranged on individual plates, including raw chicken, salted mustard, julienned ginger, batang fish bones, dried sole fillet (tee poh), and sour plum.

The ingredients decide what the broth tastes of. Ours is made from batang bones simmered with chicken and tee poh, the dried sole fillet. The chicken adds a soft savoury base. The tee poh adds depth.

As the bones cook, collagen renders out and gives the broth its naturally milky ivory body. There is no evaporated milk and no shell or siput base. The soup is white because the bones give everything. Nothing is added to cover the fish.

Condiments Should Finish, Not Mask

Grandpa's Pomfret Soup, named in honour of the founder's father, is finished with generous pomfret slices and three traditional Teochew condiments:

These work best on a broth that is already clean. Ginger can sharpen good fish. It cannot rescue tired fish.

Common Mistakes at a Glance

Knowing Fish Comes First

A wide straight-on exterior shot captures the front entrance of Hup Lok restaurant on Havelock Road, featuring wooden signage and potted plants.

The founder's grandfather hawked fish at the foot of Fort Canning, a pole across his shoulders. The founder's father helped from boyhood and later ran his own stall. The trade grew through a small factory in Redhill into Hai Sia Seafood.

Three generations worked with fish before the first bowl was served. That knowledge of how fish should look, smell and taste sits behind Hup Lok's Teochew fish soup. The restaurant is new. The family's knowledge of fish is not.

FAQ

Is a fishy smell a sign the fish is bad?

Not always, but it is a sign that something went wrong along the way. Age, blood in the bones and overcooking can all cause it.

Can a milky broth hide fishiness?

For a moment, perhaps. A well-made broth shouldn't need to. If you'd like to know how body is built without dairy, read our guide on rich fish soup without milk.

Does adding more ginger fix a fishy soup?

It helps a little. It doesn't remove the cause. Clean bones and controlled heat do more than any amount of ginger.

The Short Version

Fishiness comes from age, blood and too much heat. Clean bones, a controlled simmer, good ingredients and fewer hands between the fish and the bowl keep it out.

To taste a clean broth for yourself, visit Hup Lok on Havelock Road and order Grandpa's Pomfret Soup. Try a spoonful of broth before you add the ginger.