Rasa Nusantara
a cookbook of seventeen
thousand islands.

Fifteen recipes drawn from Padang kitchens, Banyumas tempeh pans, Madurese charcoal grills, Bandung roadside carts and the meatball stalls of Java — printed here in one slim, well-spiced volume.

Printed on warm paper  ·   Set in Fraunces & Newsreader
Edition of one  ·   Pages ix + 96
Anjuran — read with a cup of kopi tubruk.

Indonesia does not cook with one voice. Sumatran kitchens reduce coconut milk for hours until it turns oil-black; Javanese ones lean on palm sugar, soy and the slow patience of gulai; Sundanese cooks worship freshness — raw greens, a pestle of sambal, rice still steaming. Bali grinds spice paste with lemongrass and lime leaf and wraps it around fish. Bandung deep-fries everything.

What unites these tables is not technique, nor even a shared ingredient — it is a relationship to heat. The chilli, the charcoal, the deep wok, the patient stockpot. Smoke that hangs in the warung's bamboo rafters. The quick fry of a tempeh, half-cooked on purpose. The long, dark wedding of beef and coconut that eventually becomes rendang.

The fifteen recipes that follow are not the whole story; they are an opening. Cook one a week and you will have eaten Indonesia for almost four months. Cook them in order and you will have crossed Sumatra, Java, Bali and back. Cook them out of order — which is, of course, how anyone actually cooks — and you will simply have eaten very well.

The Index

Contents, arranged
by hunger.

№001 — №015
  1. № 001Nasi Goreng fried rice, after midnight12
  2. № 002Nasi Padang the Minang table18
  3. № 003Sroto Purbalingga peanut sroto from Banyumas24
  4. № 004Mendoan half-cooked tempeh29
  5. № 005Sop Durian a dessert soup32
  6. № 006Sate Ayam Madura chicken skewers36
  7. № 007Bakso meatballs, very clear broth42
  8. № 008Bubur Ayam a Jakarta breakfast48
  9. № 009Sate Lilit Balinese satay on lemongrass54
  10. № 010Nasi Pecel vegetables, peanut sauce60
  11. № 011Ketoprak a Jakarta cart classic66
  12. № 012Tahu Telur tofu omelette, Surabaya72
  13. № 013Cilok tapioca balls on a stick76
  14. № 014Rendang the long dark cook82
  15. № 015Seblak Bandung, after school90
A plate of nasi goreng kampung topped with a fried egg.
№ 001 Nasi goreng kampung, after midnight. — Photograph by shankar s., CC BY 2.0.
001
Java  /  Indonesia

Nasi Goreng

Fried rice, eaten at any hour — especially the small ones.

Serves
2
Time
25 min
Difficulty
Easy
Region
Java-wide

No dish travels through the night quite like nasi goreng. It is what the warung makes when the rice is yesterday's, when the wok is already hot, when the last of the sweet soy is in the bottle. It is what a Jakarta street-cook ladles onto a plate at one in the morning while a moped engine cools beside the cart. The trick is not in the ingredients — every household has a different version — but in the heat: high, fast, never crowded.

Use cold rice. Day-old rice from the fridge is non-negotiable; freshly steamed grains will steam, not fry. Pound your spice paste, do not blend it — a mortar bruises shallot and garlic differently, and the wok will know.

Kecap manis is to nasi goreng what soy sauce is to fried rice everywhere else — except that it is also sugar, and molasses, and a small religion. — A warung cook, Yogyakarta

Finish with a fried egg whose yolk is still loose, a snow of fried shallots, sliced cucumber, tomato wedges, and a few sheets of kerupuk shattered over the top. Sambal on the side — never on top. Eat with a spoon.

Chef's note

If your kecap manis is thin, simmer it with a thumb of palm sugar for two minutes and let it cool — it will glaze the rice like lacquer.

A Padang-style plate set with rendang, sambal, and small bowls.
№ 002 A Padang spread — many bowls, one rice. — Photograph by D.W. Fisher-Freberg, CC BY-SA 4.0.
002
West Sumatra  /  Padang

Nasi Padang

Not a dish, but a table — the Minang spread of many small bowls.

Serves
4–6
Time
3+ hours
Difficulty
Project
Region
Minangkabau

