Ginger milk curd, or jiang zhuang nai in Cantonese, is one of those desserts that doesn't seem like it should work. You pour hot, sweetened milk onto a spoonful of raw ginger juice, stand back, and a few minutes later you have a bowl of soft, trembling pudding — warm, milky, with a slow chile-like heat that blooms across your tongue. No gelatin, no eggs, no cornstarch. Just an enzyme doing its job.
The frustration, of course, is that it often doesn't work. I've had batches that stayed stubbornly liquid, and batches that came out grainy and split. The good news is the whole thing hinges on three variables: enzyme strength, milk protein, and temperature. Once you understand which lever does what, the failure modes become obvious. That's the version of this recipe I want to give you: not just the steps, but the diagnosis when it goes sideways.
At a glance: pour 70°C / 158°F milk from a height onto 1 tablespoon fresh ginger juice, then leave it completely alone for 10 minutes. Use whole milk (3.25% or higher) — skim and most plant milks will not set. The make-or-break number is the temperature; miss it by 5°C and you're drinking ginger milk.
What is ginger milk curd?
It's a classic Cantonese sweet, traced to the town of Shawan in Panyu, just outside Guangzhou. Like a lot of southern Chinese desserts, it leans on a single assertive ingredient rather than sugar, in the same family as sweet red bean paste, steamed pear with rock sugar, or a bowl of red bean soup. The Chinese name translates literally as "ginger juice bumping into milk," and that bump, the splash of hot milk hitting the juice, is what triggers the set. If you've had Chinese steamed eggs or steamed custard buns (nai wong bao), the texture is in the same neighborhood: silky, spoonable, barely holding its shape.
The science, in plain terms
Here is why this dessert can set without anything added. Fresh ginger contains a protease called zingipain. A protease is an enzyme that cuts proteins. Milk is full of casein, the protein that normally floats around in stable little clusters called micelles. When zingipain meets casein at the right temperature, it snips the casein in a way that makes the micelles unfold and tangle together. A soft gel forms, exactly the way rennet sets cheese, just gentler.
Two things follow from that, and both matter for getting it right. First, the enzyme is heat-sensitive: too cold and it barely works, too hot and you cook it dead. That's why 70°C is the sweet spot: fast enough to set in minutes, not so hot you destroy the enzyme. Second, the enzyme is concentration-sensitive: you need a minimum amount of it relative to the milk, or there simply isn't enough protein-cutting power to gel a whole bowl. That's why scaling this recipe up isn't a straight multiply.
Ingredients
Ingredients at a glance

Four things, plus optional toppings. Resist the urge to reach for plant milk the first time; read the notes under the table before you do.
| Ingredient | Amount | Notes / substitute |
|---|---|---|
| Fresh ginger juice | 1 tbsp (15 ml), from ~30 g ginger | Must be freshly squeezed, not bottled. See "picking the ginger" below. |
| Whole milk | 200 ml | Full-fat (3.25%+) dairy works best. Skim and most non-dairy milks will not set reliably. |
| Sugar | 2 tsp (about 8 g) | White granulated, or replace with rock sugar for a cleaner finish. |
| Honey & fresh berries | To finish (optional) | Drizzle over the set curd. Ginger and honey are a natural pairing. |
Picking the ginger (this is the first place it goes wrong)
Old, dry, fibrous ginger is the single most common reason a batch fails. Zingipain activity is highest in fresh, plump, juicy rhizomes with tight skin, the kind that snaps cleanly when you break it. Avoid ginger that's wrinkled, sprouting, or feels light for its size; that's depleted. In most US grocery stores the labeled "young ginger" (pale, thin-skinned, sometimes pink-tipped) is ideal when you can find it, but regular mature ginger is fine as long as it's fresh.
Do not use bottled ginger juice or ginger paste from a tube. Both have been sitting long enough that the enzyme has degraded, and you will get liquid every time. Juice it the same minute you pour the milk.
Equipment that actually matters
A reliable instant-read thermometer is the one tool I won't make this without. You can eyeball it (and I'll give you the visual cue below), but the temperature window is narrow and a five-dollar probe pays for itself on the second try. Beyond that you need a fine grater (a microplane is best), a small fine-mesh sieve, and a heatproof bowl that holds about 250 ml with room to spare for the pour.
Method
Total active time is under five minutes; most of the "recipe" is waiting. Read the steps once before you start, because step 3 needs to happen the instant the milk hits temperature.
- Extract the ginger juice. Peel a 30 g knob of fresh ginger and grate it on a fine microplane; you want pulp, not shreds. Pile the pulp into a fine-mesh sieve set over a small bowl and press hard with the back of a spoon (or squeeze through cheesecloth) until you have a full tablespoon of cloudy, slightly grayish juice. Scrape the underside of the sieve too; that's where the good stuff collects. Give the juice a stir and you'll see a pale sediment settle, and that sediment is the enzyme. Do not strain it out, and do not let the juice sit for more than a few minutes before using.

