A bowl of Penang asam laksa soup with garnishes on a wooden table.
| | |

Penang Asam Laksa Recipe (Spicy, Sour Fish Noodle Soup)

This post contains affiliate links. As an Amazon Associate I earn from qualifying purchases.

Penang asam laksa is a spicy, sour Malaysian fish noodle soup with a tamarind-based broth, flaked mackerel and thick rice noodles. Unlike coconut-based curry laksa, it gets its body from the fish in the broth. The result is savory, tangy and aromatic rather than creamy.

The word asam means sour in Malay. Tamarind gives this soup most of that sourness, while chilies, belacan, lemongrass, torch ginger and laksa leaves build the rest of the broth. Cucumber, red onion, mint and pineapple go on at the table so they keep their distinct flavors and aren’t just mixed into the soup.

I really like the pronounced sour edge. It takes a bit more work than a quick noodle soup because the mackerel needs to be poached, flaked and checked carefully for bones. But it’s well worth making if you want to try a different laksa style. For more dishes from the same cuisine, see my Malaysian recipes hub.

Penang Asam Laksa at a Glance

  • Prep time: 30 minutes
  • Cook time: 45 minutes
  • Total time: 1 hour 15 minutes
  • Servings: 4
  • Cuisine: Malaysian, specifically Penang
  • Main ingredients: Mackerel, tamarind, thick rice noodles, chilies and fresh herbs
  • Best cooking method: Poach the fish, strain the stock and simmer the broth
  • Storage: Refrigerate the broth for up to 3 days; keep noodles and toppings separate

Why You’ll Love Penang Asam Laksa

  • The fish does two jobs: Small, oily mackerel flavors the stock and is flaked and added to the broth.
  • The sourness is adjustable: Tamarind concentrates differ, so the final amount can be matched to your taste. I like quite sour flavors but everyone has their own preference.
  • Fresh toppings are so good: Cucumber, onion, mint and pineapple add crisp, sweet and aromatic touches to the hot broth.
  • It’s very different from curry laksa: There’s no coconut milk. The broth is fish-based, spicy and sour.

Penang Asam Laksa Ingredients

  • Mackerel: Small chub mackerel, also sold as Indian mackerel or ikan kembung, is the classic choice. Small sardines are a reasonable substitute. Their bones and heads make a stronger stock than large fillets. Here in Newquay I can always find fresh mackerel but your grocery store might not carry them and you do need fresh mackerel for this soup if you want an authentic result.
  • Tamarind concentrate: This gives the dish its main sour taste. I’ve found that brands vary considerably, so it’s best to start with 2 tablespoons and add more only after tasting the finished broth. I used tamarind concentrate, not a spoonful of dry compressed pulp or double-strength concentrate. If that’s all you have, you’ll need much less.
  • Torch ginger: Also called bunga kantan, this flower bud has a floral, citrusy aroma that’s difficult to copy with another ingredient. Look for fresh or frozen buds at Southeast Asian grocery stores. I tried replacing it with additional lime and regular ginger which wasn’t bad but wasn’t quite as good either.
  • Laksa leaves: Daun kesum is also sold as Vietnamese coriander, Vietnamese mint or rau răm. It has a peppery, herbal flavor and isn’t the same plant as ordinary mint.
  • Belacan: A firm Malaysian shrimp paste that goes into the broth. I like to toast it first, as this mellows the raw aroma.
  • Hae ko or petis udang: A dark, sweet shrimp paste that’s thinned and served at the table. It’s different from the salty belacan I use in the broth.
  • Thick rice noodles: Fresh or dried round rice noodles are traditional. I always cook them separately so they don’t absorb too much broth.
Bowl of Penang asam laksa with rice noodles, mackerel, cucumber and red onion.

How to Make Penang Asam Laksa

Start by poaching the whole mackerel, then lift out the fish and remove the flesh from the bones. The heads and bones get a short second simmer to strengthen the stock before it’s strained through a fine sieve. I like to blend the asam laksa paste while the stock cooks.

Simmer the strained stock with the spice paste, laksa leaves, torch ginger and an initial measure of tamarind. Return the flaked fish near the end, then adjust the salt, sugar and tamarind. Cook the noodles separately and don’t add the raw toppings until you’re ready to serve the soup.

What is Penang Asam Laksa?

Penang asam laksa is a fish-based rice noodle soup that’s associated with Penang and northern Malaysia. Its broth is made with oily fish, a ground chili and aromatic paste, sour-flavored ingredients and herbs. Thick rice noodles are added to each bowl before the broth is ladled over them.