Walk into a rumah makan Padang anywhere from Bukittinggi to Rotterdam and the same theatre unfolds: a waiter approaches the table balancing twelve, fifteen, twenty small plates up his arms like a pianist's chord. He sets them all down. You eat what you touch; the rest is taken away and you pay only for what you ate. The food does not arrive — it is unfurled.

At its heart is a mound of steamed rice. Around it: the obligatory rendang (see №014), a green chilli sambal hijau the colour of new tea leaves, a brothy gulai of leafy greens, a piece of fried fish, perhaps ayam pop — pale poached chicken with a brick-red sambal, and a ladle of curry sauce poured greedily over the rice. The Minang refer to this last act as kuah disiram, "the sauce is bathed on."

At a Padang table you do not order food. You order rice. Everything else is the negotiation.

Below is the abbreviated version: a single Padang plate to assemble at home. Make the rendang the day before. Today you will only need to fry, blend, and arrange.

Chef's note

A Padang plate is judged by its sambal first. If your green sambal does not bite you back, add another chilli; do not add salt.

A bowl of soto, golden with turmeric.
№ 003 Sroto Purbalingga, the peanut soto of Banyumas. — Photograph by Gunawan Kartapranata, CC BY-SA 3.0.
003
Central Java  /  Banyumas

Sroto Purbalingga

The Banyumas-dialect name for soto — the only one served with a peanut sauce.

Serves
4
Time
1 h 30 min
Difficulty
Medium
Region
Banyumas

Every region of Java has a soto, and every soto is a slight argument with the others. In Purbalingga and across the Banyumas regency the word itself changes — locals call it sroto, with the small but insistent r of the dialect. The dish, too, departs from the others: it ends with a spoonful of peanut-and-chilli sauce stirred into the bowl at the last second. The broth turns rust-orange. The whole soup gains weight.

It is a beef-and-chicken broth, golden with turmeric, served over pressed rice cakes (ketupat) with beansprouts, fried shallots, scallion, and rice noodles. The peanut sauce is similar to a gado-gado dressing but thinner, brighter, less sweet. A traditional bowl also receives a few squares of crisp kerupuk on top, which collapse luxuriously into the soup.

A bowl of sroto travels well; the peanut sauce is added at the table, never in the pot.

Sokaraja, ten kilometres east of Purbalingga, claims a near-identical version called sroto Sokaraja; the two have argued amiably for decades over which one was first. We side, gently, with neither.

Chef's note

For a Sokaraja-style bowl, look for kerupuk merah — bright pink prawn crackers. They are decorative and structural; do not skip them.

A platter of mendoan, soft half-fried tempeh.
№ 004 Mendoan, half-fried tempeh, still warm. — Photograph by Hersy Ardianty A., CC BY-SA 4.0.
004
Central Java  /  Banyumas

Mendoan

Half-fried tempeh, soft in the middle, eaten while still snapping.

Serves
2–3
Time
20 min
Difficulty
Easy
Region
Banyumas

Mendoan is the most counter-intuitive thing in Indonesian frying: tempeh battered, dropped briefly into hot oil, and pulled out before it is fully cooked. The word itself, in Banyumas Javanese, means "half-done." The skin is barely set; the inside is still tender, almost custardy from the nutty soy paste of the tempeh. You eat it at a roadside stall in Purwokerto, dipped in soy sauce with a sliced bird's-eye chilli floating in it, between two cups of tea.

The batter is rice flour with turmeric and ground coriander, fragrant with garlic and minced scallion. The tempeh must be very thin — proper mendoan tempeh is sold in wide, paper-thin sheets specifically for this dish.

Mendoan is not crispy. If it is crispy, you have made tempe goreng. They are different foods.

Chef's note

If your tempeh sheets aren't paper-thin, butterfly each piece — a 3 mm slice opens to a 1.5 mm sheet, which is exactly what mendoan wants.

Cracked-open durian fruit showing its golden flesh.
№ 005 The king of fruits, before its bath of ice and coconut. — Photograph by shankar s., CC BY 2.0.
005
North Sumatra  /  Medan

Sop Durian

The dessert soup of the king of fruits.

Serves
4
Time
15 min
Difficulty
Easy
Region
Sumatra

In Medan, at the night markets behind the cathedral, vendors keep two things on the counter: ripe durian, and shaved ice. From these and a few small additions emerges sop durian — a sweet soup that is half-dessert, half-shock. Flesh from a generously ripe durian is set in the bottom of a tall glass, drowned in chilled coconut milk sweetened with palm sugar and scented with pandan, then topped with shaved ice. Black glutinous rice or jellies are optional accomplices.

