Bengali Fish Curry (Macher Jhol)

By Lee Jackson ↣ Published on: January 15, 2022

This unique Bengali fish curry recipe, sees soft white fish bathed in a light and fragrant coconut sauce flavoured with mustard and poppy seeds. Macher Jhol is a quick and easy curry to make at home and one of the most fragrant and tasty fish curries ever.

Bengali Fish Curry in a bowl in a black tabletop with rice and scattered with cilantro, radishes and celery

My Bengali Fish Curry recipe is a fragrant, healthy and flavourful offering that’s jam packed with personality. The combination of spices, and fresh ingredients create a robust, lightly creamy and fragrant sauce that clings to the flaky white fish. It’s a light, bright and spicy curry - quick to prepare and even quicker to eat! Super-charged delicious.

What is Macher Jhol?

Macher Jhol is a hot and sour Bengali fish curry from the North East of India. A simple, fragrant curry made from white fish (usually a freshwater carp called Rohu or Rui Maach, Hilsa or Pomfret). It features ingredients typical of the region like mustard oil along with white (hulled) poppy seeds called khus khus. The fish is cooked in a coconut milk broth. Interestingly, Macher Jhol doesn’t feature garlic or ginger, often seen in Indian curries.

In a typical Bengali household, Macher jhol often goes by other names, such as Kalia Jhol, Rohu Kalia or Maacher Kalia. ‘Maacher’ means fish and ‘Kalia’ or ‘Jhol’ means gravy.

Why it works

Like many fish curries, Macher Jhol is lighter and healthy. It packs a flavourful punch but isn’t too rich or heavy. It has a thin but creamy fragrant gravy that is just perfect over fluffy basmati rice. I also love the addition of potatoes, there to give a little bulk to the sauce – and for me, anything with a potato in it is an instant win!

Stuff you'll need

Macher Jhol requires some special ingredients to achieve the authentic Bengali flavour. Nothing you won’t be able to find at any Indian store or online, or even in many Supermarkets these days.

  • Fish - A flaky, but firm white fish is best with the skin removed. See my guide to buying fish for fish curries below.
  • Mustard Oil – Mustard oil is a key ingredient. You can find this at any Indian store.
  • White poppy seeds – again, most Indian stores will sell this, often called Khus Khus.
  • Spices – Dried chillies, cumin seeds, coriander seeds and turmeric are all you need.
  • Fresh – chillies, tomato and potato add flavour, spice and colour to the curry.
  • Other – Coconut milk will add the fragrant creaminess to the gravy.
  • Tamarind – Tamarind pulp or concentrate gives the unique sourness. You can also use freshly squeezed lime or lemon juice.
  • Garnishes – whatever you like to add a little freshness to the top. I use radishes, cilantro/coriander and crunchy celery.
Garnishes for a fish curry in a terracotta bowl - radishes, cilantro and celery.

Step by Step

Making Macher Jhol requires two main steps; making the curry paste and then using that paste to make the curry. Simple.

  1. Step 1 - Make the Bengal Curry Paste by dry frying a few whole spices and then grinding into a powder using either a pestle & mortar or spice grinder. Mix the powder with a little coconut milk to make a paste.
  2. Step 2 - Fry the paste in mustard oil for a few minutes to cook out the spices
  3. Step 3 - Add the potato, tomato and coconut milk then simmer until the potatoes are cooked through
  4. Step 4 - Add the fish and cook until done. Shake the pan rather than stir to avoid the fish breaking up.
  5. Step 5 - Add tamarind to enhance the sourness of the curry and simmer for a few minutes.
  6. Step 6 - Your Bengali Fish Curry is done!
Whole spices being toasted for a fish curry paste
A spice paste being fried in mustard oil for a fish curry |
potatoes, tomatoes and coconut milk in a spice paste being cooked for a fish curry |
Fish being added to a coconut curry sauce for a fish curry |
A fish curry simmering in a pan
Bengali Fish Curry (Macher Jhol) |

A guide to buying fish for fish curry

Which fish is best for a fish curry like Macher Jhol? Here’s a guide for fish wherever you are in the World.

Fish on a bed of ice - how to choose the right fish for fish curry |

TIP: When buying fish, make sure it’s fresh - buy it whole and have the fishmonger fillet it for you. Always check the eyes of the fish - if they’re milky and opaque, the fish is not fresh. Secondly, if it smells a little fishy, it IS A LITTLE FISHY, so avoid!

Pro Tips to make your life easier

  • Temper - You can enhance flavour at the end of cooking to up the pungent mustard flavour. Simply grind 1 tsp mustard seeds in a pestle & mortar then mix in 1 tsp of mustard oil and 2 tbsp water. Drizzle into the finished curry and stir gently.
  • Pre-fry the fish – In Bengal, fish is commonly fried before adding to a curry. It helps with texture and can avoid the fish breaking up during cooking. Simply Marinate the fish by sprinkling over a little turmeric for 30 minutes. Then fry in 1-inch of oil for 2 minutes each side. Drain and then follow the recipe as normal. You can also use an air fryer for this stage by brushing the fish with a little oil and air frying in a single layer for 4-5 minutes.
  • Yoghurt - Cool the spice with a dollop of cooling plain yoghurt or a few slices of cucumber. Both are more effective than water if your mouth is on fire.
Bengali Fish Curry in a bowl in a black tabletop with rice and scattered with cilantro, radishes and celery

Serving and storing suggestions

  • Fish curry is best served right away. Fish curries don’t freeze very well, so on this occasion I would say, cook it then eat it. You can make a few hours in advance, but reheat carefully as the fish will likely break up.
  • You can pre-grind the curry paste spices (without the coconut milk) and keep them in an airtight container until needed for up to 6 months.

