A lower-carb saoto soup: a clear chicken broth infused with aromatics, garnished at the table and spiced up with a hot ketjap sauce.
Lemongrass and ginger perfume the clear broth, while salty pork cracklings add a crisp crunch. Saoto soup is a bowl of intensely aromatic chicken broth, served with toppings added at the last minute and a spicy ketjap sauce. This version keeps the components separate for serving but cuts back on carbs, with around 21 g of net carbs per serving. This recipe joins my collection of keto soups and salads.
What is saoto soup?
Saoto soup is a clear chicken broth made with bone-in pieces, then garnished at the table. Galangal, ginger, lemongrass and allspice form the backbone of the broth, while makrut lime leaves and daun salam round out its aroma. Shredded chicken, egg, mung bean sprouts and leaf celery go into the bowl.
Here, the crunch comes from pork cracklings, which replace the fried onions, rice vermicelli and thin fries used in the classic fully garnished version. A ketjap sauce made with half to one whole Madame Jeanette chili lets you adjust the heat and sweet-salty flavor when serving.

The origins of this version
Saoto is traditionally served with its components kept separate, and this adaptation follows that principle. The broth remains an intensely fragrant clear broth, set alongside the toppings and punchy sauce so everyone can assemble their own bowl.
The two changes focus on carbohydrate content. A starch-free crunchy topping, pork cracklings, takes the place of the fried ingredients, and reduced-sugar ketjap preserves the rounded sweet-salty flavor. The result is still hearty, but a little more restrained.
The main ingredients
Two skinless chicken legs with part of the ribs attached form the base of the broth: the meat stays juicy and the bones give the liquid body, while removing the skin keeps the broth clear. The water, 1 to 1.5 liters, extracts the flavors, and bouillon powder boosts the umami, though you should watch the salt.

Red onions and garlic provide sweetness and depth, peppery galangal complements the bright ginger, and slitting the lemongrass releases its oils. Allspice brings notes of cinnamon and cloves without heat, makrut lime adds its citrus touch, and daun salam its distinctive fragrance. A small piece of trassi, a fermented shrimp paste, adds briny depth and contains crustaceans.
The sauce delivers the heat and sweet-salty flavor. Reduced-sugar ketjap provides the balance; if unavailable, a mixture of soy sauce or tamari and caramel-flavored liquid sweetener comes close to that rounded flavor. Crumbled pork cracklings add a dry, salty, brittle crunch just before eating.

Technique and serving tips
Serving the components separately is part of the pleasure of saoto. The broth arrives piping hot, the shredded chicken, eggs, sprouts, celery and pork cracklings stay separate, and the hot sauce is added a little at a time. Taste the broth before adding anything: bouillon powder, trassi, soy sauce and pork cracklings can quickly make the bowl salty. Add the cracklings at the last minute, otherwise they soften and become tough.
For everyday keto cooking, here are all my low-carb recipes.
For mung bean sprouts, rinsing with very hot water preserves their crunch, but anyone who is pregnant, immunocompromised or has a sensitive digestive system should opt to cook them thoroughly. Cool the broth and chicken quickly, and store the eggs, sprouts, celery, sauce and pork cracklings separately, keeping the cracklings dry. In France, galangal, lemongrass and makrut lime can be found in Asian grocery stores, sometimes frozen; daun salam and trassi are available in Indonesian stores, and Madame Jeanette chilies in Surinamese or Caribbean grocery stores.

Saoto Soup
Ingredients
Broth
- 2 chicken legs with part of the rib cage attached skin removed
- 1 to 1.5 l water
- bouillon powder
- 2 to 3 red onions
- 4 cloves garlic
- 1 large piece fresh galangal
- 1 large piece fresh ginger djahรฉ
- 2 stalks fresh lemongrass
- 1 tablespoon whole allspice berries
- 4 makrut lime leaves djeroek poeroet
- 4 Indonesian bay leaves daun salaam
- 1 small piece trassi
Garnish
- 4 eggs
- 200 g pork cracklings
- 4 handfuls mung bean sprouts
- 4 handfuls fresh leaf celery leaves
Sauce
- 0.5 to 1 Madame Jeanette chili
- 4 cloves garlic
- 1 small piece fresh galangal
- 1 small piece fresh ginger
- 6 tablespoons ketjap low-carb (homemade), or 4 tablespoons of liquid caramel sweetener with 4 teaspoons of soy sauce or tamari
Instructions
Broth
- Place 2 large chicken legs with part of the rib cage attached in 1 to 1.5 liters of water. I find chicken legs work best, as the bones also make a good broth. I am a big fan of the skin on a chicken leg. In soup, however, it adds an unpleasant layer of fat. So remove the skin.2 chicken legs with part of the rib cage attached, 1 to 1.5 l water
- Add 2 to 3 tablespoons of bouillon powder.bouillon powder
- Add the onion, garlic, ginger, galangal, lemongrass and allspice berries. Add everything in large pieces if desired (but do peel the onion and garlic). Slit the lemongrass lengthwise or break and bruise it.2 to 3 red onions, 4 cloves garlic, 1 large piece fresh galangal, 1 large piece fresh ginger, 2 stalks fresh lemongrass, 1 tablespoon whole allspice berries, 4 makrut lime leaves, 4 Indonesian bay leaves, 1 small piece trassi
- Let the broth simmer for about an hour.
- Remove the chicken from the pot. Pull the meat off the bones and set aside for a while. Depending on how soon you plan to serve the soup, keep it covered at room temperature or in the refrigerator.
- Return the bones to the pot and let them infuse for as long as desired, preferably even overnight. Using chicken legs with part of the rib cage attached allows you to extract even more beneficial substances from the bones and giblets.
Sauce
- Pound or grind a Madame Jeanette chili.0.5 to 1 Madame Jeanette chili
- Add garlic, ginger and galangal to taste and pound them with the chili. First press the garlic and grate the ginger and galangal.4 cloves garlic, 1 small piece fresh galangal, 1 small piece fresh ginger
- Sautรฉ briefly in a little mild olive oil or coconut oil.
- Add the ketjap. If homemade ketjap is not available, use soy sauce and syrup made with a sugar substitute.6 tablespoons ketjap
Garnish
- Boil (8 min) and peel 4 eggs.4 eggs
- Rinse the mung bean sprouts under hot water or briefly immerse them in a bowl of hot water. Leave to drain.4 handfuls mung bean sprouts
- Grind the pork cracklings in a food processor. Chop the celery with a knife or scissors. Place everything in separate small bowls, along with the chicken previously pulled off the bones.200 g pork cracklings, 4 handfuls fresh leaf celery leaves