Most vegetarian biryanis are pulao wearing a costume. Vegetables get boiled into the rice, a little saffron milk goes on top, and it gets called biryani. A real biryani is built differently: a protein that has been marinated long enough to carry flavour on its own, rice cooked separately to exactly 70 percent, and a sealed dum that finishes both together in trapped steam.

Soya chaap is the one Indian vegetarian protein that can genuinely take that treatment. It is dense, it has a layered fibrous structure, and it absorbs a yoghurt marinade the way bone-in mutton does. This recipe treats it accordingly - a four-hour marinade, a proper birista, and a 20-minute dum. It takes longer than a weeknight curry, but it is the version you make when people are coming over.

Why soya chaap beats paneer and vegetables in biryani

Paneer is a poor biryani protein for one specific reason: it releases whey under sustained heat and turns rubbery during dum. Vegetables collapse. Soya chaap does neither. Its protein is wound into sheets around a stick, so it holds shape through marination, searing and steaming, and it keeps absorbing gravy the whole time.

It also brings real protein to the plate - roughly 22g per generous serving of this biryani, against about 8g for a standard vegetable biryani. If you want the full comparison against animal-based biryani, we broke it down in vegan biryani vs mutton biryani.

A shortcut worth knowing

If you do not have four hours, GoodDot's ready vegan biryani gets you a plated dum biryani in minutes, and our from-scratch vegan biryani recipe covers the keema-based version. This recipe is the chaap variant - chunkier, more restaurant-style, better for a crowd.

Ingredients (serves 4)

For the chaap marinade

  • 1 pack soya chaap, sticks removed, cut into 4cm pieces - GoodDot Soya Chaap
  • 3/4 cup thick plant-based curd (cashew or coconut based), hung for 30 minutes
  • 1.5 tbsp ginger-garlic paste
  • 1 tsp red chilli powder (Kashmiri, for colour)
  • 3/4 tsp turmeric
  • 1.5 tsp coriander powder
  • 1 tsp garam masala
  • 1/2 tsp roasted cumin powder
  • 1 tbsp lemon juice
  • 2 tbsp oil
  • Salt to taste

For the rice

  • 2 cups aged basmati rice, soaked 30 minutes
  • 8 cups water
  • 4 green cardamom, 2 black cardamom, 1 inch cinnamon, 4 cloves, 2 bay leaves
  • 1 tsp shahi jeera
  • 2 tbsp salt (the water should taste like seawater)

For layering

  • 3 large onions, sliced paper-thin, fried to deep golden (birista)
  • 1/2 cup mint leaves
  • 1/2 cup coriander leaves
  • 1/4 cup warm plant milk with a generous pinch of saffron
  • 2 tbsp vegan ghee or coconut oil
  • 1/2 tsp kewra water (optional but traditional)

Step-by-step method

Step 1: Prepare the chaap

Pull the chaap off its sticks and cut into bite-size pieces. Boil them in salted water for 4 minutes, then drain thoroughly and pat dry. This removes any packing liquid and opens the fibres so they drink the marinade instead of sitting in it. Our guide to cooking soya chaap covers this prep in more detail.

Step 2: Marinate properly

Whisk the hung curd smooth, add every marinade ingredient, and fold the chaap through. Cover and refrigerate for at least four hours - overnight is better. A 20-minute marinade does almost nothing; chaap is dense and needs time. This is the same principle behind our restaurant-style tandoori chaap.

Step 3: Make the birista

Fry the sliced onions in about half a cup of oil over medium heat, stirring often, until they are a deep even brown - roughly 15 minutes. Pull them out just before they look done; they darken further on the plate. Drain on paper. Do not rush this with high heat, because burnt birista makes the whole biryani bitter.

Step 4: Sear the chaap

In a heavy-bottomed handi, heat 2 tbsp oil and add the marinated chaap with all its marinade. Cook on high for 4 minutes to sear, then reduce and simmer 8-10 minutes until the marinade thickens and clings. You want a thick coating, not a gravy - excess liquid makes the bottom layer soggy. Stir in half the birista and set aside in the same handi.

