Sate Ayam — Chicken Satay with Peanut Sauce
Grilled chicken skewers over glowing charcoal, served with a thick peanut sauce that's more complex than any Western "satay sauce" you've had. This is Malaysian-style satay — specifically the Kajang tradition, from the small town 20 minutes south of Kuala Lumpur that's considered the satay capital of Malaysia. Sweet, smoky, deeply spiced, served with cucumber, red onion, and squares of woven-leaf rice cake (ketupat). Eat with your hands. The peanut sauce is the star.
Real Malaysian satay is a specific thing, and it's mostly not what you get in Western restaurants. Real satay has: marinated chicken (not chicken tossed in sauce), grilled over open charcoal (not a broiler, not a pan), served with a thick peanut sauce that's had actual peanuts pounded into it (not the smooth peanut butter goop of Western "satay sauces"), and accompanied by ketupat (rice cakes wrapped in woven coconut leaves that steam into dense, sliceable squares). All four components — meat, marinade, grill, sauce, ketupat — are essential to real satay. Get any of them wrong and you've made something else.
This recipe follows the Kajang tradition — from the small town 20 kilometers south of Kuala Lumpur that's considered the satay capital of Malaysia. Kajang satay stalls (dozens of them, in a single central satay street) draw crowds from KL every weekend. The Kajang style emphasizes: a turmeric-lemongrass-coriander marinade for the chicken, basting with kecap manis and oil during grilling for the classic caramelized dark exterior, a peanut sauce with visible peanut chunks (never smooth), and dark tamarind for the sauce's sweet-tangy backbone. This is the reference standard for Malaysian satay.
Satay in Malaysian and Indonesian food culture
Satay (also spelled sate in Indonesia) is one of Southeast Asia's most beloved street foods and appears in dozens of regional variations across the Muslim archipelago. Sate Padang (West Sumatra) uses a thick yellow sauce made from rice flour and turmeric, no peanuts. Sate Madura (East Java) uses a peanut sauce heavy with kecap manis and shallots. Sate Lilit (Bali) wraps ground meat around lemongrass stalks. Sate Kajang (Malaysia) is our reference — turmeric-marinated chicken, peanut sauce with tamarind. Sate Kambing (mutton/goat, popular across the region). Every Muslim-majority region of Indonesia and Malaysia has a satay tradition; each is distinct.
Culturally, satay is celebration food and street food simultaneously. Wedding celebrations, Hari Raya (Eid al-Fitr) family gatherings, and traditional Malay kenduri (community feasts) always feature satay — often hundreds of skewers grilled by dedicated satay cooks. Street vendors, called penjaja sate, set up portable charcoal grills on busy streets, fanning the coals with woven fans, calling out to customers, grilling skewers 8-10 at a time. The universal serving of ketupat (rice cakes) alongside is a Ramadan/Hari Raya tradition — ketupat symbolizes forgiveness and community, and its four-corner woven-leaf structure has deep Malay cultural meaning. Eating satay by hand, dipping in peanut sauce, tearing off ketupat, is one of the most fundamental Malay eating experiences.
Ingredients
The chicken
| 800 g | boneless chicken thighs — cut into 2cm cubes; thigh is essential — breast dries out during grilling; halal-slaughtered |
The marinade paste (blend to smooth)
| 3 stalks | lemongrass — bottom 10cm only, finely chopped |
| 6 | shallots (small red) — peeled |
| 4 cloves | garlic — peeled |
| 3 cm | fresh turmeric — peeled; or 2 tsp ground turmeric |
| 3 cm | fresh ginger — peeled |
| 1 tsp | ground coriander — toasted whole seeds ground fresh are best |
| 1/2 tsp | ground cumin |
| 1/2 tsp | ground fennel — adds the classic satay perfume |
| 2 tbsp | palm sugar (gula melaka) — or dark brown sugar |
| 1 tbsp | kecap manis — Indonesian/Malaysian sweet soy sauce |
| 1 tsp | salt |
| 3 tbsp | vegetable oil |
The basting sauce (for grilling)
| 3 tbsp | vegetable oil |
| 2 tbsp | kecap manis |
| 1 stalk | lemongrass — bruised, for use as a basting brush (traditional) |
The peanut sauce (kuah kacang) — the star
| 300 g | raw peanuts — roasted at home for freshest flavor; or 250g roasted unsalted peanuts |
| 4 cloves | garlic |
| 5 | shallots |
| 4 | dried red chilies — soaked in hot water 15 min, drained |
| 2 cm | galangal |
| 1 stalk | lemongrass — bottom only, chopped |
| 1 tsp | shrimp paste (belacan) — toasted; optional but adds depth |
| 3 tbsp | vegetable oil — for frying paste |
| 3 tbsp | tamarind paste — or 3 tbsp tamarind pulp soaked in warm water and strained |
| 3 tbsp | palm sugar — or dark brown sugar; adjust to taste |
| 1.5 cups | water — adjust for consistency |
| 1/2 cup | coconut milk — optional, for richer sauce |
| 1 tsp | salt — adjust to taste |
For serving (traditional Malaysian arrangement)
| 8-10 | ketupat (compressed rice cakes) — sold at Asian groceries, or substitute with plain steamed rice |
| 1 | cucumber — cut into 2cm cubes |
| 1 | red onion — cut into wedges |
Skewers
| 24-30 | bamboo skewers — soaked in water 30 min before threading (prevents burning) |
Equipment
- Charcoal grill (essential for authentic flavor) OR heavy cast-iron grill pan preheated very hot
- Blender or food processor for marinade and peanut sauce
- Bamboo skewers (thin, 20-25cm long) — soaked in water 30 minutes before use
- Mortar and pestle (traditional for pounding peanuts and paste)
- Small saucepan for the peanut sauce
- Woven fan or hand-held fan (traditional for tending charcoal — optional but real)
Method
Satay is a project meal — plan for 3 hours from start to plate (including the 2-hour marinade). The chicken marinade and peanut sauce can both be made the day before. Grilling itself is fast (10-15 minutes over hot charcoal). Real Malaysian satay is grilled over charcoal — a cast-iron grill pan is the closest home substitute. Do not use a broiler or non-stick pan.
Marinate the chicken (t=0, 2 hours ahead)
-
01
Blend the marinade paste
In a blender, combine chopped lemongrass, shallots, garlic, fresh turmeric, ginger, coriander, cumin, fennel, palm sugar, kecap manis, salt, and vegetable oil. Blend to a smooth paste (add 1-2 tbsp water if needed to help blending).
-
02
Marinate the chicken
In a large bowl, combine the cubed chicken thighs with the marinade paste. Mix well so every piece is coated. Cover and refrigerate for AT LEAST 2 hours — ideally 4-6 hours or overnight. Longer marinades produce more flavorful satay.
Make the peanut sauce (t=0, can be done in parallel with marinating)
-
03
Roast the peanuts
If using raw peanuts: spread on a baking sheet and roast at 175°C/350°F for 15-20 minutes, tossing occasionally, until fragrant and golden. Rub between two clean tea towels to remove most of the skins (some skin is fine). Cool completely. If using pre-roasted unsalted peanuts: skip this step.
-
04
Process the peanuts (not too fine)
In a food processor, pulse the roasted peanuts until they are chopped to a rough texture — mostly finely chopped with some small chunks visible. Do NOT make peanut butter — you want visible peanut pieces in the finished sauce. Traditional Malaysian cooks pound peanuts in a stone mortar for authentic chunky texture.
-
05
Blend the sauce paste
In the same food processor (or blender), combine garlic, shallots, soaked and drained dried chilies, galangal, lemongrass, and toasted belacan (if using). Blend to a smooth paste with 2-3 tbsp water.
-
06
Fry the paste, add the peanuts
In a medium saucepan, heat 3 tbsp vegetable oil over medium heat. Add the paste and fry, stirring frequently, for 3-4 minutes until fragrant and the raw smell is gone. Add the chopped peanuts and stir to combine. Cook another 2 minutes.
-
07
Add liquids and simmer
Add tamarind paste, palm sugar, salt, and 1.5 cups of water. Bring to a gentle simmer. Cook, stirring often, for 15-20 minutes until the sauce thickens and the oil starts to separate on top. Add coconut milk if using and stir in. Taste and adjust: needs more sweetness (add palm sugar), more sour (add tamarind), more salt (add salt), thinner (add water). Set aside — the sauce will thicken further as it cools.
Prepare the ketupat (t=2h)
-
08
Prepare the ketupat
If using pre-made ketupat: reheat in boiling water for 5 minutes, then slice into 3cm squares. If using rice cake substitutes: cook plain long-grain rice, press firmly into a small square baking dish, refrigerate 2 hours, then slice into 3cm cubes. Traditional ketupat has a specific dense texture from being cooked inside a woven coconut-leaf pouch; store-bought is the practical option.
Thread and grill (t=2h 30min)
-
09
Thread the skewers
Take the marinated chicken from the fridge. Thread 4-5 pieces of chicken onto each pre-soaked bamboo skewer, packed tightly together (not spaced out). You should have 24-30 skewers. Any leftover marinade can be added to the basting sauce.
-
10
Prepare the basting sauce
In a small bowl, combine 3 tbsp vegetable oil, 2 tbsp kecap manis, and any leftover marinade. Traditional Malaysian cooks tie a bruised lemongrass stalk into a small brush to baste with — the lemongrass adds fragrance as it bastes. A regular pastry brush works fine.
-
11
Get the grill hot
Charcoal grill: light coals well in advance; grill should be glowing hot with a light layer of white ash. Cast-iron grill pan: preheat over high heat for 5 minutes until nearly smoking. The pan/grill must be VERY hot before the skewers touch it.
-
12
Grill fast and baste
Place skewers on the grill in a single layer. Grill for 2-3 minutes per side. Every time you turn, brush the top with the basting sauce (this creates the classic caramelized dark exterior). Total cook time: 8-12 minutes depending on cube size. Chicken should be cooked through but still juicy. Do not overcook — chicken thigh at 74°C/165°F internal is done.
-
13
Rest briefly
Remove skewers to a plate and let rest 2-3 minutes before serving. The chicken continues cooking slightly and juices redistribute.
Serve traditionally (t=2h 45min)
-
14
Plate the satay Kajang-style
For each serving: arrange 4-5 chicken skewers on a plate or banana leaf (traditional). Place a small bowl of peanut sauce beside the skewers. Add cubes of ketupat (or plain rice) on one side. Arrange cucumber cubes and red onion wedges on the other side. Serve with extra peanut sauce for dipping.
-
15
Eat with your hands
Traditional Malaysian style: pull chicken pieces off the skewer with your teeth (or your fingers), dip into the peanut sauce, alternate bites with ketupat, cucumber, and red onion. The peanut sauce is meant to be liberally applied. Some traditional eaters dip the whole skewer into the sauce and pull the meat off.
Satay — technique from a Kuala Lumpur kitchen
- Use chicken thigh, not breast. Breast dries out over open flame; thigh stays juicy. This is a firm rule of grilled chicken satay.
- Marinate at least 2 hours, ideally overnight. The turmeric-lemongrass-coriander paste needs time to penetrate. Rushed marinades produce flat-tasting satay.
- Charcoal is the whole point. Real satay flavor requires charcoal grilling — the smoke and dry heat are what create the classic Malaysian satay taste. Cast-iron grill pan is the best home substitute; anything else (broiler, oven, non-stick pan) misses the fundamental character.
- Baste while grilling. The kecap-manis-oil basting sauce creates the characteristic dark caramelized exterior of proper satay. Baste every time you turn the skewer.
- Do not thread the chicken too loosely. Pieces should be pressed together on the skewer — this keeps them juicy. Loose pieces cook too fast and dry out.
- Pound peanuts, don't puree them. Real Malaysian peanut sauce has visible chopped peanut pieces throughout. Smooth peanut sauce (like Western "satay sauce") is a compromise. Use a food processor with pulses, not continuous run.
- Tamarind is what makes it Malaysian. Peanut sauce without tamarind is Indonesian sate Padang style or Thai satay sauce. Malaysian sauce needs the sweet-sour tamarind backbone.
- Ketupat is essential, not garnish. The dense compressed rice absorbs peanut sauce beautifully and provides textural contrast to the meat. Real ketupat is worth seeking out; store-bought versions are sold at Asian groceries as vacuum-packed squares.
Halal notes
- Chicken must be halal-slaughtered (zabihah). Whole chicken thigh from your halal butcher is ideal.
- Kecap manis, palm sugar, spices, peanuts, herbs: all naturally halal.
- Belacan (shrimp paste): naturally halal (fermented shrimp + salt).
- Coconut milk: naturally halal.
- Some commercial ketupat pouches contain non-halal preservatives — check labels or buy from halal-certified Malaysian brands.
- Some Western "satay sauces" contain wine or animal-derived stabilizers — never buy pre-made; always make peanut sauce from scratch.
- Traditional Malay Muslim satay contains no alcohol or non-halal ingredients — this is a naturally halal dish.
Substitutions
| Original | Substitute |
|---|---|
| Boneless chicken thighs | Bone-in chicken thighs (remove bones after cutting); halal lamb or beef (adjust cook time) |
| Fresh lemongrass | Frozen lemongrass; dried lemongrass (inferior); 1 tbsp lemon zest as last resort |
| Fresh turmeric | 1 tsp ground turmeric; skip if unavailable |
| Fresh galangal | Frozen galangal; skip (do NOT substitute ginger) |
| Kecap manis | 3 tbsp dark soy sauce + 2 tbsp palm sugar + 1 tsp molasses (imperfect) |
| Palm sugar (gula melaka) | Dark brown sugar; jaggery; muscovado |
| Ketupat | Plain steamed rice pressed into cubes; jasmine rice; skip and serve with rice on the side |
| Charcoal grill | Cast-iron grill pan preheated very hot; last resort: broiler set to high |
How to serve
- Kajang-style: skewers laid on banana leaf, peanut sauce in small bowl, ketupat cubes, cucumber cubes, red onion wedges arranged around the plate.
- Malaysian street-vendor style: skewers stacked on a small plate, peanut sauce dolloped over top, ketupat pieces to the side, eaten standing at the cart.
- For a full Malaysian meal: satay + nasi lemak (coconut rice) + sambal + fresh vegetables.
- With Indonesian sate accompaniments (regional variation): fried shallots sprinkled over the peanut sauce, sliced tomato, lime wedge.
- For Hari Raya (Eid al-Fitr): serve 100+ skewers at a family gathering — the traditional Eid feast in Malay households.
- With hot Malaysian teh tarik (pulled tea) or teh manis (sweet tea) to cut the richness.
- Followed by fresh fruit (mangosteen, rambutan, dragonfruit) — traditional Malaysian palate cleanser.
Storage & make-ahead
Chicken satay is best eaten immediately off the grill. Uncooked marinated chicken keeps 2 days in the fridge, or freeze 3 months (thaw overnight before grilling). Peanut sauce keeps 1 week refrigerated in an airtight container; freezes 3 months. Reheat peanut sauce gently over low heat with a splash of water if it thickens too much. Grilled satay reheats poorly (chicken dries out); leftover skewers can be reheated 30 seconds in a hot dry pan, but plan to eat fresh when possible. Ketupat keeps 3 days refrigerated; slice fresh before serving.
Nutrition per serving
Frequently asked
Both are the same fundamental dish (marinated grilled meat skewers with peanut sauce), but regional traditions differ significantly. Malaysian satay (especially Kajang-style): turmeric-lemongrass marinade, kecap manis basting during grill, peanut sauce with tamarind, served with ketupat. Indonesian sate Madura: sweeter marinade, peanut sauce heavier on kecap manis and shallots, served with lontong (banana-leaf rice logs). Indonesian sate Padang (West Sumatra): NO peanut sauce — uses a thick yellow rice-flour and turmeric sauce instead. Indonesian sate ayam Yogyakarta: sweeter, milder, served with fried shallots. Malaysia and Indonesia both have deep satay traditions; each region has distinct standards.
The small town of Kajang, 20km south of Kuala Lumpur, developed a distinctive satay tradition in the 1940s-1950s when Malay migrants from Java (particularly Madurese immigrants) settled there and combined their Indonesian sate techniques with local Malaysian tastes. By the 1980s, Kajang had dozens of family-run satay stalls in one central area (still known as "Satay Kajang"), each with slightly different family recipes but sharing the turmeric-marinade + tamarind-peanut-sauce technique. Weekend trips from KL to Kajang for satay became a tradition; today, tourists and locals still queue for hours at the most famous stalls (Haji Samuri, Sate Bahromi, Kajang Satay Restaurant). The Kajang style became the reference standard for Malaysian satay through this tradition.
You can, but it's inferior. Chicken breast has less fat and dries out quickly over the high heat of grilling — thigh stays juicy because its higher fat content bastes the meat from within during cooking. If you must use breast, cut it into slightly larger cubes (2.5cm instead of 2cm), marinate longer (6+ hours), and grill for less time (2 minutes per side). Every experienced Malaysian satay cook uses thigh. Breast is a Western compromise.
Ketupat is compressed rice cake — long-grain rice cooked inside a small pouch woven from young coconut leaves. As the rice cooks, it swells and fills the pouch tightly, producing a dense, compressed square of rice that can be sliced into neat cubes. Ketupat is essential to Malay Ramadan and Hari Raya (Eid al-Fitr) tradition — it symbolizes forgiveness and community, and the four-corner woven-leaf structure has deep cultural meaning. For everyday satay, ketupat is highly recommended but not strictly required — plain rice works as a substitute. For special occasions (Ramadan iftar, Hari Raya, weddings), ketupat is non-negotiable.
Tamarind provides the sweet-sour backbone that defines Malaysian peanut sauce and distinguishes it from Thai peanut sauces (which use fish sauce and lime for acidity) and Indonesian sate Madura sauce (which uses more kecap manis and less acid). Without tamarind, Malaysian peanut sauce tastes flat and one-note. If you cannot find tamarind paste, use tamarind pulp soaked in warm water and strained. Lime juice is a poor substitute — different flavor profile. Rice vinegar is closer but still not right.
Belacan (also called terasi in Indonesia) is fermented shrimp paste — small block of intensely pungent, fermented, dried shrimp. Sold at Asian groceries in small blocks or blocks wrapped in cellophane. Adds deep umami to Malaysian peanut sauce and countless other dishes. Toasting it before use (wrap in foil and dry-pan-toast 30 seconds per side) mellows the raw ferment smell. Optional in peanut sauce — you can skip it and the sauce will still be delicious — but adding it takes the sauce from good to authentic. Highly recommended if you can source it.
Yes, with compromises. Best home substitute: cast-iron grill pan preheated over high heat for 5+ minutes until nearly smoking. Grill the skewers as if on real charcoal — 2-3 minutes per side, basting between turns. The pan needs to be VERY hot. Alternative: broil (grill from above in the oven) on the highest setting with skewers 10cm from the heat element, rotating regularly. Both approaches produce good satay; neither matches real charcoal for smoky depth. If you have any access to a charcoal grill (even a small tabletop hibachi), use it — the difference is significant.