There are many kinds of laksa across Malaysia and neighboring countries. Curry laksa is the version most people are more familiar with. It has a coconut-based curry broth and may contain shrimp, tofu puffs or other additions. Chicken laksa is one of my favorites. Penang asam laksa has no coconut milk and is defined by its sour fish broth.

The History of Penang Asam Laksa

Penang asam laksa is closely identified with Penang’s hawker food culture and is commonly discussed as part of the region’s Peranakan or Nyonya cooking. That cuisine reflects Chinese and Malay culinary traditions, while food in northern Malaysia also shows influence from nearby Thailand.

The exact inventor and date aren’t firmly documented, so I can’t assign the dish to one person or one moment in Penang’s trading history.

What’s clear though is that sour fish broth, rice noodles, torch ginger and fresh garnishes became a recognizable Penang combination. In May 2026, the state included asam laksa among the foods formally gazetted as Penang heritage items.

I first tried it in Malaysia’s Cameron Highlands about 30 years ago and didn’t try it again until recently.

Tips for the Best Fish Broth

  • Use small oily fish: I like to use whole small mackerel or sardines, since they give the broth more character than lean fillets.
  • Check carefully for bones: Flake the fish by hand and run the stock through a fine-mesh sieve before assembling the soup. I recommend not skipping this step; nobody wants to choke on a fish bone. I know this from experience.
  • Add tamarind in stages: Start with a small amount, simmer and taste. Extra sourness is easy to overdo and difficult to get rid of later. Taste a little of the tamarind by itself and you’ll see what I mean.
  • Season after the fish returns: Belacan and fish both make the soup salty, so make the final adjustment near the end.
  • Keep the components separate: Noodles and fresh toppings should not sit in the hot broth before serving.

Substitutions and Asam Laksa Paste Options

Small sardines can replace chub mackerel. Canned sardines offer a faster route, but I find they produce a different stock and should be treated as a shortcut rather than an equal substitution. Canned tuna is too lean to give the broth the same body so I really don’t recommend that as a swap.

There’s no exact replacement for torch ginger. Frozen torch ginger is the best alternative to fresh. If neither is available, omit it and use a little extra galangal in the paste. Ordinary mint can add a fresh touch at serving time, although it doesn’t duplicate daun kesum.

A packaged asam laksa paste can shorten the prep time and I always have an opened jar in the fridge. Follow the directions on the jar for the amount of water and fish because salt, sugar, tamarind and shrimp paste levels vary by brand.

Fresh cucumber, onion, mint and pineapple are always worth offering at the table.

What to Serve with It

A bowl of asam laksa is a complete meal, so it doesn’t need a substantial side. Lime wedges, sliced chilies and thinned hae ko let everyone adjust their own bowl at the table.

If you do want another Malaysian dish for a larger spread, crisp popiah offer a nice contrast to the soft noodles and hot broth. I sometimes get frozen ones and then just throw them in the air fryer for a crunchy snack.

How to Store

Cool the fish broth promptly and refrigerate it in a covered container for up to 3 days. Store the cooked noodles and fresh toppings in separate containers, otherwise I find the noodles soak up the broth and that dries the dish out and also makes the noodles to soggy.

You can reheat the broth on the stove until it reaches 165°F (74°C), then assemble fresh bowls.

You can prepare the broth a day or two ahead. It can also be frozen for up to 2 months, though the fish flakes are softer after thawing. Freeze the broth only, as rice noodles, cucumber, onion, herbs and pineapple should be prepared fresh.

Penang asam laksa with flaked fish, rice noodles and fresh garnishes.

Penang Asam Laksa FAQs

What is the difference between asam laksa and regular laksa?

Laksa is a broad family of noodle soups, so there’s no single regular version. When talking laksa, people usually mean curry laksa, which has a coconut-based curry broth. Penang asam laksa has a spicy, sour fish broth and no coconut milk.

What’s asam laksa broth made of?

It’s made with oily fish, water, tamarind, chilies, shallots, garlic, lemongrass, galangal, torch ginger, laksa leaves and belacan. Sugar and salt balance the final seasoning.

What fish is used in asam laksa?

Small chub mackerel, known as ikan kembung, is the classic choice. Small sardines also work. Oily whole fish makes a stronger stock than lean fillets or canned tuna. Chub mackerel is my top pick for this recipe.

Can I use store-bought asam laksa paste?

Yes. Use the amount of water and fish given on the package because brands differ in salt, sugar, tamarind and shrimp paste. And then add the noodles and fresh garnishes separately.

Can I make Penang asam laksa ahead?

Yes. Make the broth up to 2 days ahead and refrigerate it. Cook or refresh the noodles separately and cut your raw toppings shortly before serving.

A Spicy, Sour Penang Noodle Soup

