Opor Ayam (Indonesian Chicken Curry) Recipe
Introduction
Opor Ayam is a rich and fragrant Indonesian chicken curry that combines aromatic spices with creamy coconut milk. This comforting dish showcases a blend of traditional herbs and spices, creating a flavorful experience perfect for any occasion.

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 finely using a spice grinder.
- Step 2: Heat 2 tablespoons of coconut oil in a large sauté pan over medium heat. Add the shallots with a pinch of salt and cook, stirring often, until browned, about 10 minutes. Transfer shallots to a food processor and set aside.
- Step 3: In the same pan, add the garlic cloves and candlenuts. Stir constantly for 2 to 3 minutes until deep golden brown to avoid burning. Add these to the shallots in the food processor along with the kaempferia galanga root, white peppercorns, and 2 tablespoons water. Purée into a smooth paste.
- Step 4: Heat remaining 1 tablespoon coconut oil in the pan over medium heat. Add the ginger, galangal, lemongrass knots, salam leaves, and scrunched makrut lime leaves. Cook for 5 to 7 minutes, stirring occasionally until the aromas mellow and the raw smell reduces.
- Step 5: Stir in the ground coriander seeds, shallot paste, and chopped tomato to the pan. Reduce heat to low and gradually add the coconut milk while stirring gently to prevent the sauce from breaking.
- Step 6: Once the coconut milk is fully incorporated and the mixture is simmering gently, 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 until the chicken is cooked through and fragrant. Adjust heat as needed to maintain a gentle simmer without boiling.
- Step 7: Season with salt to taste. Before serving, remove the ginger, galangal, lemongrass, salam, and makrut lime leaves. Serve hot with steamed rice.
Tips & Variations
- Substitute candlenuts with macadamia nuts if unavailable; they add a similar creamy texture.
- If you can’t find kaempferia galanga root, omitting it will still yield a delicious curry.
- For a spicier version, add chopped fresh chili or chili paste along with the shallots.
- Use boneless chicken for quicker cooking, but bone-in pieces add more depth to the flavor.
Storage
Store leftover Opor Ayam in an airtight container in the refrigerator for up to 3 days. Reheat gently on the stovetop over low heat to avoid curdling the coconut milk. This dish can also be frozen for up to 1 month; thaw overnight in the fridge before reheating.
How to Serve

Serve this delicious recipe with your favorite sides.
FAQs
Can I use chicken breasts instead of bone-in pieces?
Yes, boneless chicken breasts can be used, but reduce cooking time to avoid drying them out. Bone-in pieces add more flavor and richness to the curry.
What can I substitute for salam leaves?
If you can’t find salam leaves, bay leaves are a good substitute, though the flavor will be slightly different. They help add a subtle herbal note to the dish.
PrintOpor Ayam (Indonesian Chicken Curry) Recipe
Opor Ayam is a traditional Indonesian chicken curry featuring a fragrant blend of toasted coriander seeds, lemongrass, galangal, and other aromatic spices simmered slowly in creamy coconut milk. This dish offers a rich, mildly spiced flavor perfect for a comforting 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
- Diet: Halal
Ingredients
Spices and Aromatics
- 1/4 cup coriander seeds
- 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
Vegetables and Liquids
- 10 small shallots, sliced
- 1 tomato, chopped (or 1 cup cherry tomatoes)
- 1 8.5-ounce can coconut milk
- 3/4 cup chicken stock
Other
- 3 tablespoons coconut oil
- Kosher salt, to taste
- 3 pounds bone-in chicken pieces
Instructions
- Toast Coriander Seeds: Heat a dry skillet over medium-high heat and toast the coriander seeds for 2 to 3 minutes until fragrant. Remove from heat and let cool, then grind the seeds using a spice grinder to a fine powder.
- Sauté Shallots and Prepare Spice Paste: In a large sauté pan over medium heat, warm 2 tablespoons of coconut oil. Add the sliced shallots and a generous pinch of kosher salt. Cook, stirring often, until the shallots are browned and caramelized, about 10 minutes. Remove shallots and transfer them to a food processor. In the same pan, add garlic cloves and candlenuts; cook while stirring constantly for 2 to 3 minutes until deep golden brown, being careful not to burn. Add these to the shallots in the food processor along with the kaempferia galanga root, white peppercorns, and 2 tablespoons of water. Blend into a smooth paste.
- Cook Aromatics: Heat the remaining 1 tablespoon of coconut oil in the sauté pan over medium heat. Add the ginger, galangal, lemongrass knots, salam leaves, and scrunched makrut lime leaves. Stir occasionally and cook for 5 to 7 minutes until the raw aroma diminishes and the spices release their fragrance.
- Combine Ingredients and Simmer: Stir in the ground coriander powder, the shallot and spice paste, and chopped tomato into the pan with the aromatics. Reduce heat to low and gradually pour in the coconut milk little by little, stirring gently to incorporate and prevent the sauce from breaking. Once fully combined and the mixture starts to gently simmer, add the chicken stock. Nestle the bone-in chicken pieces into the sauce and spoon some sauce over them. Cover the pan and cook on low heat for about 40 minutes, or until the chicken is fully cooked and tender. Adjust heat as needed to maintain a gentle simmer without boiling. Season with salt to taste.
- Finish and Serve: Before serving, remove and discard the galangal, ginger pieces, lemongrass, salam, and makrut lime leaves. Serve the flavorful chicken curry hot, accompanied by steamed rice.
Notes
- If kaempferia galanga root is unavailable, the dish will still be flavorful without it.
- Candlenuts can be substituted with macadamia nuts for a similar creamy texture.
- Ensure the curry simmers gently to prevent the coconut milk from curdling.
- Adjust salt and pepper seasoning to taste towards the end of cooking.
- Scrunching the makrut lime leaves before adding them releases their essential oils and enhances aroma.
- Bone-in chicken pieces are preferred as they add richness and flavor to the curry.
Keywords: Opor Ayam, Indonesian Chicken Curry, Indonesian recipe, coconut milk chicken curry, traditional chicken curry, Southeast Asian cuisine