Ready to get cooking?

So, as you can see Macher Jhol is a really very easy to put together once you have those special ingredients. It’s long been one of my most favourite Indian curries to make at home (I know I say this about every curry I ever cook, but trust me on THIS ONE). It’s great for those chilli cravings (everyone has those, right?) without being a heavy, rich curry. I often want to eat lighter, brighter curries so this is when I turn to Macher Jhol.

Any Questions? (FAQ)

Have a question about Macher Jhol or Fish Curry? Let me know in the comments.

Which fish is good for curry?

Depending where you are in the World, use a firm fish for the best results. Fish like: Pollock, Cod, Salmon, Tilapia, Bass, Grouper, Haddock and Halibut, Mackerel, Whiting, Bream, Monkfish, Grey Mullet, Flathead, Barramundi, Blue Warehou, Whiting, Snapper, Basa, Rohu, Rui Maach, Hilsa or Pomfret

Is fish curry healthy?

Yes, fish contains fewer fat and calories than meat or poultry. This Macher Jhol recipe contains only 538 Calories per serve and it’s super filling and delicious.

How do I make a creamy fish curry?

The use of coconut milk or cream in THIS recipe creates a creamy consistency. You can also use diary cream or add a blended paste made from cashew or peanuts to a fish curry to create creaminess.


Bengali Fish Curry in a bowl in a black tabletop with rice and scattered with cilantro, radishes and celery

Bengali Fish Curry (Macher Jhol)

Rate this recipe

5 from 4 votes
Print Recipe Pin Recipe Save Recipe
Recipe by Lee
Course Main Course
Cuisine Indian
Prep Time10 minutes
Cook Time30 minutes
Total Time40 minutes
Servings (adjustable) 4
Calories (per serving) | 538

Video Recipe


For the Bengal Curry Paste

For the curry

  • 4 tbsp mustard oil
  • 4 green chillies (thinly sliced) (about 2 tbsp)
  • 1 tomato (chopped)
  • 1 potato (cubed, about 1 cup)
  • 1 cup coconut milk
  • t tbsp tamarind concentrate (diluted with a little water)
  • 1.5 lb white fish (700g) (cut into large chunks) (fish suggestions below)


  • ¼ cup cilantro (chopped)
  • ¼ cup radishes (finely diced)
  • ¼ cup celery (finely diced)


For the Bengal curry paste

  • Add the dried chillies, cumin seeds, poppy seeds and coriander seeds to a dry frying pan and toast for 1 minute until the cumin seeds start to jump around. Remove from the heat and add to a spice grinder and grind into a fine powder. Stir in the turmeric, salt and sugar and 1/2 cup of the coconut milk and set aside.

For the curry

  • In a wok or deep sauce pan, heat the oil over a moderate temperature until just hot. Add the curry paste along and fry for 1 minute, until the oil separates.
  • Pour in the remaining coconut milk, 1/4 cup water, chopped chillies, potatoes and tomato and stir well. Bring to a boil then reduce the heat to low and simmer gently, uncovered for 12 minutes until creamy. The potatoes should be cooked too.
  • Stir in the tamarind liquid and then carefully add the fish chunks and simmer for 5-10 minutes (depending how large your fish pieces are), covered, without stirring until the fish is cooked through.
  • Remove from the heat and serve scattered with cilantro, celery and radish with plenty of fluffy basmati rice or Indian breads.


Ingredient Substitutions & Tips
  • Fish – where you are in the world dictates the fish you can use. Here’s a rough guide to the types of fish you might want to consider.
    • North America - Pollock, Cod, Firm Tilapia, Bass, Grouper, Haddock and Halibut, Mackerel and Mahi Mahi
    • UK - Cod, Haddock, Whiting, Bream, Monkfish, Grey Mullet and Mackerel
    • Australia - Flathead, Barramundi, Blue Warehou, Whiting, Snapper, Mackerel and Basa
    • India - Rohu or Rui Maach, Hilsa/Ilish or Pomfret, Mackerel
  • Alternative vegetables - Instead of adding potatoes, you may want to add some other vegetables. Try green beans, cauliflower, pumpkin or squash, cooked and drained spinach or fresh English peas.
  • Tempering the sauce – To add pungency to the sauce, add a mustard paste. Simply grind 1tsp of mustard seeds in a pestle & mortar and then mix in 1tsp mustard oil and 2 tbsp water. Drizzle this into the finished curry sauce just before serving.
  • Pre-frying the fish – In Bengal, fish is often fried before cooking in the sauce. Simply scatter over a little turmeric to coat (about ½ tsp) and marinate for 30 mins. Then fry in about 1-inch of vegetable oil for 2-3 minutes each side. Alternatively, you can brush with oil and air-fry in a single layer for 4-5 minutes.
  • Instead of Tamarind, you can squeeze over a little fresh lime or lemon juice.
Garnishes – In addition to the garnishes in my recipe, you could also fry a few fresh curry leaves in mustard oil and scatter them over, or use fresh cilantro or mint. You can also scatter a little dried fenugreek leaves (methi Kasoori).


Calories: 538kcal (27%) | Carbohydrates: 19g (6%) | Protein: 38g (76%) | Fat: 36g (55%) | Saturated Fat: 19g (119%) | Polyunsaturated Fat: 4g | Monounsaturated Fat: 10g | Cholesterol: 85mg (28%) | Sodium: 848mg (37%) | Potassium: 1099mg (31%) | Fiber: 4g (17%) | Sugar: 4g (4%) | Vitamin A: 505IU (10%) | Vitamin C: 23mg (28%) | Calcium: 90mg (9%) | Iron: 6mg (33%)
Tried this Recipe? Tag me Today!Mention @CookEatWorld or tag #cookeatworld!