Rain comes down over Bogor often enough that Indonesians call it kota hujan, the city of rain, and on a cool wet day the steam rising off a soto stall pulls people in from the street. What lands in front of them is a golden bowl. Slices of beef sit over boiled potato and tomato, with fried shallots and scallion on top and lime and a few bitter emping crackers on the side. In Bogor itself the dish is called soto kuning, the yellow soto. The broth tastes of turmeric, shallot and lemongrass, and the coconut milk added at the end makes it round and gently creamy without turning it heavy.
A Yellow Soup from the City of Rain
Soto is Indonesia's big family of spiced soups, and almost every region pours its own. Bogor's version is a beef soup whose yellow comes from fresh turmeric and spices ground into a paste and fried in oil, then loosened with the beef's own cooking broth and finished with coconut milk. That fried paste carries the whole aroma of the bowl. Bogor locals eat it with white rice or lontong (compressed rice cakes), and visitors who come to the city go looking for it.
Built at the counter
At a soto kuning stall the bowl is put together to order. Customers point at what they want, and offal is as common as plain meat. Fillings include beef, chicken, babat (tripe) and limpa, and many stalls add kikil, urat, empal and potato perkedel. Two people ordering soto kuning side by side can walk away with very different bowls.
Jalan Suryakencana, in the old centre of Bogor, is lined with soto kuning stalls, and on weekends people drive down from Jakarta to eat there. Most stalls sell from morning into lunch; some open only in the late afternoon. Each has its own touch. One stall run by Adam adds minyak samin (ghee) to the pot. Pak Yusuf's stall has been going since 1992, and Pak Salam's has drawn crowds for decades. Hours and locations shift over time, so check before you make the trip.
Choose your fillings first, meat, tripe or other offal, then decide on rice or lontong alongside. Lime, fried shallots and emping come to the table so each person can sharpen and crunch their own bowl.
How it differs from its neighbours
Soto Bogor sits between two better-known cousins. Soto ayam is chicken with turmeric in a clear yellow broth. Soto betawi, from Jakarta, is beef in a broth made white with milk and coconut milk. Soto Bogor shares the coconut milk with soto betawi and can look like it at a glance, but its colour is turmeric yellow, and the coconut milk is measured to soften the broth rather than whiten it. East Java's rawon is another beef soup, and it goes in an entirely different direction with its black broth.
The one to watch for in Bogor is soto mie Bogor, which is a separate dish. It is a noodle soup with a beef and kikil broth, yellow noodles, rice vermicelli, cabbage, tomato and fried risol, finished with emping and sambal. Soto kuning has none of the noodles or risol; it is soup over potato and tomato, with rice served on the side.
Where soto came from
The wider soto family is usually traced to caudo, or jao to, a Chinese-Indonesian dish of offal simmered with herbs in the 19th century. Early soto was made with offal and spread through street vendors who carried their pots on shoulder poles, and over time each region worked out its own recipe and name. When Bogor's yellow, coconut-softened bowl first appeared is not settled. What is clear is how firmly it belongs to the city now, as one of the bowls people think of when they think of Indonesian cooking.
Ingredients (serves 8)

