Indonesian Cuisine
Opor Ayam (Javanese Chicken in Coconut Milk)
A gentle, aromatic Javanese braise of bone-in chicken simmered in spiced coconut milk with lemongrass, galangal, and candlenut until the sauce turns silky and golden
Opor ayam is the quiet center of the Indonesian table. Where chicken rendang relies on long, aggressive reduction and dark caramelization, opor ayam takes the opposite path. The coconut milk stays pale. The spices stay soft. The sauce remains a gentle braise rather than a dry cling, and the finished dish has a warmth that feels more like a blanket than a bonfire.
The dish belongs to Central Java, where the cooking tends toward sweetness, subtlety, and restraint. It appears at nearly every Lebaran (Eid al-Fitr) gathering across the Indonesian archipelago, served in deep bowls alongside lontong (compressed rice cakes) and sambal. Families prepare large pots the night before celebrations, and the flavor only improves as it sits. The spice paste relies on candlenuts for body, coriander and cumin for warmth, galangal for its piney sharpness, and just enough turmeric to tint the coconut sauce gold without turning it into a full gulai. The result is a curry that tastes deeply coconut-forward, perfumed rather than spiced, closer in spirit to a tom kha gai than to a green curry or a massaman curry.
Hard-boiled eggs are traditional and welcome. They absorb the coconut sauce as they sit, turning creamy inside and lightly spiced on the surface. Serve the opor over steamed rice or alongside nasi uduk (coconut rice) for a pairing that doubles down on coconut in the best possible way.
At a Glance
Yield
4 servings
Prep
20 minutes
Cook
40 minutes
Total
60 minutes
Difficulty
Easy
Ingredients
- 3½ ozshallots (about 5 medium), peeled and roughly chopped
- 4 clovesgarlic, peeled
- 5candlenuts (kemiri), or 8 macadamia nuts as substitute
- 3 cmpiece galangal, peeled and sliced
- 3 cmpiece fresh turmeric, peeled and sliced (or 1 teaspoon ground turmeric)
- 2 cmpiece ginger, peeled and sliced
- 2 tspcoriander seeds
- 1/2 tspcumin seeds
- 3 tbspneutral oil (coconut oil or vegetable oil)
- 1 wholechicken (about 1.2 kg), cut into 8 pieces, or 1.2 kg bone-in chicken pieces (legs, thighs, drumsticks)
- 2 stalkslemongrass, bruised with the back of a knife and knotted
- 2Indonesian bay leaves (salam leaves), or regular bay leaves
- 5makrut lime leaves (kaffir lime leaves), torn with center ribs removed
- 1cinnamon stick (about 5 cm)
- 3⅛ cupwater or unsalted chicken stock
- ⅞ cupfull-fat coconut milk
- 1 tspsalt, plus more to taste
- 1/2 tspsugar
- 1/4 tspground white pepper
- 4hard-boiled eggs, peeled (optional but traditional)
- —Crispy fried shallots (bawang goreng), for serving
Method
- 1
Place the shallots, garlic, candlenuts, galangal, turmeric, ginger, coriander seeds, and cumin seeds in a food processor or blender. Add a splash of water if needed to help the blades catch. Process until you have a fairly smooth paste. If using a mortar and pestle, grind the coriander and cumin seeds first, then add the harder aromatics, and finish with the shallots and garlic.
- 2
Heat the oil in a heavy-bottomed pot or Dutch oven over medium heat. When the oil shimmers, add the spice paste and stir continuously. Cook for 4 to 5 minutes until the raw smell fades and the paste turns fragrant and slightly darker. The kitchen will fill with a warm, toasty aroma and the paste will start to pull away from the oil at the edges.
- 3
Add the lemongrass, bay leaves, makrut lime leaves, and cinnamon stick. Stir for about 1 minute until the leaves become fragrant and the lemongrass releases its citrus scent.
- 4
Add the chicken pieces and turn them in the paste until each piece is evenly coated. Cook for 3 to 4 minutes, turning occasionally, until the surface of the chicken is no longer pink and the spice paste clings to every piece.
- 5
Pour in the water or stock. Add the salt, sugar, and white pepper. Stir to combine and bring to a gentle boil. Reduce the heat to medium-low, partially cover, and simmer for 25 to 30 minutes. The chicken should be tender enough that a skewer slides easily through the thickest part of a thigh, and the liquid should have reduced by roughly a third.
- 6
Stir in the coconut milk and add the hard-boiled eggs if using. Let the braise simmer gently for another 5 minutes, just enough for the coconut milk to warm through and the sauce to take on a pale golden sheen. Do not bring it to a rolling boil after adding the coconut milk, as this can cause the sauce to separate and turn grainy.
- 7
Taste the sauce. It should be gently savory, lightly sweet, and fragrant with lemongrass and galangal. Adjust with more salt if it tastes flat, or a pinch of sugar if the spice balance leans sharp. Remove the lemongrass stalks and cinnamon stick. Ladle the chicken, eggs, and sauce into a serving bowl and finish with a generous scattering of crispy fried shallots.
Key Ingredient Benefits
Candlenuts (kemiri): The traditional thickener for Javanese and Balinese curries. Candlenuts must always be cooked before eating, as they contain mild toxins when raw. They have a waxy, slightly bitter flavor and a very high fat content that emulsifies into sauces. Macadamia nuts or raw cashews are the most common substitutes. If using cashews, the flavor will be slightly sweeter and the sauce marginally thinner.
Coconut milk: Use full-fat coconut milk from a can rather than the refrigerated carton type, which is often diluted and stabilized with gums. Shake the can well before opening. The fat content is what gives opor its characteristic richness. One 400 ml can is more than enough for this recipe, and the remaining coconut milk freezes well for future use.
Galangal: A rhizome related to ginger but with a distinctly different flavor, sharper, more piney, with a subtle menthol quality. Fresh galangal is available at most Southeast Asian grocery stores. It freezes well and can be grated or sliced directly from frozen. Powdered galangal (laos) is a distant substitute. Use 1 tablespoon of powder in place of 3 cm of fresh, but expect a flatter, less vibrant result.
Indonesian bay leaves (salam): These are not the same as European bay laurel, though regular bay leaves are the most practical substitute. Salam leaves have a milder, slightly nutty aroma. They are available dried at Indonesian specialty stores and online. If using regular bay leaves, reduce the quantity to one leaf to avoid overpowering the delicate sauce.
Turmeric: Fresh turmeric gives a brighter, more peppery flavor than ground. It will stain cutting boards, hands, and clothing a vivid yellow. Wear gloves when handling it and use a dedicated cutting board or line your board with parchment. Ground turmeric works but produces a muddier color and a more earthy, less vibrant taste.
Why This Works
Opor ayam builds flavor through a layered aromatics approach rather than through long reduction. The spice paste is fried first in oil, which blooms the fat-soluble compounds in coriander, cumin, and turmeric and drives off excess moisture. Candlenuts play a structural role here. They contain roughly 70% fat by weight and act as a natural thickener, giving the sauce body and a subtle creaminess without any flour or starch. This is the same principle that makes candlenuts essential in many Indonesian curries and that macadamia nuts (the closest Western equivalent in fat content and texture) can approximate.
The coconut milk goes in at the end rather than from the start. This is deliberate. Simmering chicken in water first allows the collagen and gelatin from the bones to dissolve into the broth, creating a richer, more full-bodied liquid base. When the coconut milk joins this seasoned broth in the final minutes, it emulsifies into a sauce that tastes layered rather than one-dimensional. If the coconut milk simmered for the full cooking time, the fat would separate, the proteins would curdle, and the sauce would lose its smooth, velvety texture.
The combination of galangal, lemongrass, and makrut lime leaves creates what Indonesian cooks sometimes call the "trinity" of aromatic freshness. Each contributes a different citrus-adjacent note: galangal is piney and sharp, lemongrass is bright and grassy, and makrut lime is floral and resinous. Together they prevent the rich coconut from feeling heavy.
Substitutions & Variations
Protein: Bone-in, skin-on chicken pieces produce the best flavor and texture. Boneless thighs work if you prefer, though the sauce will be slightly less rich without the gelatin from the bones. Reduce the simmering time to 15 to 20 minutes for boneless cuts. Duck is a traditional Javanese alternative and stands up well to the longer braising time. For a vegetarian version, use firm tofu and tempeh, adding them with the coconut milk so they do not overcook.
Opor ayam kuning (yellow opor): Some Javanese cooks add more turmeric (up to 2 teaspoons ground) and include ground white pepper more generously to create a deeper golden color. The Cook Me Indonesian version also includes a cinnamon stick and omits the cumin, resulting in a sweeter, more aromatic profile.
Instant Pot method: Saute the spice paste as described. Add chicken, 500 ml stock, seasonings, lemongrass, and leaves. Cook on high pressure for 12 minutes with a 5-minute natural release. Stir in coconut milk and eggs after releasing pressure, using the residual heat to warm them through.
Richer sauce: For a thicker, more luxurious sauce, use 400 ml coconut milk instead of 200 ml and reduce the water to 500 ml. The result will be closer to a coconut gravy than a brothy braise. Some versions add a tablespoon of coconut cream at the very end for extra richness.
Spice adjustments: If you cannot find candlenuts or macadamia nuts, use 30 g of raw cashews. If fresh galangal is unavailable, use 1 tablespoon of galangal powder. For a slightly richer spice profile, add 2 whole cloves and 2 green cardamom pods with the cinnamon stick.
Serving Suggestions
Steamed jasmine rice is the everyday pairing, and the pale golden sauce soaks beautifully into the grains. For a traditional Lebaran spread, serve the opor alongside lontong (compressed rice cakes), sambal goreng ati (spiced liver), and perkedel kentang (potato fritters). Nasi uduk (coconut-steamed rice) is a natural companion that echoes the coconut in the sauce without competing with it. A simple cucumber and tomato salad dressed with a squeeze of lime and a pinch of salt provides freshness against the richness. For a broader Southeast Asian table, opor ayam pairs well with tom kha gai as a study in contrasts between two coconut-based chicken dishes, or serve it alongside massaman curry to explore how different spice traditions treat coconut milk. A bowl of gulai ayam next to a bowl of opor makes the distinction between the two Sumatran and Javanese approaches to coconut curry immediately clear.
Storage & Reheating
Refrigerator: Store in an airtight container for up to 4 days. Opor ayam improves significantly overnight as the spices continue to permeate the chicken and the sauce thickens slightly from the gelatin. Keep the rice separate.
Reheating: Warm gently in a saucepan over medium-low heat, stirring occasionally to prevent the coconut milk from scorching on the bottom. Add a splash of water if the sauce has thickened too much. Avoid bringing it to a hard boil, which can cause the coconut milk to break. Microwave reheating works but may cause some separation in the sauce.
Freezing: The braise freezes well for up to 2 months without the eggs, which become rubbery when frozen. Thaw overnight in the refrigerator and reheat gently on the stovetop, stirring in a splash of fresh coconut milk to restore the sauce's body.
Nutrition Facts
Calories: 697kcal (35%)|Total Carbohydrates: 4g (1%)|Protein: 44g (88%)|Total Fat: 53g (68%)|Saturated Fat: 18g (90%)|Cholesterol: 260mg (87%)|Sodium: 620mg (27%)|Dietary Fiber: 1g (4%)|Total Sugars: 2g
You Might Also Like
Ratings & Comments
Ratings & Comments
Ratings
Share your thoughts on this recipe.
Sign in to rate and comment


