This is a classic, light, and nourishing Chinese home-style soup, especially popular in eastern and southern China.
The crucian carp (a small freshwater fish similar to a small carp or goldfish) imparts a sweet, milky broth, while the soft tofu adds silky texture and protein.
The soup is clear, delicate, and comforting — often considered good for digestion, postpartum recovery, or as a gentle everyday dish.
- Fresh crucian carp — 2 medium (about 400–600 g total; 200–300 g each)
- Soft/silken tofu — 300–400 g (1 standard block)
- Ginger — 1 large piece (about 30 g), sliced into thin coins + extra 1 tsp minced
- Green onion / scallion — 2 stalks (white part sliced, green part finely chopped for garnish)
- Cooking oil — 3–4 tbsp (neutral like vegetable or peanut)
- Shaoxing wine — 2 tbsp
- Salt — ¾–1 tsp (to taste)
- Ground white pepper — ¼–½ tsp
- Light soy sauce — ½–1 tsp (optional, for subtle umami)
- Optional: a pinch of MSG or chicken powder for extra depth
- Water — 1.2–1.5 liters (about 5–6 cups; or use light chicken stock for richer flavor)
- Prepare the crucian carp
- Scale, gut, and clean the fish thoroughly (remove gills and any black membrane inside belly).
- Rinse under cold water. Pat very dry with paper towels (critical to prevent oil splatter).
- Make 2–3 shallow diagonal cuts on both sides of each fish (helps flavor penetrate and bones loosen during cooking).
- Fry the fish (key for milky, flavorful broth)
- Heat 3–4 tbsp oil in a wok or large skillet over medium-high heat until hot (test with ginger slice — it should sizzle immediately).
- Add fish. Fry 3–4 minutes per side until both sides are golden-brown and slightly crispy (skin blisters and curls).
- Add ginger slices and white parts of green onion around the fish. Fry another 30–60 seconds until aromatic.
- Pour in Shaoxing wine — let it sizzle and evaporate slightly (releases fishy smell).
- Turn off heat. Carefully transfer fish + aromatics to a plate (leave oil in wok).
- Start the soup base
- In the same wok (with residual oil), add 1.2–1.5 L cold water.
- Bring to a full boil over high heat.
- Gently slide the fried fish back into the boiling water (together with any oil/garlic/ginger from frying).
- Add minced ginger (extra freshness).
- Once boiling again, reduce to medium-low. Skim off any foam/scum that rises.
- Add tofu and simmer
- Cut tofu into 2–3 cm cubes or large slices.
- Gently slide tofu into the pot (do not stir vigorously — tofu is delicate).
- Simmer gently (small bubbles, not rolling boil) for 15–20 minutes. The broth will gradually turn milky-white from the fish fat and proteins.
- Do not stir too much — let the flavors meld naturally.
- Season
- Add salt, white pepper, and optional light soy sauce.
- Taste and adjust — the soup should be subtly sweet from the fish, with a clean, light savory note. Do not over-salt; the fish and tofu provide natural umami.
- Simmer another 5 minutes to let seasoning absorb.
- Finish and serve
- Turn off heat.
- Drizzle a little sesame oil (optional) for aroma.
- Gently ladle into bowls, trying to keep tofu intact.
- Garnish generously with chopped green onion tops.
- Serve piping hot with steamed white rice on the side.
- Milky broth → Frying the fish first is essential — it releases fat/proteins that cloud and sweeten the soup. Do not skip or the broth stays clear and fishy.
- Fish freshness → Use very fresh crucian carp — eyes bright, gills red, no strong odor. Frozen works if thawed properly.
- Tofu choice → Silken gives the classic melt-in-mouth texture. Firm tofu holds shape better if you prefer cubes.
- No strong spices → Keep it simple — ginger, green onion, Shaoxing wine are enough. Over-seasoning masks the fish’s natural sweetness.
- Variations → Add sliced shiitake mushrooms, goji berries, or a handful of wolfberries for nutrition. Some add pork ribs for richer stock.
- Storage → Best eaten fresh. Leftovers keep in fridge 1–2 days; reheat gently (boiling too hard makes tofu tough).
- Bone tip → Crucian carp has many small bones — eat carefully or serve with a side plate for bones.