The beef cooks once and gives you both the meat and the broth, so there is no separate stock. Keep the beef in one piece with its fat on; that fat carries the spice into the soup.
Measure 1 cup (250 ml) of thick coconut milk from a regular can and stir the can well first so the cream and water are mixed. Small instant sachets have a different thickness, so count by volume from the can, never by number of sachets.
This soup contains beef and coconut. Candlenuts are tree nuts, and so are the macadamias or cashews used in their place. Emping is made from melinjo, not peanut. Check the labels on mushroom bouillon, fried shallots and crackers for other allergens and shared-facility statements.
Equipment
- Large pot for simmering the beef and finishing the soup
- Ladle and fine skimmer
- Stone mortar and pestle, or a blender
- Small dry frying pan for toasting the candlenuts
- Wooden spatula
- Bamboo skewer for testing the meat
- Fine strainer, in case the soup splits
- Deep soup bowls
Choosing and Substituting
The leaves and roots decide whether this tastes like Bogor. Salam leaves, makrut lime leaves, galangal and lemongrass are sold frozen at Southeast Asian grocers, and frozen ones work well; buy those before you think about swaps. Candlenuts and emping come from the same shops, or from stores that sell imported foods.
| If you can't find | Use | What changes |
|---|---|---|
| Sandung lamur | A block of fatty beef brisket or plate | Close to the real thing. Thin slices fall apart in the pot |
| Fatty brisket | Beef shank or chuck in one piece | Works, but less fat means a leaner, less rich broth |
| Candlenuts | Toasted macadamias or cashews | Gives similar body and thickness; the flavour shifts. Never use them raw |
| Fresh turmeric | Ground turmeric | Brings back colour and aroma. Add a little at a time; too much turns the soup bitter |
| Galangal | Ginger | Hotter and less piney; the aroma moves away from Bogor |
| Salam leaves | Bay leaf | An emergency swap with a different scent |
| Makrut lime leaves | Another citrus leaf | A different citrus scent; keep it only as a stopgap |
| Mushroom bouillon | Other granulated stock | Salt content varies, so hold back the salt and season by tasting |
| Emping | Leave it out | The soup works with lime and fried shallots alone. Another fried cracker adds crunch but none of emping's bitter edge |
Method
The beef goes on first, and its long, quiet simmer is your hands-off time: grind the paste and boil the potatoes while it cooks. Once the meat comes out, everything else moves quickly. Fry the paste, pour the broth back in, finish with coconut milk over low heat, then build the bowls.
When It Goes Wrong
| What you see | Why | What to do |
|---|---|---|
| Beads of oil and grainy flecks on the soup | The coconut milk boiled hard and split | Turn the heat right down and stir gently. Strain the soup before ladling it into bowls. Turning up the heat will not bring it back |
| The beef is tough and chewy | It came out of the pot before it was tender | Return it to the simmering broth until a skewer slides in freely. Reduce the broth only after the meat is tender |
| The soup tastes bitter | The paste scorched in step 3 | Bitterness stays once it is there. Next time, fry over medium-low and keep the full 5 tbsp oil |
| The colour is pale | Old or too little turmeric | Use fresh, firm turmeric. Top up with a little ground turmeric, tasting as you go so it does not turn bitter |
| The soup is too salty | Bouillon and salt went in all at once | Taste after the bouillon and add salt in small amounts. If you overshoot, add a little water and warm it through gently |
Serving, Variations and Storage
At the table
Soto Bogor is a meal in one bowl with rice beside it. White rice or lontong is the usual partner. Alongside, people add sambal for heat, kecap manis (sweet soy sauce) for sweetness and acar (quick pickles) for crunch, each to their own taste. Lime and emping stay at the table so every bowl can be adjusted as it is eaten.
Variations
Offal is common at Bogor stalls. Tripe and other organ meats take careful preparation at home, so follow the warning below before you add them.
Wash tripe or other beef offal well, then parboil it with spices such as ginger and lemongrass and discard the water. Repeat this 2 to 3 times. Then simmer it with salt and spices in the soup until the centre reaches 160°F (71°C).
- Chicken. Stalls serve chicken soto kuning too. This recipe is written for beef only.
- Ghee. One Bogor stall adds ghee (minyak samin) to its pot. It gives a buttery, toasty note under the spices.
- Fried potatoes. Fry the potato instead of boiling it. It adds a toasty edge.
- Coconut milk strength. Coconut milk varies from stall to stall and home to home. Less gives a lighter, clearer soup; more makes it rich and creamy.
Storage and reheating
Let the soup cool, then cover tightly and refrigerate promptly. Store the beef in the soup, but keep potatoes out, because they break down and cloud the broth. Boil and cut fresh potatoes when you serve. Reheat over low heat, stirring, until the whole pot comes to a full boil, then take it off the heat rather than letting the coconut milk keep boiling. Add a pinch of salt if it tastes flat after reheating.
Frequently Asked Questions
Can I use a pressure cooker for the beef?
Yes. It shortens the simmer, but a pressure cooker also reduces the broth, so top up with water in step 4 if the pot looks low. Let the pressure drop on its own before opening the lid. Test the meat with a skewer just as you would on the stove.
Can I halve the recipe?
The paste is counted in whole shallots, cloves and nuts, and halving it leaves you with half a candlenut and two and a half garlic cloves. Cook the full pot instead. The soup reheats well following the storage steps above, so leftovers become an easy second meal.
Is soto Bogor dairy-free and gluten-free?
The recipe has no dairy, wheat or egg; coconut milk is not dairy. Wheat or other allergens can come in through mushroom bouillon, fried shallots or crackers, so read those labels. Rice and lontong on the side keep the meal free of wheat.
Do I need both ginger and galangal?
Both go into the pot in this recipe. Ginger brings warmth, and galangal brings a sharper, piney note. If you cannot find galangal, ginger is a stopgap, as in the table above, but the aroma moves away from Bogor.