Press a freshly grated 30-gram ginger knob hard enough to collect one full tablespoon, keeping the pale sediment.
- Heat the milk to 70°C / 158°F. Pour the milk into a small saucepan with the sugar and warm it over medium-low heat, stirring to dissolve. Watch the thermometer closely and pull the pan off the heat the moment it reads 70°C. If you overshoot to 75°C you can cool it back down by stirring off the heat for a few seconds; if you blow past 80°C the enzyme in the juice will be destroyed on contact and you must start the milk over. Microwave alternative: heat 200 ml of cold (refrigerated) milk in a 1000-watt microwave for about 75 seconds total, stirring in the sugar at the halfway mark. Every microwave is different, so verify with the thermometer on your first run and note the time.

Pull the sweetened milk off the heat at exactly 70°C, before it boils or forms a skin.
- Stir the juice, then pour from height. Just before pouring, stir the ginger juice in its bowl to resuspend the settled sediment, so the enzyme is evenly distributed. Then pour the hot milk in one steady stream from about 15 cm / 6 inches above the bowl, directly onto the juice. The pour is what the dish's name refers to, and it matters: the fall mixes the juice into the milk without you having to stir, and a hard pour actually damages the forming gel. Do not stir after pouring.

Resuspend the enzyme sediment, then pour from about 15 centimetres in one confident stream and do not stir.
- Leave it completely alone. Set the bowl down, do not move it, do not stir, do not cover it tightly. The curd sets in roughly 10 minutes at room temperature. You can test it gently: lay a teaspoon flat on the surface; if it rests on top without sinking, it's done.

Leave the bowl untouched for 10 minutes; a teaspoon resting on top confirms the soft gel has formed.
- Serve warm or chilled. Traditional Cantonese style is warm, eaten right away. I prefer it cold, refrigerated for an hour, which softens the ginger bite. Finish with a drizzle of honey and a few fresh berries if you like.

