Fail-proof ginger milk curd (姜汁撞奶)

A tried and tested recipe for making perfect ginger milk curd, a popular Cantonese dessert with an interesting flavour and silky texture.

Published by CharWok

🥢 Desserts & Snacks⏱ Prep 5 min🔥 Cook 2 min🕒 Total 7 min🍽️ 1 serving
Silky Cantonese ginger milk curd with a tender spoonful lifted beside fresh ginger, one raspberry and two blueberries

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

English ginger milk curd ingredients for one serving: 1 tablespoon or 15 millilitres fresh ginger juice from about 30 grams ginger, 200 millilitres full-fat whole milk, 2 teaspoons or about 8 grams white sugar, plus optional honey and fresh berries
Use the ingredient table below for exact amounts and substitutions.

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.

IngredientAmountNotes / substitute
Fresh ginger juice1 tbsp (15 ml), from ~30 g gingerMust be freshly squeezed, not bottled. See "picking the ginger" below.
Whole milk200 mlFull-fat (3.25%+) dairy works best. Skim and most non-dairy milks will not set reliably.
Sugar2 tsp (about 8 g)White granulated, or replace with rock sugar for a cleaner finish.
Honey & fresh berriesTo 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.

  1. 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.
    A spoon presses finely grated mature ginger through a small sieve into a shallow pool of fresh cloudy juice

    Press a freshly grated 30-gram ginger knob hard enough to collect one full tablespoon, keeping the pale sediment.

  2. 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.
    A probe thermometer sits in sweetened whole milk with only tiny bubbles forming around the saucepan edge

    Pull the sweetened milk off the heat at exactly 70°C, before it boils or forms a skin.

  3. 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.
    Hot sweetened milk pours in one narrow steady stream from above into a bowl containing freshly stirred ginger juice

    Resuspend the enzyme sediment, then pour from about 15 centimetres in one confident stream and do not stir.

  4. 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.
    A ceramic teaspoon rests flat on the smooth surface of set ginger milk curd without sinking

    Leave the bowl untouched for 10 minutes; a teaspoon resting on top confirms the soft gel has formed.

  5. 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.
    A ceramic spoon lifts smooth soft-set ginger milk curd beside one raspberry and two blueberries

    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.

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:

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.