Opor Ayam (Indonesian Chicken Curry) Recipe
Introduction
Opor Ayam is a fragrant Indonesian chicken curry that combines rich coconut milk with a blend of aromatic spices and herbs. This comforting dish is perfect for those who love bold flavors and tender, juicy chicken simmered in a creamy sauce.

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 cool, then grind them in a spice grinder.
- Step 2: Heat 2 tablespoons of coconut oil in a large sauté pan over medium heat. Add the sliced shallots and a generous pinch of salt. Cook, stirring often, until browned, about 10 minutes. Remove shallots to a food processor and set aside.
- Step 3: In the same pan, add garlic cloves and candlenuts, cooking and stirring constantly to prevent burning until deep golden brown, about 2 to 3 minutes. Transfer to the food processor with the shallots.
- Step 4: Add the kaempferia galanga root, white peppercorns, and 2 tablespoons of water to the food processor. Purée into a smooth paste.
- Step 5: Heat the remaining 1 tablespoon coconut oil in the sauté pan over medium heat. Add ginger, galangal, lemongrass, salam leaves, and makrut lime leaves, scrunching the lime leaves as you add them. Cook, stirring occasionally, for 5 to 7 minutes until aromatic and softened.
- Step 6: Stir in the ground coriander seeds, shallot paste, and chopped tomato. Reduce heat to low and slowly add the coconut milk in increments, stirring gently to prevent the sauce from breaking.
- Step 7: Once the coconut milk is fully incorporated and the sauce is gently simmering, add the chicken stock. Nestle the chicken pieces into the pan and spoon some sauce over them.
- Step 8: Cover and cook on low heat for about 40 minutes, or until the chicken is cooked through and the dish is fragrant. Adjust heat as needed to maintain a gentle simmer. Do not boil.
- Step 9: Season to taste with salt. Before serving, remove the ginger, galangal, lemongrass, salam, and makrut lime leaves. Serve hot with rice.
Tips & Variations
- If kaempferia galanga root is unavailable, you can omit it or substitute with a small amount of fresh ginger for a slightly different flavor.
- Candlenuts add creaminess—if not available, macadamia nuts are a suitable alternative.
- For a spicier version, add fresh chilies or chili paste to the shallot paste mixture.
- Use bone-in chicken pieces for more flavor, but boneless cuts can be used for quicker cooking.
Storage
Store leftovers 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. You can also freeze the curry for up to 1 month; thaw overnight in the refrigerator before reheating.
How to Serve
Serve this delicious recipe with your favorite sides.
FAQs
Can I use chicken breast instead of bone-in pieces?
Yes, you can use chicken breast, but bone-in pieces add more depth of flavor and tend to stay juicier during cooking. If using breast, reduce cooking time to avoid drying out the meat.
What can I substitute if I don’t have salam leaves?
If salam leaves are unavailable, you can omit them or substitute with a small amount of bay leaves, though the flavor will be slightly different from the traditional dish.
PrintOpor Ayam (Indonesian Chicken Curry) Recipe
Opor Ayam is a classic Indonesian chicken curry featuring tender bone-in chicken simmered in a rich and aromatic coconut milk sauce infused with toasted coriander, galangal, lemongrass, and kaffir lime leaves. This flavorful, comforting dish is a staple in Indonesian cuisine and is perfect served with steamed rice.
- Prep Time: 15 minutes
- Cook Time: 55 minutes
- Total Time: 1 hour 10 minutes
- Yield: 6 servings 1x
- Category: Main Course
- Method: Stovetop
- Cuisine: Indonesian
Ingredients
Spices and Aromatics
- 1/4 cup coriander seeds
- 1/2 tablespoon white peppercorns
- 2 to 3 1-inch pieces kaempferia galanga root, peeled (optional)
- 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
Vegetables and Additional Flavorings
- 10 small shallots, sliced
- 15 garlic cloves
- 5 candlenuts (or 5 to 10 macadamia nuts)
- 1 tomato, chopped (or 1 cup cherry tomatoes)
Liquids and Fats
- 3 tablespoons coconut oil
- 1 8.5-ounce can coconut milk
- 3/4 cup chicken stock
Protein
- 3 pounds bone-in chicken pieces
Seasoning
- Kosher salt, to taste
Instructions
- Toast and grind coriander seeds: In a dry skillet over medium-high heat, toast the coriander seeds for 2 to 3 minutes until fragrant and lightly browned. Remove from heat and let cool, then grind them finely using a spice grinder.
- Cook 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; cook while stirring often until the shallots are browned and caramelized, about 10 minutes. Transfer cooked shallots to a food processor and set aside. In the same pan, add the garlic cloves and candlenuts, cooking constantly for 2 to 3 minutes until they turn a deep golden brown but do not burn. Add these to the food processor along with the peeled kaempferia galanga root (if using), white peppercorns, and 2 tablespoons of water. Purée everything into a smooth paste.
- Sauté aromatics: Heat the remaining 1 tablespoon of coconut oil in the sauté pan over medium heat. Add the ginger, galangal, smashed lemongrass stalks, salam leaves, and makrut lime leaves, scrunching the lime leaves in your hands before adding to release their fragrance. Cook the mixture for 5 to 7 minutes, stirring occasionally, until the strong raw smell dissipates and the aromatics soften.
- Combine and simmer: Stir the ground coriander seeds, the shallot-garlic paste, and chopped tomato into the sautéed aromatics. Reduce heat to low and gradually stir in the coconut milk a little at a time to prevent the sauce from breaking. Once fully incorporated and the sauce starts to gently simmer, pour in the chicken stock. Nestle the bone-in chicken pieces into the pan, spoon some sauce over the top, then cover and cook on low heat for about 40 minutes. Adjust heat as needed to maintain a gentle simmer without boiling, ensuring the chicken cooks through and the flavors meld beautifully.
- Finish and serve: Once the chicken is tender and the dish is aromatic, remove the galangal, ginger, lemongrass, salam leaves, and makrut lime leaves from the pan. Taste and season with kosher salt as needed. Serve the opor ayam hot with steamed rice for a comforting Indonesian meal.
Notes
- If kaempferia galanga root is unavailable, the dish will still be flavorful but slightly different in aroma.
- Candlenuts add creaminess and depth; macadamia nuts can be used as a substitute.
- Do not boil the curry to prevent coconut milk from breaking and curdling.
- Adjust salt seasoning at the end to taste.
- Serve with steamed jasmine rice or fragrant coconut rice for an authentic experience.
Keywords: Opor Ayam, Indonesian chicken curry, coconut milk chicken, Indonesian cuisine, chicken curry recipe

