Opor Ayam (Indonesian Chicken Curry) Recipe
Introduction
Opor Ayam is a rich and fragrant Indonesian chicken curry made with aromatic spices and creamy coconut milk. This comforting dish melts tender chicken pieces in a flavorful sauce, perfect for a cozy meal anytime.

Ingredients
- 1/4 cup coriander seeds
- 3 tablespoons coconut oil
- 10 small shallots, sliced
- Kosher salt, to taste
- 15 garlic cloves
- 5 candlenuts (or 5 to 10 macadamia nuts)
- 2 to 3 1-inch pieces kaempferia galanga root, peeled (optional)
- 1/2 tablespoon white peppercorns
- 1 3-inch piece ginger, peeled and lightly smashed
- 1 3-inch piece galangal, peeled and lightly smashed
- 5 lemongrass stalks, trimmed, smashed and tied into knots
- 10 to 15 fresh or dried salam leaves (Indonesian bay leaves)
- 20 fresh makrut lime leaves
- 1 tomato, chopped (or 1 cup cherry tomatoes)
- 1 8.5-ounce can coconut milk
- 3/4 cup chicken stock
- 3 pounds bone-in chicken pieces
Instructions
- Step 1: In a dry skillet over medium-high heat, toast the coriander seeds for 2 to 3 minutes until fragrant. Let them cool, then grind them in a spice grinder.
- Step 2: Heat 2 tablespoons of the coconut oil in a large sauté pan over medium heat. Add the sliced shallots and a generous pinch of salt. Cook, stirring often, until the shallots are browned, about 10 minutes. Remove and transfer to a food processor.
- Step 3: In the same pan, add the garlic cloves and candlenuts. Cook, stirring constantly to prevent burning, until deep golden brown, about 2 to 3 minutes. Add them to the food processor with the kaempferia galanga root, white peppercorns, and 2 tablespoons of water. Purée into a smooth paste.
- Step 4: Heat the remaining 1 tablespoon coconut oil in the sauté pan over medium heat. Add the ginger, galangal, lemongrass stalks, salam leaves, and makrut lime leaves, giving the lime leaves a scrunch before adding. Cook 5 to 7 minutes until the raw aroma lessens, stirring occasionally.
- Step 5: Stir in the ground coriander seeds, shallot paste, and chopped tomato. Reduce the heat to low and slowly add the coconut milk in increments, stirring gently to prevent the sauce from breaking.
- Step 6: Once all the coconut milk is incorporated and the sauce is gently simmering, add the chicken stock. Nestle the chicken pieces into the sauce and spoon some over the top. Cover and cook on low heat for about 40 minutes, or until the chicken is cooked through and aromatic. Adjust heat to maintain a gentle simmer. Do not boil.
- Step 7: Season to taste with salt. Remove the ginger, galangal, lemongrass, salam leaves, and makrut lime leaves before serving. Serve hot with steamed rice.
Tips & Variations
- Substitute candlenuts with macadamia nuts for a milder flavor if needed.
- Remove the galangal and ginger pieces before serving to avoid overwhelming the dish with their strong flavors.
- Add more coconut milk for a creamier curry or more chicken stock if you prefer a thinner sauce.
- Use boneless chicken thighs for quicker cooking, but bone-in pieces add more flavor.
Storage
Store leftover Opor Ayam in an airtight container in the refrigerator for up to 3 days. Reheat gently on the stove over low heat to prevent the coconut milk from curdling. This dish also freezes well for up to 2 months; thaw overnight in the fridge before reheating.
How to Serve
Serve this delicious recipe with your favorite sides.
FAQs
Can I make this dish without the kaempferia galanga root?
Yes, kaempferia galanga root is optional. Omitting it won’t drastically change the dish but will slightly reduce the depth of its authentic aroma.
What can I serve with Opor Ayam?
Opor Ayam is traditionally served with steamed white rice, but it also pairs well with jasmine rice or coconut rice to complement the rich flavors.
PrintOpor Ayam (Indonesian Chicken Curry) Recipe
Opor Ayam is a classic Indonesian chicken curry characterized by its rich coconut milk base and fragrant blend of spices and herbs, including coriander, galangal, lemongrass, and makrut lime leaves. This comforting dish features tender bone-in chicken simmered gently to absorb the aromatic sauce, making it a flavorful and hearty meal traditionally served with rice.
- Prep Time: 20 minutes
- Cook Time: 50 minutes
- Total Time: 1 hour 10 minutes
- Yield: 6 servings 1x
- Category: Main Course
- Method: Stovetop
- Cuisine: Indonesian
Ingredients
Spices and Seasonings
- 1/4 cup coriander seeds
- Kosher salt, to taste
- 1/2 tablespoon white peppercorns
Herbs and Aromatics
- 10 small shallots, sliced
- 15 garlic cloves
- 5 candlenuts (or 5 to 10 macadamia nuts)
- 2 to 3 1-inch pieces kaempferia galanga root, peeled (optional)
- 1 3-inch piece ginger, peeled and lightly smashed to loosen the fibers
- 1 3-inch piece galangal, peeled and lightly smashed to loosen the fibers
- 5 lemongrass stalks, trimmed, smashed and tied into knots
- 10 to 15 fresh or dried salam leaves (Indonesian bay leaves)
- 20 fresh makrut lime leaves
Other Ingredients
- 3 tablespoons coconut oil
- 1 tomato, chopped (or 1 cup cherry tomatoes)
- 1 8.5-ounce can coconut milk
- 3/4 cup chicken stock
- 3 pounds bone-in chicken pieces
Instructions
- Toast and Grind Spices: In a dry skillet over medium-high heat, toast the coriander seeds for 2 to 3 minutes until fragrant. Let them cool completely, then grind them in a spice grinder to a fine powder.
- Sauté Shallots and Prepare Spice Paste: Heat 2 tablespoons of coconut oil in a large sauté pan over medium heat. Add the sliced shallots and a generous pinch of kosher salt, cooking while stirring frequently until browned and caramelized, about 10 minutes. Remove the browned shallots and add them to a food processor. In the same pan, add the garlic cloves and candlenuts, stirring constantly to prevent burning, until they turn a deep golden brown, about 2 to 3 minutes. Add these to the food processor with the shallots, along with the peeled kaempferia galanga root, white peppercorns, and 2 tablespoons of water. Puree into a smooth paste.
- Cook Aromatics: In the same sauté pan, heat the remaining 1 tablespoon of coconut oil over medium heat. Add the ginger, galangal, lemongrass, salam leaves, and makrut lime leaves (scrunch the lime leaves as you add them to release their aroma). Cook while stirring occasionally for 5 to 7 minutes, until these ingredients lose their intense raw smell and become fragrant.
- Combine Ingredients and Simmer: Stir the ground coriander seeds, shallot and garlic paste, and chopped tomato into the pan of aromatics. Reduce the heat to low and slowly pour in the coconut milk in small additions, stirring gently to prevent the sauce from breaking. Once all coconut milk is incorporated and the mixture is gently simmering, add the chicken stock. Nestle the bone-in chicken pieces into the pan, spoon some sauce over them, cover, and cook on low heat for about 40 minutes until the chicken is fully cooked and the dish is aromatic. Adjust heat as needed to maintain a gentle simmer without boiling.
- Finish and Serve: Season the curry with salt to taste. Before serving, carefully remove the galangal, ginger, lemongrass, salam, and makrut lime leaves. Serve the Opor Ayam hot alongside steamed rice.
Notes
- Kaempferia galanga root is optional but contributes authentic flavor; substitute with extra galangal if unavailable.
- Candlenuts can be replaced with macadamia nuts for a similar creamy texture in the paste.
- Make sure to simmer gently to avoid curdling the coconut milk.
- Removing whole aromatics before serving prevents an overpowering or bitter taste.
- Serve with steamed jasmine rice or sticky rice for a traditional accompaniment.
Keywords: Opor Ayam, Indonesian chicken curry, coconut milk chicken, Indonesian cuisine, savory chicken curry, traditional Indonesian recipe