Penang asam laksa is defined by the balance between oily fish, souring ingredients, chilies and aromatic herbs. Other well-known Malaysian dishes you may want to try include nasi lemak, otak-otak and char kway teow.

A bowl of Penang asam laksa soup with garnishes on a wooden table.
Victoria Haneveer

Penang Asam Laksa

Penang asam laksa is a spicy, sour Malaysian fish noodle soup made with mackerel, tamarind, aromatic spice paste and thick rice noodles. Cucumber, red onion, mint and pineapple garnish the soup just before serving.
Prep Time 30 minutes
Cook Time 45 minutes
Total Time 1 hour 15 minutes
Servings: 4
Course: Soup
Cuisine: Malaysian

Ingredients
 

For the Fish Stock
  • 2 small whole mackerel, gutted and cleaned, heads on, about 1 ¼ pounds (570 g) total
  • 6 ⅓ cups (1 ½ liters) water
For the Asam Laksa Paste and Broth
  • 6 dried red chilies, stemmed, soaked in hot water for 20 minutes and drained
  • 3 fresh red chilies, stemmed
  • 4 shallots, peeled and quartered
  • 3 garlic cloves, peeled
  • ¾ inch (2 cm) fresh galangal, peeled and sliced
  • 1 teaspoon ground turmeric
  • 2 stalks lemongrass, tender inner parts sliced
  • 1 fresh torch ginger bud, thinly sliced, divided
  • 1 tablespoon (15 g) belacan, toasted
  • ½ cup packed (about 1 ounce or 30 g) laksa leaves (daun kesum or Vietnamese coriander)
  • 2 to 3 tablespoons standard tamarind concentrate, divided or to taste (not double-strength concentrate)
  • 1 tablespoon granulated sugar, plus more to taste
  • 1 ½ teaspoons kosher salt, plus more to taste
For the Noodles and Toppings
  • 14 ounces (400 g) dried thick rice noodles, cooked according to the package directions
  • 1 small cucumber, julienned
  • 1 small red onion, thinly sliced
  • ½ cup fresh mint leaves
  • ½ cup fresh cilantro (coriander) leaves
  • 1 cup thinly sliced fresh pineapple
  • 2 limes, cut into wedges
  • 1 fresh red chili, thinly sliced, optional
  • ¼ cup hae ko or petis udang, thinned with enough hot water to make it pourable, optional

Method
 

  1. Put the mackerel and water in a large pot. Bring to a gentle boil, then reduce the heat and simmer for 8 to 10 minutes, or until the fish is opaque, flakes easily and reaches 145°F (63°C) at the thickest part. Transfer the fish to a plate and let it cool until it can be handled safely.
  2. Remove the flesh from the fish and check it carefully for small bones. Cover and set the flesh aside. Return the heads, skin and bones to the pot. Simmer gently for 15 minutes, then strain the stock through a fine-mesh sieve into a clean bowl. Discard the solids and rinse the pot.
  3. While the stock simmers, put the soaked dried chilies, fresh chilies, shallots, garlic, galangal, turmeric, lemongrass, half the torch ginger and the toasted belacan in a blender or food processor. Add ½ cup of the fish stock and blend to a smooth paste.
  4. Return the strained stock to the clean pot. Stir in the spice paste, laksa leaves, the remaining torch ginger, 2 tablespoons tamarind concentrate, sugar and salt. Bring to a simmer and cook uncovered for 15 minutes, stirring occasionally.
  5. Add the flaked mackerel and simmer for 5 minutes. Taste the broth. Add some or all of the remaining tablespoon of tamarind concentrate if it needs more sourness, then adjust the sugar and salt as needed.
  6. Divide the cooked rice noodles among 4 bowls. Ladle the fish broth over the noodles, making sure each serving gets flaked mackerel. Top with cucumber, red onion, mint, cilantro and pineapple. Serve with lime wedges, sliced chili and thinned hae ko on the side.

Notes

  • Tamarind concentrates vary in strength. I usually begin with about 2 tablespoons and add more if needed only after the broth has simmered.
  • Belacan is the firm, salty shrimp paste blended into the broth. Hae ko or petis udang is a dark, sweet shrimp paste served as a condiment. They are not interchangeable.
  • Small sardines can replace chub mackerel. Large lean fish and canned tuna will not give the stock the same body.
  • Fresh ginger can replace the galangal in a pinch, though the aroma will be different.
  • A fine-mesh sieve is important because mackerel can contain many small bones.
  • Cool and refrigerate leftover broth within 2 hours. Keep the broth, noodles and raw toppings separate. Use the broth within 3 days and reheat it to 165°F (74°C).

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

Recipe Rating