Xian Doujiang (Savory Soy Milk)
Xian doujiang, savory soy milk, is a Shanghai breakfast that turns a plain glass of soy milk into a bowl of tender curds through nothing but heat and acid. Hot soy protein is unstable in the presence of vinegar: pour the two together and the milk separates on contact into soft flocs and a light broth, the same chemistry that makes tofu, caught a few seconds in. The traditional bowl gets its salt from soy sauce and pickled mustard greens; this version keeps the soy note from a small measure of tamari and builds the rest of the flavor from black vinegar, nori, sesame, and white pepper, so the sodium stays low while the bowl still tastes like the real thing.
Ingredients
- 3 cups Unsweetened soy milk
- 2 tbsp Chinese black vinegar
- 2 tsp Low-sodium tamari
- 2 pieces Scallions, thinly sliced
- 1 sheet Nori, torn or scissor-cut into small pieces
- 1 tbsp Sesame seeds, toasted
- 1/8 tsp White pepper
- 1/4 tsp Red pepper flakes
Method
- Pour the soy milk into a saucepan and heat it over medium until it steams hard and just begins to tremble at the edges, but do not let it reach a rolling boil. It needs to be genuinely hot, because the heat is half of what sets the curds.
- While it heats, divide the black vinegar and tamari between two deep bowls. Add the scallions, nori, sesame seeds, white pepper, and red pepper flakes, splitting them between the bowls too. Building the seasoning in the bowl first is the whole method: you do not stir it into the pot.
- Pour the hot soy milk into each bowl from a height of about a foot (30 cm), straight onto the vinegar. The acid meets the hot soy protein and flocculates it on contact, breaking the smooth milk into soft, cloud-like curds suspended in a thin, savory broth. Do not stir.
- Let the bowls stand for 30 seconds to finish setting, then eat right away with a spoon, scooping curds and broth together. Two teaspoons of tamari per pot is what makes it savory rather than salted, and the nori adds an ocean depth that reads as seasoning.
Nutrition
Estimated per serving: 150 calories, 13 g protein, 3 g fiber, 300 mg sodium. Computed from USDA FoodData Central reference values for the main ingredients. This is an approximation, not a laboratory measurement. How these are computed.
Cost per serving is estimated from US national-average retail prices for cheap staple forms, using BLS dried-bean prices and USDA produce prices. Prices vary by store and season, so treat it as a guide, not a receipt. How this is computed.