Butter tofu is my plant-based take on one of the most popular Indian dishes in the world: butter chicken, or chicken makhani. Traditionally the dish consists of marinated, grilled chicken swimming in a creamy and buttery tomato-based sauce.
While Indian cuisine is quite vegan-friendly, it’s hard to come by a plant-based version of this dish at restaurants. While some restaurants may be able to swap out the chicken for tofu and the heavy cream for coconut milk, they usually won’t be able to replace the key ingredient — butter!
Luckily, we’re able to make a restaurant-quality version right at home.

Table of Contents
Why You’ll Love This Recipe
- Super flavorful. Like all Indian-inspired dishes, butter tofu uses so many incredible spices and aromatics. Your kitchen will smell like heaven!
- Budget-friendly. We LOVE getting Indian takeout, but sometimes you want to save a buck or two. Acquiring all of the spices requires an initial investment, but it becomes worth it very quickly!
- Perfect for leftovers. If you have leftovers (no guarantees), this is one of those dishes that is even better the next day.
What is Butter Tofu?
Butter tofu is a vegan version of the Indian dish butter chicken, or chicken makhani. The dish consists of marinated and lightly charred tofu in a rich and creamy tomato-based sauce.
It is very similar to the extremely popular chicken tikka masala, with a few differences. Butter chicken is mild, rich, and light in color due to the amount of butter and cream. Chicken tikka masala usually has a more pronounced tomato flavor and is typically spicier and tangier than butter chicken.

Ingredients for Butter Tofu
For the Tofu
- Tofu.
- Plain non-dairy yogurt. The base of the tofu marinade.
- Garlic, ginger, & hot pepper.
- Lemon juice.
- Spices. Garam masala, turmeric, cumin, and Kashmiri chili powder.
For the Butter Sauce
- Tomatoes. This recipe uses both crushed tomatoes and tomato paste. Be sure to buy high-quality crushed tomatoes (without citric acid).
- Vegan butter. This is key for that decadent takeout flavor! Use a brand you enjoy. Our favorites are Country Crock, Melt, or Miyoko’s.
- Onion, garlic, and ginger.
- Spices. Cumin, coriander, Kashmiri chili, and optional cayenne pepper and kasuri methi.
- Coconut milk. Preferably full-fat, or even coconut cream for extra richness.
- Sugar. Optional, but the extra sweetness is nice.
How to Make Butter Tofu
Marinate the Tofu
- Thoroughly press the tofu so it can absorb the marinade!
- Mix together the marinade, including the yogurt, spices, aromatics and lemon juice.
- Tear in the pressed tofu.
- Toss to coat the tofu and marinate 2+ hours. I usually marinate overnight!

Cook the Tofu
- Arrange marinated tofu on a lightly greased baking tray. Bake 15 minutes @ 425°F.
- Finish the tofu under the broiler for 5-10 minutes (depending on your broiler). You’re looking to develop a slight char.

Make the Butter Chicken Sauce
- Add the aromatics to a pan with oil.
- Sauté until golden.
- Add tomato paste and spices and cook.
- Add canned tomatoes and simmer.

- If desired, blend until smooth.
- Transfer back into pot.
- Add vegan butter, coconut milk, and kasuri methi (fenugreek leaves).
- Stir to combine.
- Add cooked tofu.
- Heat through and serve!

Serving Recommendations
We love serving our butter tofu with steamed basmati rice and fresh vegan naan. Naan is perfect for scooping up extra sauce and basmati rice is necessary for any Indian-inspired dish.
Storage & Reheating
Vegan butter chicken can be stored in an airtight container in the refrigerator for up to 5 days.
It can also be frozen in an appropriate container for up to 3 months. The texture of the tofu will change slightly after defrosting, but it will still be good. (If you’ve ever used the freeze/defrost method for cooking tofu, you understand.)

