The yellow paste hits the hot oil and the kitchen fills with lemongrass and lime leaf. A few minutes later, oil starts to slip out from the edges of the paste, and that is the moment the soup is decided. In Kudus, a town in Central Java, the finished broth goes into a small bowl over rice, bean sprouts and shredded meat, with fried garlic scattered on top and a bottle of sweet soy sauce and a few limes waiting on the table.
Soto Kudus is a clear, light-yellow spiced soup made with chicken or water buffalo rather than beef. It tastes of ginger, coriander and white pepper, rounded by a pinch of sugar, and because the rice sits in the bowl, every spoonful brings grain and broth up together.
Why Kudus Cooks Its Soto Without Beef
Sunan Kudus and the cow
The story every account of this soup shares begins with Sunan Kudus, one of the Wali Songo, the saints who spread Islam across Java. Out of respect for the Hindu people living in Kudus, for whom the cow is sacred, he asked the town not to slaughter or eat cattle. Kudus kept to it. The town's satay is made from buffalo, its signature dishes lean on buffalo meat, and its soto is made with chicken or water buffalo, the two versions you find there today.
Which came first is not settled. One stall family in Kudus remembers soto as a chicken dish that gained a buffalo version after the saint's call. Another says the soup was first made with beef and moved to buffalo. A third account has buffalo first, slowly giving way to chicken because it cooks faster and stays tender. What all of them agree on is the absence of beef, and that is what makes this soup belong to Kudus. In 2007 Soto Kudus appeared on an Indonesian postage stamp, a face for the whole soto family of Indonesia.
Soto is the Javanese word for this family of spiced soups; in Makassar the same word becomes coto. Where the word itself comes from is not settled: one theory traces it to the Hokkien caudo, another to the Dutch stoof, a stew. The buffalo version is also called soto kerbau, or soto kebo, and in Kudus it is simply the other Soto Kudus, the buffalo twin of the chicken bowl.
Small bowls, and the big buffalo bowl
Most Soto Kudus comes in a small bowl, often porcelain, with rice already in the bottom, bean sprouts, slices or shreds of meat, celery leaf and a scatter of fried garlic. Satay usually sits alongside. In Kudus, the bowl at one long-running stall measures about 4½ inches across.

The buffalo stalls in Kudus itself break that rule. Their bowls are larger than elsewhere, the slices of buffalo are thick, and one bowl is a full meal. At Taman Bojana, the food court the regency built in the town, stalls such as Pak Ramidjan's, open since 1952, serve from half past six in the morning until ten at night. The soup also travelled. Jakarta has its own Soto Kudus counters, small bowls of clear spiced broth with chicken or buffalo, and some list it as soto campur nasi, soto mixed with rice.
Stall to stall
Every stall tunes its pot. Some broths are perfectly clear, others slightly cloudy: one cook fries the spice paste with a little coconut milk, another uses margarine and no coconut milk, and a splash of salty soy clouds the broth further. Some pots run a deep, strong yellow from turmeric; the recipe below gives a paler, light golden broth. On many tables in Kudus the sweet soy sauce is THG, made in the town, and some stalls build their flavour on terasi from Juwana in neighbouring Pati.
How it differs from its neighbours
Soto ayam in the Lamongan style is a turmeric-yellow chicken soup topped with koya, a powder of ground crackers, with rice noodles in the bowl. Soto Kudus carries no koya and no rice noodles, and its crunch comes from fried garlic. Soto Semarang looks close, also small and served with satay, but its broth is a clear brown, its satay sits in sweet soy, and it is topped with fried shallot, while Kudus satay comes dry. Soto Betawi from Jakarta is a different dish altogether, a white soup made with milk or coconut milk.
Ingredients (serves 4)

