A mouthwatering fish biryani (traditionally known as machi biryani) to complement any celebration! It’s a layered Basmati rice dish made with spicy haddock fish fillets and uses the “dum” method to create a truly unique and flavourful meal. This recipe is high in protein and packed with fiber, using less oil and lots of nutritious ingredients, like spices, tomatoes, and pepper to create a nourishing recipe. It has a mild spice level.

“I’d posted a few months ago about how much I enjoyed this dish. Since then I’ve cooked it a number of times, and I’ve ordered Biryani at Dishoom in London’s West End and at Shanti on Boston’s Dorchester Avenue. Both were excellent, but this recipe with the layered haddock is better.” ~Eugene Gallaghar
May I just say—this might be one of my all-time favorite rice dishes? A seafood biryani that layers pan-seared spicy fish over a zingy tomato masala, all nestled between delicate, fluffy Basmati rice tiers. Bold flavors, vibrant spices—how can you possibly resist?
As a South Asian dietitian, I believe that eating well isn’t about restriction—it’s about balance. That means enjoying cultural favorites like biryani in a way that supports our health without sacrificing tradition. This easy fish biryani recipe is proof that diabetes-friendly and heart-healthy meals can still be rich, flavorful, and deeply satisfying.
And if you’re as big a fan of flavor-packed seafood dishes as I am, you might also love my Tandoori Salmon Fish Tikka—perfectly spiced and charred to smoky perfection—or these Pan-Fried Basa Fish Fillets, a quick and easy option for weeknight dinners.
Because at the end of the day, food isn’t just fuel—it’s connection. The act of gathering, sharing, and celebrating over a steaming, spice-infused biryani is one of the greatest joys of our culture. And that? That’s something to savor—guilt-free.
I can confidently say this biryani is a dish worth celebrating—whether it’s Ramadan and Eid, a birthday, or just a Thursday that needs a little something special.
Traditionally made with lamb, beef, or chicken, this version switches things up with perfectly spiced, pan-seared fish. It’s a meal that’s both comforting and exciting, the kind that brings everyone to the table, plates piled high, savoring every bite.
But for me, it’s more than just a recipe. It’s a taste of childhood, of moments spent with my lovely granny, Amma—her hands effortlessly layering rice and masala, filling the kitchen with warmth and the most incredible aromas.
Nutrition Highlights
This slow-cooked biryani is nutritionally balanced and made with whole food ingredients. This dish is:
- High in lean protein, thanks to the haddock.
- A source of fiber, with the addition of tomatoes and bell peppers.
- Rich in heart-healthy fats, from extra virgin olive oil.
What You’ll Need for This Flavor-Packed Biryani
This dish is all about layers—fragrant rice, spiced haddock fillets, and a slow-cooked masala that brings everything together.
The Biryani Masala (Spiced Tomato Sauce)
- Olive oil – The base that lets the spices bloom.
- Whole spices – A mix of cumin seeds, cinnamon, bay leaves, green and black cardamom infuse deep flavor.
- Garlic & ginger – The powerhouse duo for a rich, aromatic base.
- Onions & tomatoes – Cooked down until soft and jammy, the key to any great biryani masala.
- Dried plums – A sweet contrast to the bold, warming spices.
- Ground spices – Turmeric, garam masala, and red chili powder add warmth and heat.
- Bell peppers – Adds freshness and a little crunch to the mix.
The Saffron-Infused Milk
- Oat milk – Any other type will work well.
- Saffron strands – Steeps in the milk for that signature golden color and delicate floral aroma.
The Fish
- Haddock fillets – A firm, flaky fish that holds up well in layers.
- Simple spices – A mix of red chili powder, ginger powder, and sea salt brings just the right amount of flavor.
- Olive oil – To sear the fillets so they stay tender inside.
The Rice
- Basmati rice – Always light, fluffy, and aromatic—perfect for biryani.
- Water – Just enough to cook the grains so they stay separate, not mushy.
The Finishing Touch
Fresh mint – A bright, cooling contrast to the spices.
Making Fish Biryani at Home
Once you’ve prepped all your ingredients, it’s time to start layering the flavors that make this dish truly special. Follow these steps for a seamless cooking process:
Bake (Dum) the Biryani
Place the pot in the preheated oven and bake for 20 minutes. This will let the flavors meld and the rice finish cooking, creating that classic dum-style effect.
You can find the complete ingredient list, along with detailed instructions, in the recipe card below.
Tip for the Newbie Cook
Sealing the pot properly is key to a flavor-packed dum biryani. Traditional methods include using dough to lock in steam or covering the pot with a damp cloth napkin before placing the lid on top. I personally rely on my trusty cast iron pot, which retains heat beautifully and creates a natural seal—no extra steps needed!
Food Safe Storage
I know leftovers are a big win—especially when it comes to biryani! If you’ve used frozen fish, store any extras in an airtight container in the fridge for up to 3 days. When ready to enjoy, gently reheat on the stovetop over low heat or in short microwave bursts to keep the flavors and textures just right.
If you try this recipe, I’d love to hear your feedback! Drop your rating, leave a comment, and be sure to tag me on Instagram @DesiliciousRD! Seeing your creations truly makes me smile!
Ingredients
Biryani sauce (masala)
- 2 tbsp olive oil, extra virgin
- 1½ tbsp cumin seeds
- 1 cinnamon stick, large
- 3 bay leaves
- 10 green cardamoms, seeds only, crushed
- 3 black cardamoms, seeds only, crushed
- 1½ tbsp garlic, fresh, grated or crushed
- 2 tbsp ginger, fresh, finely chopped
- 2 onions, small, thinly sliced
- 3 tomatoes, medium size, on the vine variety, washed and cut into small chunks
- 6 dried plums, small
- 2 tsp tumeric
- 2 tsp garam masala
- 2½ tsp red chilli powder, sweet mild variety, adjust to taste
- 2 tsp salt, sea salt
- 1 bell pepper, orange or red, washed and cut into small cubes
Saffron milk
- 2 tbsp oat milk, unsweetened
- ⅛ tsp saffron
Haddock fish
- 2 tsp red chilli powder, sweet mild variety, adjust to taste
- 1 tsp ginger powder
- 1½ tsp salt, sea salt
- 800 g haddock, 5 frozen fillets, thawed, cut into medium pieces, thoroughly dried. Could use fresh.
- 2 tbsp olive oil, for pan frying haddock fish
Basmati rice
- 2 cups basmati rice, washed thoroughly, drained
- 6 cups water, for boiling rice
Garnish
- ½ cup mint, fresh, washed, finely chopped
Instructions
Saffron milk
- In a small bowl, combine the saffron and milk. Set aside, allowing the saffron to infuse its color and delicate aroma into the milk.
Biryani masala (spiced tomato sauce)
- Heat 2 tablespoons of olive oil in a large, heavy-bottomed pot over low to medium heat. Add the cumin seeds, cinnamon stick, bay leaves, and crushed green and black cardamoms. Let the spices sizzle for 30 seconds to 1 minute, stirring occasionally, until fragrant—but be careful not to burn them.
- Add the garlic, ginger, and onions, stirring frequently. Sauté until the onions turn golden brown. This step deepens the flavor base of the biryani.
- Stir in the chopped tomatoes, dried plums, turmeric, garam masala, red chili powder, and salt. Cook over medium heat, uncovered, stirring occasionally, until the tomatoes break down and the mixture becomes thick and jammy.
- Finish the masala by adding the chopped bell pepper and cooking for another 2 minutes. Turn off the heat and transfer the sauce to a large bowl. If your pot is oven-safe, set it aside for assembling the dum biryani.
Spiced haddock fillets
- While the masala is cooking, pat the haddock fillets dry to help them sear properly. In a small bowl, combine the salt, red chili powder, and ginger powder. Sprinkle this mixture evenly over both sides of the fish fillets, pressing gently so the seasoning adheres.
- Heat 1 tablespoon of oil in a large frying pan over medium-high heat. Carefully place half the fillets in the pan, making sure they don’t overcrowd. Sear for about 30 seconds per side—just enough to lock in the spices without fully cooking the fish. Flip them once, then immediately transfer to a plate. Repeat with the remaining fillets and set them aside.
Basmati rice
- Preheat the oven to 380°F (193°C).In a medium saucepan, bring 6 cups of water to a rolling boil. Add the basmati rice and cook for 7-8 minutes, stirring occasionally to prevent sticking. The rice should be about 70% cooked—firm but no longer raw.
- Reduce the heat to medium-high to prevent overflow, then let the rice boil for 1 more minute before draining immediately. This ensures the grains remain light and fluffy after baking.
Layering and baking the biryani
- To assemble the biryani, start by layering half the seared fish fillets in the base of the oven-safe pot. Spoon one-third of the parboiled rice over the fish. Spread half of the thick tomato-pepper masala evenly over the rice. Arrange the remaining fish fillets in a single layer. Add half of the remaining rice on top of the fish. Cover with the remaining masala, spreading it evenly. Finish with the last layer of rice, then sprinkle fresh mint over the top.
- Drizzle the saffron-infused milk over the final rice layer for extra fragrance and richness. Cover the pot with a tight-fitting lid and bake for 20 minutes in the preheated oven.
Notes
Cooking Tips & Ingredient Substitutions
- Best Fish for Biryani: Haddock works beautifully, but you can also use cod, halibut, or kingfish. If using frozen fish, make sure to pat it dry completely before searing.
- Rice Choice: Authentic biryani requires long-grain basmati rice. Aged basmati gives the best texture. Avoid short-grain rice as it becomes mushy.
- Spice Adjustments: If you prefer a mild biryani, reduce the red chili powder and add a pinch of ground cinnamon for warmth.
Storage & Meal Prep
- Make-Ahead Option: Prepare the biryani masala up to 2 days in advance and refrigerate. You can also parboil the rice a day ahead to speed up the process.
- Storage: Store leftovers in an airtight container in the fridge for up to 3 days.
- Reheating: To retain moisture, reheat on low heat with a splash of vegetable stock or water to keep the rice from drying out.
Serving Suggestions & Pairings
- What to Serve with Fish Biryani? This pairs well with raita, kachumber salad, or a side of achar (pickle).
- For a Complete Feast: Pair it with Tandoori Salmon Fish Tikka or Pan-Fried Basa Fish Fillets for an all-out seafood spread.
Common Mistakes to Avoid
- Soggy Biryani? Make sure not to overcook the rice—it should be 70% cooked before baking.
- Fish Falling Apart? Use firm, thick fish fillets and sear them quickly over high heat before layering.
Nutrition Information:
Keep in mind that the nutritional values provided are approximations and suggestions, and might fluctuate depending on ingredient variations, portion sizes, and recipe adjustments. This nutrition facts table cannot account for your individual needs. Your body — including your hunger and satiety cues — change daily. It’s perfectly fine to eat more or less on different days. Instead of letting food guilt take over, consider mindful eating.
* Percent Daily Values are based on a 2000 calorie diet.
I tried this fish biryani recipe and it turned out amazing! The instructions were clear and easy to follow, making the entire cooking process smooth—even for someone who doesn’t make biryani often. The fish was incredibly juicy and absorbed the flavors so well, staying tender without falling apart. The spice blend was just perfect—fragrant, warm, and well-balanced, with the right amount of heat and depth. The rice was beautifully infused with the masala, making every bite flavorful. Definitely a recipe I’ll be making again! Highly recommend for anyone looking for a delicious and hassle-free fish biryani.
Oh my goodness, Zulina. This is such generous and super kind feedback – which I appreciate so much! Many thanks for taking the time to share. We love this recipe! Warmly, Shahzadi
I’d posted a few months ago about how much I enjoyed this dish. Since then I’ve cooked it a number of times, and I’ve ordered Biryani at Dishoom in London’s West End and at Shanti on Boston’s Dorchester Avenue. Both were excellent, but this recipe with the layered haddock is better. Dishoom’s Chicken Berry Britannia Biryani uses whole cranberries rather than plums. My local dried plums are too chewy, so I’ve substituted a half cup of frozen blueberries in the tomato pepper onion sauce, and they are more like Dishoom’s cranberries. Both Shanti and Dishoom mix the rice, sauce and chunks of meat together, but I far prefer the layering in this recipe. Shanti serves their biryani with a side dish of yogurt, but I prefer this recipe’s subtle saffron flavor.
Eugene! I am so sorry I missed this! I am so touched by your generous feedback, it’s too kind! I must say the frozen blueberries sound like a splendid addition. I agree, the saffron flavor is quite special. Many thanks again and happy new year!
Thanks for responding! For my October birthday, my family let me choose any restaurant, and I chose the new ‘Saffron by the Sea’ next door in Fairhaven MA because they serve several biryani dishes. Your recipe was better by far. I felt like giving the chef a copy of your recipe because they, like I do, could utilize the fresh New Bedford haddock available blocks away. Their biryani came in a pot with a candle beneath, but like Dishoom and Shanti, the meat and rice were mixed together like a stir-fry rather than being nicely layered as in your recipe. Fish was not an option.
Firstly, Happy happy birthday Eugene! This feedback made my day and I am delighted that this recipe continues to tantalize your taste buds. Many many thanks for taking the time to reply. Best wishes, Shahzadi
The Biryani was delicious, and I’ll cook it again soon especially since I had to special order several of the spices. The recipe was suggested by one of my Asian students in answer to a class project to provide recipes for sustainable fish. It took nearly an hour to prepare in addition to the 40 min to cook. It reminded me of some of my favorite Indian/Pakistani dishes best consumed with a good lager. My wife enjoyed the dish but found it a bit too spicy, so next time I’ll cut back on the red chili powder, substituting 1 tsp of milder Aleppo pepper. I made the mistake of grinding the cardamom seeds and cinnamon stick in a pestle before cooking in oil, and the cinnamon stick ended up as hard chunks that had to be picked out. After watching the video, it appears that the bay leaves and cinnnamon stick should be left whole for easier removal from the sauce before layering. With 1 3/4 – 2 lb pounds of fresh haddock (4 filets, cut into 8 pieces for layering), there is enough to serve 6.
Oh my goodness, Eugene! What a lovely and thorough experience of my fish biryani you’ve shared. Many thanks for taking the time to make it and circle back here. You can absolutely adjust the spice level to your tolerance. I am glad the videos on the site help to clarify and showcase the cooking action. I look forward to hearing more about your cooking adventures! All my best, Shahzadi 🙂
Succulent and flavourful! Best fish biryani ever😀
(Review provided by family member)
thanks so much, Karim! That is really amazing!
Sounds and looks delicious. Can I substitute pre-cooked chicken instead of fish?
It sounds lovely, though I have not tried it with chicken. Let me know how you go. Enjoy!
most welcome!