Frequently Asked Questions
Yes! If you don’t have a full size blender, you can use an immersion blender. I find it tends to splatter if you blend it directly in the pan, so if you’re having that issue you can transfer it to a taller container to immersion blend. Alternatively, you can use a food processor, but make sure to let the mixture cool a bit first.
If you prefer to not use coconut milk, you can use homemade cashew cream, a store-bought vegan heavy cream (such as Silk or Country Crock), or even plain non-dairy yogurt (such as Culina or Forager).
Kasuri methi, or dried fenugreek leaves, add a unique finishing touch to this dish! They have a sweet, savory, and slightly bitter aroma that make this taste even more restaurant-quality. Buy them at your local Indian market or online. If you can’t get your hands on kasuri methi, you can simply omit it.
More Tofu Recipes
- Palak Tofu – Another incredible Indian-inspired dish. Chunks of pan-fried tofu in a spiced spinach gravy.
- Gochujang Tofu – Crispy tofu chunks tossed in a spicy, Korean-inspired gochujang sauce.
- Tofu Katsu – Crispy, fried tofu steaks. Serve with Japanese curry or Hawaiian macaroni salad.

Butter Tofu (Vegan Butter Chicken)
Video
Equipment
- large skillet
- blender or immersion blender
Ingredients
For the Tofu
- 2 (14 or 16 ounce) blocks extra-firm tofu thoroughly pressed and torn into bite-sized pieces
- 1/2 cup plain unsweetened nondairy yogurt I like Forager brand
- 1 tablespoon minced garlic from about 2-3 cloves
- 1 tablespoon minced ginger from about 1" thumb of ginger
- juice of 1/2 a lemon about 1 tablespoon
- 1 teaspoon garam masala
- 1/2 teaspoon turmeric
- 1 teaspoon ground cumin
- 1 teaspoon kashmiri chili powder
- 1/2 teaspoon kosher salt
- 1 tablespoon vegetable oil I like olive oil or peanut oil
For the Butter Chicken Sauce
- 1 tablespoon vegetable oil
- 1 small white or red onion finely diced
- 4-6 cloves garlic minced
- 1 tablespoon minced ginger from about 1" thumb of ginger
- 1 serrano or jalapeño finely diced (optional, for spice)
- 1 teaspoon Kashmiri chili powder
- 1 teaspoon ground cumin
- 1/2 teaspoon ground coriander
- 1/2 teaspoon cayenne pepper (optional, to make it spicy)
- 2 tablespoons tomato paste
- 1 (14 oz) can crushed tomatoes preferably with no citric acid added, such as Cento or Mutti brand; see notes
- 1 3/4 cup water to rinse out tomato can
- 1/2 teaspoon kosher salt plus more to taste
- 2 teaspoons granulated sugar (optional)
- 2 tablespoons vegan butter more to preference; see notes
- 1/2 cup full-fat coconut milk can sub cashew cream or other nondairy cream; see notes
- 2 teaspoons kasuri methi (optional)
- fresh cilantro optional, to garnish
- extra coconut milk optional, to garnish
Instructions
Marinate the Tofu (2+ hours or overnight)
- Make the marinade: In a mixing bowl, whisk together the nondairy yogurt with all other marinade ingredients (garlic, ginger, lemon juice, all spices, salt, and vegetable oil).
- Marinate the tofu: Add in the torn pieces of tofu and gently stir to evenly coat. Cover the bowl and allow the tofu to marinate in the refrigerator, preferably for at least 2 hours or overnight.
Cook the Tofu (Oven Method)
- Preheat oven to 425°F.
- Lightly grease an unlined baking sheet and arrange the marinated tofu pieces with space between them. Bake for 15 minutes in preheated oven.
- Turn the broiler on to High. Finish the tofu under the broiler for about 8-10 minutes until the tofu takes on a light char. All broilers are different, so keep a careful eye on the tofu as it can go from lightly charred to burnt quite fast. Rotate the pan about halfway through so the tofu cooks evenly. Set aside.
Cook the Tofu (Stovetop Method)
- Heat a heavy skillet over medium-high heat. (A cast iron is ideal for this.) Add about 1 tablespoon of oil to the pan, then add in the marinated tofu. Try to let the tofu cook on the first side, untouched, for 2-4 minutes, giving it a chance to brown. Then flip and repeat until nicely browned. Remove the pan from the heat and set aside.
Make the Butter Chicken Sauce
- Brown the aromatics: Heat the vegetable oil in a skillet over medium heat. When the oil shimmers, add in diced onion, minced garlic, minced ginger, and diced chili pepper (if using). Sauté 10-12 minutes, or until mixture is evenly golden brown. Use splashes of water as often as needed to deglaze when the mixture sticks to the pan.If you're in a hurry, you can sauté for only 3-5 minutes, but the flavor won't be as rich.
- Cook spices and tomato paste: Add in the spices. Add tomato paste, breaking it up with your spoon to coat the aromatics. (Add a splash of water as needed if things are sticking to the pan.) Cooking the tomato paste, stirring often, for another 2-3 minutes until it changes from bright red to a darker rusty color.
- Cook the canned tomatoes: Pour in the crushed tomatoes along with 1/2 cup water. When the mixture starts to bubble, reduce heat to low, cover partially, and simmer for 8-10 minutes to cook out the raw flavor of the tomatoes.
- Blend the sauce (optional): For a smooth, restaurant-style sauce, remove the pan from the heat. Allow to cool slightly, then transfer the mixture to a blender and blend until smooth. You can add a bit more water if needed to achieve the texture you like. Pour the entire mixture back into the skillet and heat over medium-low.If you prefer to leave the texture in your butter sauce, feel free to skip this step.
- Finishing touches: Add salt to preference, optional sugar, vegan butter, and coconut milk (or nondairy cream of choice) to the pan. Then add in the optional kasuri methi and the cooked tofu. Stir and allow the mixture to simmer for a few minutes to heat thoroughly.
- Serve: Garnish with optional fresh cilantro and an extra drizzle of coconut milk. Enjoy with steamed basmati rice and homemade vegan naan.
Notes
- A note on canned tomatoes: The quality of your tomatoes is important. I highly recommend Mutti or Cento, as they contain just tomatoes (and sometimes salt). Try to avoid brands that include citric acid in the tomatoes, as this can make the dish taste unpleasantly sour.
- Coconut milk: Use full-fat coconut milk (or even coconut cream) for the creamiest texture. Light coconut can be used for a less rich result.
- Coconut milk alternatives: Homemade cashew cream is my second favorite option (1/2 cup raw cashews, thoroughly soaked and blended with 2/3 cup fresh water). But any nondairy cooking cream can be used, and there are many options available in stores from brands like Silk, Forager, Califia Farms, and Country Crock.
- Kasuri methi: Dried fenugreek leaves. These can be ordered online or found at an Indian market. They add a nice finishing touch and make dishes taste more restaurant quality! But if you can’t find it, feel free to omit it.
- Butter: You can add extra butter (another 2 tablespoons or so) to make this dish even more creamy, decadent and restaurant-quality! For everyday I typically just add the 2 tablespoons.

