Sri Lankan fish curry that is bursting with delicious flavor! This step by step recipe is very versatile, and can be adapted for other seafoods too. I show you how to make it with coconut milk for a creamy curry sauce, or without coconut milk for a spicier fish curry. The spices can also be adjusted to your taste.
Authentic Sri Lankan Fish Curry that is easy to make, and full of flavor!

Sri Lankan fish curry is legendary. And that’s no surprise, considering Sri Lanka is an island in the heart of the Indian Ocean. I grew up eating a lot of fish, in a lot of different ways. Fried fish was my favorite way I willingly ate fish as a kid, but now as an adult, I’ve come to appreciate the incredibly complex flavors that this simple and aromatic fish curry has to offer! I know you will love this fish curry too! 🙂
What kind of fish curry is this?
There are many different ways to make fish curry. Even in Sri Lanka, there are multiple ways to do so. So here’s what you can expect from this fish curry.
This Sri Lankan fish curry is PACKED with flavor! It is spicy (which can be adjusted to your taste), but also has a lovely sour flavor from tamarind. I make most of my Sri Lankan curries with my own Sri Lankan curry powder, but add other spices to balance the flavor profile.

I also use coconut milk in this recipe. The coconut milk tempers the heat and adds creaminess. But you can just as easily leave out the coconut milk for a spicier curry (mirisata curry).
What type of fish can I use?
A firm fleshed fish is best for this kind of fish curry.
- Sword fish
- Tuna (kelavalla /කෙලවල්ලා)
- Sailfish (thalapath / තලපත්)
You can also use other types of fish like mackerel, for example.
How to prepare the fish for this fish curry
If you’re using firm fish, then you can cut the fish steaks into pieces. Here I used sword fish and cut it into 2 – 3 inch pieces.
If you’re using smaller fish like mackerel, then you can cut the fish into steaks too, with the bone and skin. This will also help hold the shape of the fish as it cooks.
Sprinkle the spices and seasoning over the fish, and mix, and allow the fish to marinate for about 10 – 30 minutes.
How to make the Sri Lankan fish curry
The first step is to prepare the fish and marinate it. This is described above. You can buy fish that is already cleaned and cut from your fishmonger, so that you don’t have to worry about breaking down a big fish.
While the fish is marinating, prepare all the other ingredients.
Slice or dice the onion. Mince the garlic and ginger. Have the spices measured and ready to go as well, so that you’re not scrambling to find the spices while making the curry.
Also bear in mind that all the amounts for the spices are a guide. You can adjust them to your taste. Add less chili if you don’t like it spicy, or add more lemon juice if you want the fish curry to be a little sour.
Saute the onion, curry leaves, garlic, and ginger, until the onion is softened. Add the spices and saute for a few seconds to toast the spices. It should get very aromatic at this point with all the toasted spices!
Add the fish pieces and gently mix to coat the fish in all the spices.
Sautéing onions, garlic, and other aromatics Adding the spices Saute the spices Add the fish and gently stir to coat
Coconut or water for the curry sauce?
You can choose to simmer the curry in either water or coconut milk. There are a few options,
- Simmer the fish in coconut milk (this is my favorite way, because the coconut milk splits and I love that concentration of the coconut milk).
- Simmer the fish in a little water, and add coconut milk at the end (this keeps the curry creamier, because the coconut milk does not split).
- Only use water to simmer the fish. This will make the curry spicier, and the spices will also be more pronounced.
Once you’ve simmered the fish curry and the fish is cooked through, it is ready to be served and eaten! I do prefer to let the curry sit for about 20 – 30 minutes, just to let all the flavors mingle and develop.
Adding coconut milk After the curry has simmered
What you’re looking for with this recipe is a fish curry that is bold in spice and curry flavors, with a touch of sourness. The color of the curry will be a reddish brown if you use chili powder, or a dark brown without the chili powder. If you add coconut milk at the end, expect the curry to have a pale / creamy color. You can always adjust the flavors to your liking!
Serving suggestions
This Sri Lankan fish curry can be served with rice, roti, or string hoppers. Both pol roti (coconut roti), and roti canai will go PERFECTLY with this fish curry!
An accompanying veggie side dish or two will also be fantastic. Here are some flavor-packed options,
- Mushroom curry
- Cashew curry
- Green bean dry curry (one of my favorites to pair with this fish curry!)
- Mango curry
- Pumpkin curry
- Carrot curry

Other variations of this fish curry
Sri Lankans love fish, so we have multiple ways of eating fish. Here are some variations of this curry.
Make a dry curry – Add only a little of the liquid mentioned in the recipe to cook the fish. Then simmer the curry as per the recipe, and add just enough coconut milk to make sure the pot isn’t dry. Once the fish is cooked through, cook off the coconut milk and keep the curry dry (with no curry sauce/gravy).
Deep fry the marinated fish to create a golden brown crust, and add that to the curry. The crisp exterior will be even better in a dry curry, and since the fish is already mostly cooked through, you don’t have to simmer it for too long.
Use either prawns / shrimp or squid to make a seafood version of this curry.