It is not a recipe in the technical sense — it is an assembly. The difficulty is entirely upstream: locating a durian that is properly ripe, neither stringy nor sour, and convincing it to give you its flesh whole.

Durian smells of everything and tastes of itself; here, ice and coconut play the chorus to its single, very loud aria.

Chef's note

If durian is not at the market, this recipe works almost as well with very ripe mango or jackfruit — the texture is different but the assembly is right.

Skewers of grilled chicken satay with peanut sauce.
№ 006 Sate ayam, lacquered over charcoal. — Photograph by Ardfeb, CC BY-SA 4.0.
006
East Java  /  Madura

Sate Ayam

Charcoal chicken skewers with a peanut sauce that has weight.

Serves
4
Time
45 min + marinade
Difficulty
Medium
Region
Madura

A Madurese satay seller arrives at his corner of a city — Surabaya, Malang, Jakarta — with a small bamboo fan, a long brazier, a tin of skewers, and a bottle of kecap manis. He fans, the coals glow, the bird begins to char. By the time the skewers are turned, the air around him is sweet, smoky, slightly stinging. He sells them in tens, on a banana leaf, beside a heap of pressed rice cakes (lontong) and a brown pool of peanut sauce.

Marinate the chicken not for tenderness — thigh handles fire on its own — but for flavour. Kecap manis caramelises onto the skewer; the meat takes a lacquer. The peanut sauce is its own affair: pounded roasted peanuts, kecap manis, garlic, fried shallot, a whisper of lime.

A Madurese satay seller does not call. He fans. The smell calls.

Chef's note

Charcoal is non-negotiable. A gas flame will cook chicken; only embers will give satay its proper, smoke-shadowed sweetness.

A bowl of bakso with meatballs, noodles and clear broth.
№ 007 Bakso, with noodles and a very clear broth. — Photograph by christian r, CC BY-SA 2.0.
007
Java  /  Chinese-Indonesian

Bakso

Beef meatball soup. A bell rings; a cart appears.

Serves
4
Time
1 h 30 min
Difficulty
Medium
Region
Java-wide

A bakso seller pushes a wooden cart through residential streets at dusk, banging a porcelain bowl with a spoon — tok, tok, tok — and within half a block, six children are at his elbow asking for a portion. The bowl: a clear beef broth, a knot of yellow noodles, two or three pale meatballs the size of small clementines, a square of fried tofu also stuffed with meatball mix, a sliced wonton, beansprouts, scallion, fried shallots. A spoon of sambal, a drizzle of black soy. Eat fast, before the broth cools.

The meatballs are the work. They are pounded — not minced, pounded — until the meat becomes a paste, with tapioca starch and ice water folded in so they remain bouncy and pale. A cook in Solo will tell you, gravely, that the bounce of a bakso is its honesty.

A meatball that does not bounce when dropped is a meatball that has lied about its ingredients.

Chef's note

Every step that is cold should stay cold. Warm meat absorbs starch unevenly and the bakso will turn floury — the enemy of bounce.

A bowl of chicken porridge with toppings.
№ 008 Bubur ayam, before the city wakes. — Photograph by Sakurai Midori, CC BY 3.0.
008
Java  /  Jakarta

Bubur Ayam

Rice porridge, eaten at first light from a passing cart.

Serves
4
Time
1 h
Difficulty
Easy
Region
Java-wide

Before Jakarta wakes up, the bubur sellers are already on their corners. They cook the porridge overnight on a low flame so that by 5 a.m. the rice has dissolved entirely — what they ladle out is a soft, glossy white. Onto it goes shredded poached chicken, sliced scallion, fried shallots, soybeans, kerupuk, a length of crisp cakwe (Chinese fried dough), a drizzle of soy sauce, a spoon of yellow chicken jus, a smudge of sambal.

The question of whether to stir the bubur or eat it in layers is, in Jakarta, a question with two factions. Diaduk (stirred) belongs to the practical. Tidak diaduk (not stirred) belongs to the romantic. There is no third position.

Bubur is the only Indonesian breakfast eaten standing up; everyone is in a hurry.

Chef's note

If you cannot find cakwe (youtiao in Chinese bakeries), a thick slice of grilled sourdough, oiled and crisp at the edges, will keep the textural promise.