Serve the silky curd warm, or chill it for an hour, adding the optional berries or honey only at the end.
When it doesn't set: troubleshooting
This is the section I wish I'd had the first time. Every failure maps to one of three causes, and they're easy to tell apart once you know what you're looking at.
- It's still liquid after 15 minutes. The enzyme never got the chance to work. Causes, in order of likelihood: milk was too hot (over 80°C, enzyme killed on contact), milk was too cold (under 65°C, enzyme too sluggish), or the ginger was old and enzyme-depleted. If the milk temp was the problem you can sometimes rescue it: reheat fresh milk to 70°C and pour onto freshly squeezed juice into a clean bowl. Don't reuse the old bowl; the diluted juice won't be strong enough.
- It set, but there's watery liquid pooling on top or weeping at the edges. The milk was a touch too hot, or you used reduced-fat milk. The protein network formed but then tightened and squeezed out water, the same thing that happens to an overcooked egg. It's still edible; it just looks sad. Use whole milk next time and check that you pulled the pan at exactly 70°C.
- It's grainy or lumpy instead of smooth. Either you stirred it after pouring (never), or you poured too slowly so the juice started setting the milk at the surface before it could mix. Pour in one confident stream from height.
- It set but the ginger flavor is weak. The juice was too diluted, likely from wet ginger that hadn't been peeled, or from not pressing hard enough through the sieve. Next time use a touch more ginger and squeeze the pulp thoroughly.
- It set but it's unpleasantly harsh and spicy. Too much juice, or very potent young ginger. Cut back to 2 teaspoons of juice and the curd will still set with a gentler warmth.
Can you use plant milk?
Often asked, and the honest answer is: not reliably. Zingipain sets casein, the specific protein in dairy milk. Soy milk, which has a similar protein structure, sometimes sets into a softer curd, but results vary by brand and protein content, and it's the one substitution I'd only attempt once you've nailed the dairy version. Almond, oat, and coconut milks are too low in the right kind of protein to gel at all. If you want a dairy-free Chinese dessert that's dependable, a brown-sugar bubble tea or a chilled mango pancake will treat you better than fighting with this one.
Variations and pairings
The base is a blank canvas for warm, sweet company. A few directions I keep coming back to:
- Brown sugar instead of white. Swap the 2 teaspoons of white sugar for a tablespoon of dark muscovado or Chinese brown sugar for a caramel, molasses edge that pairs beautifully with the ginger heat.
- Osmanthus or jasmine infusion. Steep a pinch of dried sweet osmanthus flowers or a jasmine tea bag in the warm milk for two minutes before heating to 70°C, then strain. Floral and delicately perfumed, with a distinctly southern Chinese character.
- Pandan. A single knotted pandan leaf warmed in the milk gives a vanilla-coconut aroma. Hard to find outside Asian grocers, but worth the detour.
- Pair it with something to contrast. The soft, warm texture loves a crisp counterpoint. Serve it after a plate of cheung fun rice noodle rolls at brunch, or alongside other Cantonese teahouse sweets like mango pancakes or a snow skin mooncake for a small dessert spread. For something richer and more celebratory, eight treasure rice pudding and sweet lotus root stuffed with sticky rice round out a festive Cantonese table, while soft red bean buns or a red bean popsicle keep things casual.
Storage and reheating
Ginger milk curd is a make-and-eat dessert. Once it sets, the gel slowly continues to tighten and weep, so it's best within about four hours of making. You can refrigerate it for up to a day and eat it cold; do not try to reheat it, because warming a set curd melts the protein network and you end up with ginger-flavored milk again. If you need to scale up for guests, make individual bowls rather than one large one; a big bowl sets unevenly and the center stays loose while the edges weep. It's a natural fit for the lighter end of a dim sum spread, where small portions are the point.
A note on the ginger you already have
Ginger is doing real work in this recipe, so it's worth knowing your way around it. The same fresh, pungent rhizome that sets this curd also powers a slow-braised ginger chicken, and if you cook a lot of southern Chinese food you'll burn through it faster than you expect. Buy plump, heavy knobs, keep them in the crisper loose (not in a bag, which encourages mold), and don't bother peeling what you'll grate: the skin holds a lot of the aromatic oils and comes off in the sieve anyway.
Common questions
A few things readers ask over and over, answered short.
Why does the milk have to be exactly 70°C? That temperature is hot enough for the ginger enzyme to work fast, but not so hot that it destroys the enzyme on contact. Below 65°C the reaction crawls and the curd never firms; above 80°C the enzyme is dead before it can do anything.
Can I make it without a thermometer? You can try, but expect misses. The visual cue is small bubbles just beginning to form around the edge of the pan with no steam rising, which is roughly 70°C. Honestly, a cheap probe thermometer removes the guesswork entirely and costs less than the ginger.
Why didn't mine set even though the temperature was right? Nine times out of ten the ginger was the problem: old, dry, or bottled juice has lost its enzyme. Use fresh, juicy ginger, squeeze it the same minute you pour, and stir the settled sediment back into the juice first.
Is skim or low-fat milk okay? Not really. The set depends on casein and fat both, and reduced-fat milk tends to weep and stay loose. Whole milk (3.25%) gives the texture this dessert is famous for.



