Nasi Dagang Recipe (Malaysian Coconut Rice with Fish Curry)
This post contains affiliate links. As an Amazon Associate I earn from qualifying purchases.
Nasi dagang is a Malaysian east coast rice dish that’s best known in the Terengganu and Kelantan regions. Coconut-steamed rice is served with a rich fish curry, acar and often boiled egg, making it much more than a simple rice-and-curry meal.
The rice is one of the unique things about the dish. A mixture of white rice and glutinous rice is steamed with coconut milk and aromatics, giving it a lightly fragrant flavor and a pleasantly chewy texture. Some regional versions also include reddish rice, which is why you may see considerable variation from one plate of nasi dagang to another.
The fish curry is traditionally made with ikan tongkol, a type of tuna commonly used in Malaysia, although I find regular tuna works just as well in the dish. Served with crisp, tangy acar and boiled egg, you get a distinctive combination of creamy coconut, spice, acidity and firm fish.
Nasi Dagang at a Glance
- Prep time: 35 minutes
- Cook time: 1 hour
- Soaking time: 2 hours
- Total time: 3 hours 35 minutes
- Servings: 4
- Cuisine: Malaysian, East Coast
- Main ingredients: Mixed rice, tuna, coconut milk, chilies and acar
- Best cooking method: Steam the rice in stages and gently simmer the fish curry
- Storage: Refrigerate the rice, curry and acar separately for up to 3 days
Why You’ll Love This Nasi Dagang Recipe
- You get the full nasi dagang experience: Enjoy coconut-steamed rice, fish curry, acar and boiled egg when you choose this recipe, not just rice with curry.
- The rice has its own seasoning: The rice is seasoned with coconut milk, ginger, shallot and fenugreek, giving it a distinctive aroma and flavor.
- The acar offers a tasty contrast: The acar adds a crisp, tangy contrast to the rich coconut curry.
- The regional style is adjustable: Keep the red cargo rice for the speckled rice in my recipe or swap it for more white rice if you want a more typical Terengganu-style blend.
What is Nasi Dagang?
Nasi dagang is a traditional rice and fish dish from Malaysia’s east coast, particularly Terengganu and Kelantan. The rice usually contains glutinous rice as part of the blend and is steamed with coconut milk. Fish curry, known as gulai ikan, is the principal accompaniment.
Tuna is especially common, including ikan tongkol, a name used for several tuna-like fish in the region. Pickled cucumber and other vegetables frequently accompany the rice and curry. Boiled egg also appears with many servings.
You’ll sometimes see nasi dagang translated into English as “trader’s rice.” I prefer to keep the Malay name because nasi dagang refers to the complete dish and not just the rice.
Nasi Dagang Ingredients
- White rice: I used jasmine but basmati rice is good too because of the long grains which don’t clump together.
- Glutinous rice: This gives the rice mixture a little chew and helps distinguish nasi dagang from regular coconut rice.
- Red cargo rice: I like to add a small amount for the red-and-white look. You can replace it with more jasmine rice if you don’t have red cargo rice.
- Fenugreek seeds: These are traditionally associated with nasi dagang rice and have a distinctive slightly bitter, aromatic flavor.
- Coconut milk: It seasons both the rice and the fish curry, so use unsweetened coconut milk.
- Tuna steaks: I always get thick steaks rather than small cubes. Longtail or skipjack tuna is similar enough to ikan tongkol, although I’ve also used ordinary tuna steaks for this dish and they work fine.
- Fish curry powder: Use a Malaysian-style fish curry powder if you can find one, for the most traditional taste.
- Tamarind: Adds a little acidity to contrast with the coconut milk and oily fish.
- Cucumber, carrot and pineapple: These form the acar nasi dagang and give the dish a good balance of crisp, sweet and sour elements.
- Eggs: Hard-boiled egg halves are a traditional-style accompaniment. I like to halve them before serving and add one half to each serving.