Balinese minced fish satay wrapped on lemongrass stalks.
№ 009 Sate lilit, wound around lemongrass. — Photograph by okezone.com, CC BY-SA 4.0.
009
Bali

Sate Lilit

Spiced minced fish, wrapped around a stalk of lemongrass.

Serves
4
Time
45 min
Difficulty
Medium
Region
Bali

Where Madurese satay is meat threaded onto a skewer, Balinese sate lilit is the inverse: the satay becomes the skewer. Minced fish (sometimes chicken, sometimes pork on the Hindu island) is bound with a thick yellow spice paste (base genep) and grated coconut, then moulded around the woody bottom of a lemongrass stalk. Grilled over coconut husks, the lemongrass perfumes the meat from inside.

It is served at temple festivals on small bamboo plates with rice and a few sambals — sambal matah (raw shallot, lemongrass, chilli, lime, coconut oil) being the proper accompaniment.

A skewer of sate lilit is, structurally, an entire Balinese kitchen — paste, coconut, fish, lemongrass — collapsed onto a stick.

Chef's note

If lemongrass stalks are not stout enough, use them in pairs, side by side; the moulded fish will hold them together as it cooks.

A plate of nasi pecel with rice, vegetables, and peanut sauce.
№ 010 Sego pecel — blanched greens, a peanut sauce. — Photograph by Evan Ilham Pasha, CC BY-SA 4.0.
010
East Java  /  Madiun, Kediri

Nasi Pecel

Rice, blanched greens, and a peanut sauce that does the work.

Serves
4
Time
30 min
Difficulty
Easy
Region
East Java

Pecel is the salad of East Java — though calling it salad short-changes the sauce. A platter of blanched water spinach, beansprouts, long beans, cabbage, perhaps the tendril of a young papaya leaf, is heaped beside steamed rice and a few crisp rempeyek — peanut-studded rice crackers. Over the lot goes a thick, tan-coloured peanut sauce, spiked with kaffir lime leaf and tamarind. It is breakfast in Madiun, lunch in Kediri, and a virtuous late dinner anywhere.

The trick is to not dress the vegetables in the kitchen. Serve everything separate; let each eater pour their own sauce, in whatever quantity the day requires.

A pecel is what an Italian crudité would be if it had grown up eating chilli.

Chef's note

The sauce will keep for two weeks in the fridge and improves overnight. Always reheat with a splash of hot water — never reheat dry.

A plate of ketoprak with tofu, vermicelli and peanut sauce.
№ 011 Ketoprak, the Jakarta cart in a single plate. — Photograph by Bajinra, CC0.
011
Jakarta

Ketoprak

A cart, a knife, a rolling stone, peanut sauce.

Serves
2
Time
30 min
Difficulty
Easy
Region
Jakarta

A ketoprak seller works on the lid of his cart as if it were a kitchen counter. Onto a banana-leaf-lined plate go cubes of pressed rice (lontong), rice vermicelli, blanched beansprouts and slices of pan-fried tofu. He pounds peanuts, garlic and chilli in a wooden mortar held in his lap, slacks the sauce with kecap manis and a splash of tamarind, then pours it over the plate. He shatters a few prawn crackers on top with the heel of his palm. The whole transaction takes ninety seconds.

Where gado-gado uses many vegetables, ketoprak is austere — its identity is rice noodles + tofu + beansprouts + a punchy peanut-garlic sauce. The word "ketoprak" itself, locals will tell you, is onomatopoeic: the rhythm of the seller's knife and pestle as he assembles.

The cart announces itself. Ke—to—prak.

Chef's note

Ketoprak lives or dies by its garlic. Use it raw, use it bold — a half-clove will give you a polite sauce; the polite sauce is the wrong sauce.

A plate of tahu telur, broken tofu omelette in peanut sauce.
№ 012 Tahu telur, broken on purpose, then sauced. — Photograph by Gunarta, CC BY-SA 4.0.
012
East Java  /  Surabaya

Tahu Telur

A tofu omelette deep-fried, smashed, drowned in peanut soy.

Serves
2
Time
25 min
Difficulty
Easy
Region
Surabaya

Tahu telur begins with a violence and ends in a sauce. Cubed firm tofu and beaten egg are dropped together into a small pan of very hot oil; they bind into a single golden disc, laced and ragged at the edges. The cook fishes the disc out, breaks it crudely into pieces with the back of his spatula, lays the pieces over rice vermicelli and beansprouts, then pours over a thick brown sauce of peanut, kecap manis, garlic and chilli.