Step 5: Cook the rice to 70 percent

Bring the water to a rolling boil with the whole spices and salt. Add the drained rice. Cook for exactly 5-6 minutes - test by pressing a grain between your fingers; it should break into three pieces with a firm white core. Drain immediately. Undercooking here is the single most important technical step in any biryani.

Step 6: Layer

Over the chaap in the handi, spread half the rice. Scatter mint, coriander and a third of the remaining birista. Add the rest of the rice. Top with the remaining birista, herbs, saffron milk drizzled in streaks (not stirred), vegan ghee and kewra water.

Step 7: Dum

Seal the handi with foil and then the lid, or with a rope of wheat dough pressed around the rim. Cook on high for 2 minutes to build steam, then place the handi on a hot tawa over the lowest flame for 20 minutes. Turn off the heat and rest for 10 minutes before opening. Resist opening early - every peek releases the steam doing the work.

Step 8: Serve

Dig down with a flat spoon from one side so each serving picks up all layers. Never stir a biryani. Serve with mint raita made from plant curd and a sharp onion-lemon salad.

Nutrition per plate, roughly

A generous serving gives approximately 22g of protein, 58g of carbohydrate and 16g of fat, with no dietary cholesterol. The protein comes almost entirely from the chaap. For context on how that compares with other Indian protein sources, see our breakdown of soya chaap vs tofu.

Make-ahead and scaling notes

  • Marinate a day ahead. The chaap keeps happily in marinade for 24 hours and tastes better for it.
  • Birista freezes. Make a double batch and freeze half in a flat bag; it keeps six weeks.
  • Scaling up: Beyond 8 servings, use a wider handi rather than a deeper one. Depth over about 10cm means the top layer never gets enough steam.
  • Reheating: Sprinkle a tablespoon of water, cover, and steam on low. Microwaving dries the grains out.

Troubleshooting

The rice is mushy

You cooked it past 70 percent before layering, or your handi was too thin and the base overheated. Use a heavy pan or always put a tawa underneath.

The bottom layer burnt

Flame too high during dum, or not enough moisture in the chaap layer. The lowest possible flame plus a tawa diffuser solves it.

It tastes bland despite all the spices

Almost always under-salted rice water. The rice absorbs its seasoning during boiling, not during dum. The water genuinely should taste too salty.

What to serve alongside

A chaap biryani is rich enough to stand alone, but a starter helps. BBQ tikka or tandoori tikka both work as a grilled opener, and the gourmet grill kit covers a full spread if you are hosting. If you are shopping for the whole menu, the bestsellers collection is the quickest place to start and bundles bring the per-pack cost down.

Frequently asked questions

Can I make soya chaap biryani without dum?

You can layer and cover on low heat for 15 minutes, and it will taste good. But dum is what lets the chaap aroma move up into the rice. Without a proper seal you get layered rice and curry rather than biryani.

How long should soya chaap be marinated?

Four hours minimum, overnight ideally. Chaap is far denser than paneer and a short marinade only flavours the surface. Boiling and drying the chaap first shortens the time needed considerably.

How much protein does soya chaap biryani have?

Roughly 22g of protein per generous serving, compared to about 8g for a typical vegetable biryani. Nearly all of it comes from the soya chaap rather than the rice.

Can I use brown rice or millet instead of basmati?

Brown rice works but needs 12-14 minutes of par-boiling instead of 5-6, and the grains stay firmer. Millets do not hold up to dum well - they turn porridge-like. Aged long-grain basmati remains the best choice.

Is soya chaap healthy enough to eat weekly?

For most people, yes. Chaap is a soya protein with a good amino acid profile, though it is higher in sodium than home-cooked dal. Rinsing before cooking and going light on added salt helps. Our guide to sodium in mock meats explains what to look for on a label.