How to Make Nasi Dagang
Soak the rice first, then make the acar so it’s got time to pickle. Steam the drained rice until partly cooked before mixing it with seasoned coconut milk and steaming it again. This 2-stage method gives the grains time to absorb the coconut mixture without having to cook them in a pot of liquid.
For the curry, gently poach the tuna steaks first. Fry the blended aromatics and spices, then add coconut milk, tamarind and some of the fish cooking liquid. Return the steaks to the thickened curry near the end so they absorb the sauce without falling apart.
Terengganu and Kelantan Styles
Nasi dagang varies across Malaysia’s east coast. Nasi dagang Terengganu commonly combines white rice with glutinous rice. Kelantan versions are more likely to include rice with a reddish color.
I like to use a small amount of red cargo rice in this recipe, although you don’t have to. If you want the rice more like the typical Terengganu style, replace the red cargo rice with the same volume of jasmine or basmati rice.
My nasi kerabu (the one with blue rice!) is another east-coast Malaysian rice dish associated strongly with Kelantan, although the preparation and accompaniments are quite different.
Tips for the Best Nasi Dagang
- Give the rice enough soaking time: Glutinous and red rice need time to hydrate before steaming. A 2-hour soak makes the cooking much more predictable.
- Line the steamer: Cheesecloth, muslin or a clean thin kitchen cloth prevents the smaller grains and fenugreek seeds from falling through the holes.
- Don’t stir the tuna repeatedly: Spoon the curry over the steaks instead. That way, they’re much less likely to break apart.
- Fry the curry paste thoroughly: Give the aromatics several minutes in the oil before you add any coconut milk. Cook until the onion has softened and the spices no longer smell raw.
- Keep the curry at a gentle simmer: I find that vigorous boiling can break the fish and make the coconut milk separate aggressively.
- Cut the acar into batons: Cut the cucumber, carrot and pineapple into similar-sized pieces so the acar has an even texture.
Substitutions and Variations
- No red cargo rice: Replace it with the same amount of jasmine or basmati rice.
- No tuna steaks: Mackerel steaks are another good choice and are also common in nasi dagang recipes.
- Less heat: Use 2 dried chilies rather than 4 and remove the seeds before soaking them.
- No galangal: You can leave it out and increase the fresh ginger slightly.
- No pineapple in the acar: Increase the cucumber and carrot amounts. The pickle won’t be as fruity but it will still work with the curry.
- More traditional Terengganu-style rice: Omit the red rice and use white rice plus glutinous rice only.
Equipment
- Blender: Blends the shallots, garlic, ginger, galangal and chilies into the curry paste.
- Fine-mesh strainer: Handy for draining the soaked rice thoroughly before it goes into the steamer.
- Steamer pot: Nasi dagang rice gets its characteristic texture from steaming rather than boiling in a saucepan. A steamer pot is a good investment, as you can use it for various dishes from steamed chicken breast to steamed wontons or steamed couscous and fruit. As there’s a lot of liquid in this dish, a bamboo steamer pot isn’t as good.
- 3-quart saucepan: Gives the fish steaks enough room to simmer in the curry without crowding them.
How to Serve Nasi Dagang
The rice, fish curry, acar and boiled egg already make a complete nasi dagang serving. Spoon some curry gravy next to and partly over the tuna steak rather than drowning the rice in sauce. Add cucumber, carrot and pineapple pickle on the side and finish with half a boiled egg.
If you want extra chili heat at the table, a little sambal belacan is tasty with the fish and rice. You’ll only need a small amount because the fermented shrimp paste and fresh chilies have a strong flavor.
Nasi Dagang vs Nasi Lemak
Nasi dagang and nasi lemak both feature coconut-flavored rice, although the dishes are quite different. Nasi lemak, one of my favorite breakfasts in Malaysia, is usually based on coconut rice with sambal, anchovies, peanuts and egg. Nasi dagang traditionally pairs its rice blend with fish curry and acar.
The rice preparation also differs between these dishes. Nasi dagang typically includes glutinous rice and often has a staged steaming method. Nasi lemak normally cooks the rice more like conventional rice with coconut milk and aromatics added.

How to Store
- Refrigerate: Cool the rice and curry promptly, then store them in separate airtight containers for up to 3 days. Keep the acar and boiled eggs separate too.
- Reheat the curry: Warm it gently in a saucepan until piping hot. Avoid aggressive stirring around the tuna steaks.
- Reheat the rice: Add a spoonful of water, cover and microwave until steaming hot, or steam it briefly.
- Freeze: You can freeze the fish curry for up to 1 month, although the tuna may become a little firmer after thawing. I wouldn’t freeze the acar or boiled eggs.
- Make ahead: Prepare the acar and curry a day ahead. Steam the rice on the day you plan to serve it for the best texture.
Nasi Dagang FAQs
You’ll often see nasi dagang translated as “trader’s rice” which describes the rice rather than the complete dish.
Ikan tongkol, a tuna-like fish, is traditional. Thick tuna steaks are the easiest substitute for many Western cooks. Mackerel steaks would also be good because they hold together when you simmer them.
Yes. If you want it more like Terengganu-style nasi dagang, leave out the red rice and use more white rice instead.
You can cook a simplified coconut rice in a rice cooker, although it won’t have quite the same texture as rice that is soaked and steamed in stages. For this recipe I recommend using a steamer.
More Malaysian Rice and Fish Recipes
If you want to explore Malaysian dishes beyond the better-known coconut rice dishes, nasi dagang is a great place to start. My asam pedas is another fish option with the fish in a sour tamarind and chili broth. Ikan bakar takes another route and grills marinated fish for a smoky result. You can also browse my full Malaysian recipes collection for more dishes from the same cuisine.