It is the comfort food of Surabaya — fast, cheap, deeply savoury, with the textural delight of crisp ragged edges sopping up a sweet, salty, slightly bitter sauce.

An omelette that has been broken on purpose is a kind of honesty about how omelettes get eaten anyway.

Chef's note

The oil must be very hot, or the egg will be flat and greasy. Drop a single bead of batter in first — it should sizzle and bob immediately.

Tapioca balls (cilok) threaded on bamboo skewers.
№ 013 Cilok — steamed, threaded, sauced. — Photograph by Wiwik P, CC BY-SA 4.0.
013
West Java  /  Sundanese

Cilok

Tapioca balls, poked with a stick, sauced with peanut.

Serves
4 as snack
Time
30 min
Difficulty
Easy
Region
Sunda

The name cilok contracts the Sundanese phrase aci dicolok — "starch that has been poked." That is, more or less, the entire dish: tapioca starch dumplings, kneaded with garlic and pepper, steamed or boiled until they bounce, threaded onto a bamboo stick, then dragged through a peanut sauce, with a slick of kecap manis and a sweet chilli sauce for emphasis.

It is West Java's after-school snack, sold by men on bicycles with a small steamer in the basket. It costs almost nothing, takes seconds to assemble, and disappears in about the same length of time.

Cilok asks one question of its dough: bounce, or no bounce? Wrong answer and the children will go elsewhere tomorrow.

Chef's note

The dough must be hot when you knead it — cold tapioca becomes powdery, hot tapioca becomes elastic. This is the entire physics of cilok.

A plate of beef rendang in deep, dark sauce.
№ 014 Rendang — the long, dark cook. — Photograph by Midori, CC BY 3.0.
014
West Sumatra  /  Minangkabau

Rendang

The long, dark cook — beef, coconut, and four hours of patience.

Serves
6
Time
3 h 30 min
Difficulty
Project
Region
Minangkabau

Rendang is what coconut milk becomes when no one in the kitchen is in a hurry. Chunks of beef are dropped into a wide pan of coconut milk that has been pounded with a great spice paste — shallots, garlic, chillies, lemongrass, galangal, ginger, turmeric, candlenut, kaffir lime leaf, salam, turmeric leaf. The pan simmers. Hours pass.

The coconut milk first reduces to a curry (gulai); then, as more water evaporates and the oils begin to split, to a darker, drier braise (kalio); and then, with continued stirring and patience, to the deep, almost-black, oil-glazed final state called rendang. The beef has not been frying — it has been slow-toasting in its own caramelised coconut. It will keep for weeks.

Rendang is a sauce that has eaten itself, leaving only its essence behind. — A Padang grandmother, anywhere in West Sumatra

Do not rush. A pressure cooker will give you a beef stew. The hours are not negotiable; they are the recipe.

Chef's note

Use a heavy pan with a wide surface area — evaporation is the engine of rendang. A narrow stockpot will keep the sauce wet, and you will only ever reach kalio.

A bowl of seblak with rehydrated crackers, eggs and noodles.
№ 015 Seblak, controlled chaos. — Photograph by Raflinoer32, CC BY-SA 4.0.
015
West Java  /  Bandung

Seblak

After-school chaos — rehydrated crackers in a hot, aromatic mess.

Serves
2
Time
25 min
Difficulty
Easy
Region
Bandung

Seblak is what happens when you take dried prawn crackers — the puffy, brittle ones you'd eat alongside satay — and refuse to let them be crisp. You boil them. You shock them with chilli, garlic and kencur (an aromatic ginger relative whose scent is sharp, almost camphor-bright). You crack in an egg. You throw in whatever else is around: macaroni, instant noodles, meatballs, fishcake, sausage, chicken feet if the day calls for them. The crackers go translucent and chewy. The whole thing arrives in a wide bowl looking like a controlled accident.

It is a millennial dish, born in Bandung in the 2000s, sold by university canteens and TikTok stalls. There is no canonical version. The constant is kencur — without it, you have a noodle soup; with it, you have seblak.

Seblak smells, properly made, like a kitchen mid-argument.

Chef's note

Kencur is non-negotiable. Substituting ginger or galangal gives you a different (perfectly fine) dish that is not seblak.