Looking for more recipes?Sign up for my free recipe newsletter to get new recipes in your inbox each week! Find me sharing more inspiration on Pinterest and Instagram.
Sri Lankan Fish Curry Recipe
Ingredients:
Fish marinade
- 450 – 500 g swordfish or tuna see recipe notes
- 1 tsp sea salt
- ¼ tsp turmeric powder
- 1 tsp Sri Lankan curry powder roasted or unroasted
- ½ tsp ground black pepper reduce the amount if you prefer a non-spicy curry
- ½ tsp cayenne pepper or kashmiri chili powder (if you don’t prefer spicy curries, reduce the amount or skip it altogether)
For the curry
- ½ medium onion sliced or diced
- 2 – 3 cloves garlic minced
- 1 inch piece of ginger minced
- 10 curry leaves
- 2 green chili or jalapeno (split lengthwise)
- ½ tsp turmeric powder
- 2 tsp Sri Lankan curry powder
- ½ tsp ground cardamom
- ½ tsp ground cumin
- ¾ tbsp ground black pepper I prefer freshly ground black pepper
- ¾ tbsp cayenne pepper or kashmiri chili powder
- 1 stick of cinnamon about 3 inches
- 1 tsp tamarind concentrate more if you’re using regular tamarind paste
- 2 cups coconut milk preferably full fat coconut milk
- Salt to taste
Instructions:
Marinating the fish
- Cut the fish into 2 – 3 inch pieces (this doesn’t have to precise).450 – 500 g swordfish or tuna
- Place the fish in a bowl, along with all the other marinade spices. Mix to coat and let the fish marinate for 10 – 20 minutes.1 tsp sea salt, ¼ tsp turmeric powder, 1 tsp Sri Lankan curry powder, ½ tsp ground black pepper, ½ tsp cayenne pepper
- While the fish is marinating, prep and start to cook the curry.
Making the curry
- Heat about 1 – 2 tbsp of oil in a medium to large size pot, over medium heat. Preferably use vegetable oil, canola oil, or coconut oil.
- When the oil has heated, add the onion, and saute until it starts to soften. Then add the garlic and ginger, and saute until the onion has further softened.½ medium onion, 2 – 3 cloves garlic, 1 inch piece of ginger
- Add the curry leaves, green chili, turmeric, curry powder, cardamom, cumin, black pepper, cayenne pepper and cinnamon. Saute for about 30 – 60 seconds until the spices become fragrant, but take care not to let them burn.10 curry leaves, 2 green chili, ½ tsp turmeric powder, 2 tsp Sri Lankan curry powder, ½ tsp ground cardamom, ½ tsp ground cumin, ¾ tbsp ground black pepper, ¾ tbsp cayenne pepper, 1 stick of cinnamon
- Add the fish and tamarind, and gently mix until the fish is coated with all the spices.450 – 500 g swordfish or tuna, 1 tsp tamarind concentrate
- Add the coconut milk and stir it in.2 cups coconut milk
- Bring the curry to a boil over medium high / high heat. Then lower the heat to a gentle simmer, and simmer the curry without the lid for about 20 minutes or until the fish is cooked through.
- Taste and add more salt and/or tamarind to taste.Salt to taste
- Let the curry sit for at least another 10 – 20 minutes if you can, before serving. This allows the flavors to develop further. Leftovers taste even better!
- Serve the fish curry with rice or roti, and other curries or side dishes.
Tips & Tricks
Note about the fish
You can also use tuna (fresh), sail fish, mackerel, or any other firm fleshed fish to make this fish curry.Note about the curry powder
I use homemade Sri Lankan curry powder, but you can also use store-bought Sri Lankan curry powder. Another alternative is Madras curry powder. But avoid using regular curry powders available at the store, since these almost always don’t use the proper spices for a curry powder. Garam masala can also be used, but this will change the curry flavor to a more pronounced Indian curry flavor, which is distinctly different from Sri Lankan curries.Note about the coconut milk
Please use full fat coconut milk if you can. This gives the best flavor. For a creamier fish curry, add a little water (about ¼ cup) to the fish, and let the fish curry simmer with the lid on. Once the fish is cooked through, add the coconut milk and bring the curry to a boil and simmer for about 1 minute. Then the curry is ready to be served. If you’d like an even spicier curry, simply replace the coconut milk with water. The spices will also be more pronounced in flavor this way.Notes about the ingredients
If you don’t have tamarind, you can use lemon or lime juice instead. However, since tamarind is very sour, you can add HALF the amount first, and then add more if you enjoy the sourness. If you don’t like spicy curries, then adjust the black pepper and cayenne pepper amounts to your taste.Nutrition Information:
“This website provides approximate nutrition information for convenience and as a courtesy only. Nutrition data is gathered primarily from the USDA Food Composition Database, whenever available, or otherwise other online calculators.”
Natasha Everard says
This is the best recipe for Sri Lankan fish curry I have found. Perfect every time. I always make it with tunafish.
Kathrin says
Hi Dini,
If I’m going to fry the cube tuna first, then add them to the curry afterwards, are you able to guide me on how to do that? I’m afraid of overcooking the tuna. Appreciate your assistance. Thank you.
Dini says
Hi Kathrin
You can absolutely pan fry the fish before adding it. However, this will increase the risk of the fish overcooking.
A quick sear on high heat will be the way to go. I do prefer to keep my fish pieces fairly small (about 3 inch pieces), so that the fish can absorb the flavor better.
I hope that helps
Gina says
Very good recipe. I have done it many times already. My husband says that it’s the best dish I cook for him! And the best curry!
Sanuli says
Hi Dini,
I loved your recipe!
When I tried to make it though, the curry ended up looking more like ‘kiri hodi’ and not very spicy or brownish. Do you have any advice?
Dini says
Hi Sanuli
If the curry wasn’t spicy, you can add more chili powder to your taste.
The color of the curry will depend on the curry powder you use, how much chili powder you add and any other changes you make to the curry.
My curry powder is fairly dark in color, and therefore makes a darker curry. I also add more chili powder to suit our taste as well. There’s so many spices added to the curry that it’s not possible for the curry to not be at least brown in color.
The tamarind concentrate also adds color. If the tamarind you used isn’t strong enough (color, but more importantly the taste), then the curry will also not have the flavors (and color) come through.
I hope that helps
Stan says
This is the best fish curry ever! So much flavour. It was a huge hit with my friends too. I used bonito fish which gave it a lovely (and quite strong) fish flavour. The next time I tried making it I used sword fish and found the fish flavour much more mild. It’s amazing how much the fish choice impacts on the end result!
I loved both, but I think the stronger flavour of bonito was the winner for me.
Thanks so much for sharing!
W says
Simply delicious and moreish!!!!! Made with King fish, flavour is so, so good. Captured the essence of Sri Lanka. So happy to have found the recipe, look forward to trying more of your recipes.
MD KAMRUZZAMAN says
The Sri Lankan fish curry is a culinary masterpiece! Thank you so much for the recipe!
Sofia says
Hello Dini,
I’ll be making this. Would it be odd to add some mangoes in the fish curry? I saw your Mango Curry recipe and I thought since I’m making fish curry, why not just add some mango pieces in it? Would appreciate your reply. Thank you.
Dini says
Hi Sofia
I’m not sure if I would want to try it personally. The taste of fish in the fish curry can overwhelm the flavor of the mango in the recipe.
Mangoes can work, if it’s added to add some sourness to the curry (like adding amchur instead of lime or tamarind). I dont think the combination will make a mango curry and fish curry together, but rather a fish curry with some mango-sourness and fruitiness in it.
I hope that helps
Sofia says
Thanks for the reply, Dini. I made this curry the other day and without mangoes! To say it was delicious is an understatement. I used king fish steak and it worked really well.
Thank you for sharing the recipe.
Holly says
This recipe looks wonderful. May I ask, what is the dark red rice dish in the photos?
Katherine says
Hi Dini, thanks for sharing. I was wondering if snapper would work for this recipe. Thank you.
Dini says
Hi Katherine
You can use snapper, however you will have to be very careful about mixing it in the curry as snapper is very delicate and can break very easily when cooked.
The cooking time can be shorter, and make sure not to overcook it!
I hope that helps!
Alexa Robertson says
Lovely flavour. I might have put a tad to much chilli in may need to adjust that but a great base to play around with.
Monica says
I’ve never had Sri Lankan curry before but I love spicy food. Cooked this (with added spice and vegetables) for some Sri Lankan friends and they liked it.
I had some leftovers later and it tasted even better! Thanks for sharing!
Chris says
I loved the recipe, tastes so good. I’m wondering why your curry is always a deep red and mine turns out more orange even if I add extra chili powder. I’m using kashmiri chili powder without coloring.
Dini says
Hi Chris
I’m so glad that you liked the recipe!
We do add a lot more cayenne pepper because we love spicy food. Sometimes upto 2 tsp!
I also find that the color of the curry deepens if the coconut milk is split in the curry, but that will make the curry less creamy as well.
I hope that helps!
Mayurika Lahiri says
Delicious!!! Made the curry powder and it smells awesome!