Let me just start by saying this… my vegan nightmares have been cured. There is nowhere around us that offers a truly vegan Indian option and I’ve been incredibly sad about it. This recipe is an answer to my deepest wishes and usually yields a few days worth of food! Pair it with the naan recipe and you’re set!
I’ve tried for years to create a dish like this that actually tastes like it’s straight from the restaurant…. and I’ve failed. I’m not sure what magic was used to make this recipe, but it has to be the fenugreek and some series vegan brainpower!
This turned out amazing!!!! Great flavor and feels indulgent. I made a double batch of the sauce so I could freeze half. Just used the frozen sauce for dinner tonight and it was divine. Thanks for the great recipe Sarah!!
Amazing flavor !!!
This turned out fantastic, genuinely the best recipe i have tried for this dish so far
This butter tofu is incredible! I make it alongside Sarah’s naan recipe. Would absolutely make again. I could see this becoming a regular staple in my cooking. Leaving below some of my notes in case it help anyone else:
– Used regular chili powder instead of kashmiri (couldn’t find it near me, probably not the most authentic swap, but it tasted great
– Used more garam masala in lieu of not having dedicated coriander
– II made the sauce in a stainless sauce pan, so I used a stick blender to not dirty my full blender. I left some texture in, and it was great!
I will be making this for my young (2 and 5) grandchildren who eat GaGa’s vegan food due to a littany of food allergies. How spicy is this? Should I tone anything down for baby mouths?
I would recommend leaving out the jalapeño/serrano and the cayenne pepper. The Kashmiri chili powder is mildly spicy, so if you want truly zero heat, you can try replacing it 1:1 with regular old paprika. Or just leave that out entirely as well!
Thank you, giving this a try tonight and this is helpful.