Nasi Dagang
Ingredients
- 1 ¼ cups jasmine or basmati rice (250g)
- ½ cup glutinous rice (100g)
- ¼ cup red cargo rice (45g)
- 1 cup coconut milk (240ml)
- ½ cup water (120ml)
- 3 shallots, thinly sliced (about 3 ounces/85g)
- 1- inch piece fresh ginger, finely julienned (2 ½ cm)
- 1 teaspoon fenugreek seeds
- 1 teaspoon salt
- 1 teaspoon sugar
- 1 ¼ pounds thick tuna steaks (570g)
- 2 cups water (480ml)
- 1 tablespoon tamarind paste
- 1 teaspoon salt
- 2 tablespoons neutral cooking oil (30ml)
- 5 shallots, roughly chopped (about 5 ounces/140g)
- 3 garlic cloves
- 1- inch piece fresh ginger (2 ½ cm)
- 1- inch piece fresh galangal (2 ½ cm)
- 4 dried red chilies, soaked until soft
- 1 tablespoon fish curry powder
- 1 teaspoon ground coriander
- ½ teaspoon ground fennel
- ½ teaspoon ground cumin
- ½ teaspoon turmeric powder
- 1 lemongrass stalk, bruised
- 1 ½ cups coconut milk (360ml)
- ½ cup reserved fish cooking liquid (120ml)
- 1 tablespoon tamarind paste
- 1 tablespoon palm sugar or brown sugar
- 1 red chili
- 1 green chili
- Salt, to taste
- 1 medium cucumber, cut into batons (about 8 ounces/225g)
- 1 large carrot, cut into batons (about 5 ounces/140g)
- 1 cup fresh pineapple, cut into batons (about 6 ounces/170g)
- ½ small red onion, thinly sliced (about 2 ounces/60g)
- 1 red chili, thinly sliced
- ¼ cup white vinegar or rice vinegar (60ml)
- 1 ½ tablespoons sugar
- ½ teaspoon salt
- 2 large hard-boiled eggs, halved
- Fresh mint leaves, optional
Equipment
- Steamer pot with lid
- Cheesecloth, muslin or a clean thin kitchen cloth
- Blender
- Fine-mesh strainer
- Medium saucepan
- Mixing bowls
- Measuring Cups and Spoons
- Wooden spoon
- Sharp knife
- Cutting board
Method
- Combine the jasmine or basmati rice, glutinous rice and red cargo rice in a bowl. Cover generously with cold water and soak for 2 hours.
- Drain the rice thoroughly in a fine-mesh strainer.
- Line a steamer basket with cheesecloth, muslin or a clean thin kitchen cloth. Spread the rice over it in an even layer.
- Steam the rice over simmering water for 20 minutes.
- Combine the coconut milk, water, shallots, ginger, fenugreek, salt and sugar in a large bowl.
- Carefully add the partly cooked rice and fold the coconut mixture through it.
- Return the rice to the lined steamer and steam for another 20 to 25 minutes, or until the grains are tender. Keep covered until ready to serve.
- Combine the cucumber, carrot, pineapple, red onion and sliced chili in a bowl.
- Stir together the vinegar, sugar and salt until the sugar mostly dissolves.
- Pour the vinegar mixture over the vegetables and pineapple. Mix well and refrigerate for at least 30 minutes.
- Add the water, tamarind paste and salt to a saucepan and bring to a gentle simmer.
- Add the tuna steaks. Simmer gently for about 8 to 10 minutes, depending on their thickness, until they reach at least 145°F (63°C) in the center.
- Carefully remove the tuna steaks and set them aside. Reserve ½ cup (120ml) of the cooking liquid.
- Blend the shallots, garlic, ginger, galangal and soaked dried chilies with a splash of water until you have a fairly smooth paste.
- Heat the oil in a wide saucepan over medium heat. Add the spice paste and cook for 5 to 7 minutes, stirring frequently.
- Add the fish curry powder, coriander, fennel, cumin and turmeric. Cook for 1 minute.
- Add the bruised lemongrass, coconut milk, reserved fish cooking liquid, tamarind paste and palm sugar.
- Bring to a gentle simmer and cook uncovered for about 10 minutes, stirring occasionally, until the curry thickens.
- Add the tuna steaks, red chili and green chili. Spoon curry over the fish and simmer gently for another 5 minutes. Taste and add salt if needed.
- Divide the steamed rice between 4 plates, shaping each portion into a mound if you like.
- Add 1 tuna steak to each plate and spoon curry around and partly over the fish.
- Add cucumber, carrot and pineapple acar plus half a boiled egg to each serving.
- Garnish with a few mint leaves if you want to reproduce the plated style closely, then serve warm.
Notes
- Don’t break the tuna into chunks. The traditional ikan tongkol serving way is keeping the fish whole. This also means it’s less likely to break up durind the simmer.
- If your dried chilies are particularly hot, remove their seeds or use two chilies instead of four.
- The rice needs its soaking time. Glutinous rice and red cargo rice can cook unevenly if you try to steam them straight from dry.
- You can make the acar a day ahead and refrigerate it if you like.
- Refrigerate leftover rice and curry separately and use within 3 days.