Kecap manis is a soy sauce and many brands contain wheat; check the label for anyone who avoids soy, wheat or gluten. The paste contains candlenuts, so tell anyone with a nut allergy. The soup itself uses no egg or dairy.
Equipment
- Granite mortar and pestle, or a food processor
- Deep pot that holds the chicken and 2 quarts (2 L) of water with room to spare
- Frying pan
- Ladle for skimming and serving
- Tongs
- Two forks, for shredding
- Fine strainer
- Colander, for the bean sprouts
- Small deep soup bowls
Shopping and Substitutions
The supermarket covers the chicken, garlic, ginger, bean sprouts, spring onion, salt, sugar and oil. An Asian grocer or an online shop covers the rest: kecap manis, dried daun salam, frozen or dried kaffir lime leaves, lemongrass, candlenuts, white pepper and fried shallots. Store-bought fried shallots work as well as homemade.
What keeps the bowl tasting like Kudus is the trio of leaves and lemongrass, the candlenut body in the paste, and white pepper for heat.
| Ingredient | Swap | What changes |
|---|---|---|
| Daun salam | Bay laurel | A different, more medicinal perfume; use it only if salam is impossible to find |
| Kaffir lime leaves | Lemon peel | Brighter and sharper, without the floral depth of the leaf |
| Shallots | 1 small onion | Works, and the paste turns slightly sweeter |
| White pepper | Black pepper | Heat stays, but dark specks show in the pale broth |
| Ground coriander | Coriander seed, freshly ground | More aroma; grind it fine so the paste stays smooth |
| Limes | Lemon or sudachi | Fine for squeezing; lemon is sharper |
Candlenuts are never eaten raw. In this soup they are ground into the paste and then fried until the oil separates, which is what cooks them. Buy whole nuts and keep the raw paste out of tasting spoons.
Method
The whole bowl takes about 1 hour 10 minutes. Grind the paste first, then start the chicken, because the pot does its gentle simmer while you fry the paste. The hands-off stretch is that simmer; the moves that decide the result are skimming early and frying the paste long enough.
Do not taste the spice paste before it is fried: it holds raw candlenut. The paste spits when it meets hot oil, so add it carefully and stir with a long wooden spatula.
When It Goes Wrong
| What you see | Why | What to do |
|---|---|---|
| The broth is grey and murky | The pot boiled hard, or the early foam stayed in | Turn the heat down at once and skim; next time catch the foam before the boil and keep the simmer gentle |
| The soup smells of raw shallot and garlic | The paste left the pan before the oil separated | Fry the paste longer next time; the toasted, sweet smell and the ring of oil are the cue |
| The broth tastes too salty | All the salt went in at once, or salt was added on top of the two portions | Count the salt as two separate teaspoons, one at each stage, and add nothing more before tasting at the table with kecap manis |
| The sprouts are limp and watery | They sat in hot water or went into the pot | Only pour hot water over them and drain; they finish warming under the hot broth |
| Grit and leaf bits in the bowl | Broth poured straight from the pot | Pour every bowl through the fine strainer |
Serving and Variations

Soto Kudus is seasoned at the table, bowl by bowl. A squeeze of lime lifts the broth, a little kecap manis brings sweetness and colour, and a sambal of boiled bird's-eye chillies mashed with garlic adds heat; some stalls set out sweet soy sambal instead. Satay is the classic plate beside it, and the bowl itself often takes extra pieces: a halved boiled egg, glass noodles, potato crisps, shredded cabbage or celery leaf.
Rice in the bowl or on the side
The rice goes in the bottom of the bowl in Kudus, and that is how the soup is built above. Serving the rice alongside works too; the broth then stays lighter and the rice keeps its texture to the last spoonful.
Fried garlic instead of fried shallot
Kudus stalls top their bowls with fried garlic, and many use fried shallot and fried garlic together. Garlic gives a sharper, nuttier crunch that marks the bowl as Kudus rather than Semarang.
A deeper yellow
Some stalls run a strong, deep-yellow broth. Raise the turmeric a little and the colour deepens and the earthy note comes forward, while the broth stays clear.
Water buffalo
The buffalo bowl is the other Soto Kudus. The meat is simmered in boiling water for about an hour until tender and sliced thickly; the cooking is covered in the questions below.
Frequently asked questions
Can I make the paste in a food processor instead of a mortar?
Yes. Grind until it is just as smooth and thick as a pounded paste, scraping down the sides so the candlenuts break down fully. A mortar gives a slightly denser paste, and both fry the same way.
Can I use beef?
Beef versions of Soto Kudus exist as modern home adaptations. In Kudus, though, the whole point of this bowl is that it avoids beef, so cook it with chicken or water buffalo to keep it a Kudus soup.
How do I cook it with water buffalo?
Simmer the buffalo in boiling water for about an hour until tender, skimming as you go and keeping the heat low so the broth stays clear. Slice the meat once it is soft, keeping the pieces generous, because small pieces fall apart. Fry the spice paste and add it to the broth as in the method above.
Do I have to make my own fried shallots?
No. Store-bought fried shallots work well. Scatter them on just before serving so they stay crisp.













