Top TenPlates
EnglishEspañol
Plate 09 of 10

Dulce de Leche

Milk and sugar cooked down in a wide pot until the water is gone and the milk itself has browned. It is not caramel, and it is not a can in a pot of water.

Prep
10 min
Cook
2 hr
Serves
About 450 g (1½ cups) at clásico
Difficulty
Medium

Kitchen-tested

Choose a format. The print preview will show how many pages it needs.

Ingredients, equipment, short steps and storage. Recipes with several components may need more than two pages.

Complete instructions, ingredient notes and storage guidance.

A wooden spoon lifting a thick ribbon of amber dulce de leche out of a battered copper pot on the stove.
Share this platePinterest (opens a new tab)

Dulce de leche is milk and sugar cooked until most of the water is gone and what remains has browned. It is not caramel. Caramel is dry sugar taken to the edge of burning. This is a wet cook: lactose and milk proteins browning together while the pot concentrates. That is Maillard, and it is why homemade dulce tastes like cooked milk and not like burnt sugar.

The rule people get wrong is treating this like a set-and-forget caramel — or worse, boiling a sealed can of condensed milk and calling that the recipe. The can method is a known shortcut with a real rupture risk. This recipe is the pot. Wide, low, stirred. You are there for it.

Argentine kitchens have made this on the stove for as long as there has been cheap cow’s milk and an afternoon to spare. The jar at the store is the same idea, cooked in a plant. What you cannot buy is the stage: you stop when it is the colour you want, not when a factory decided clásico.

Ingredients

  • 1 LWhole milkpreferably not ultra-pasteurised. Not skim, not 2%
  • 280 gGranulated white sugar
  • 1 gBaking soda / bicarbonato de sodioweigh it if you can — 1 g is the ceiling, not a suggestion
  • 1 gFine saltoptional. Skip it if this is going into alfajores
  • 1 podVanilla bean, split and scraped — or vanilla extractpod in at the start; extract off the heat at the end. One or the other

Yield and timing

About 450 g — roughly 1½ cups — at clásico thickness, a little less if you take it to repostero. Clock time is 1½ to 3 hours depending on how wide your pot is.

The ratio

1 L milk to 250–300 g sugar is the canonical range for Argentine home pots. I cook at 280 g. Drop to 250 g if you want it less candy-sweet, 300 g if you want a denser, sweeter jar.

On the milk

Whole milk. Fat carries flavour and keeps the mouthfeel from going chalky as the proteins concentrate. Ultra-pasteurised milk works but already tastes cooked and browns a little duller; ordinary pasteurised whole is better. Fresh, not sour — acid curdles the proteins before they brown. Argentine dulce de leche is cow's milk. Goat's milk is another confection, closer to Mexican cajeta.

On the baking soda

People skip this, then wonder why the pot is still beige at hour three, or why it split. Baking soda raises pH, and Maillard runs faster in a mildly alkaline pot — so the milk colours at a simmer, around 95–100 °C / 203–212 °F, instead of sitting white until the proteins coagulate. Too much is worse than none. Above about 1 g per litre you get a soapy taste and a grey-tan colour. Use 1 g. Weigh it. A rounded ¼ teaspoon of fresh soda is close; a heaping one is already too much.

On the vanilla, and the salt

A split pod goes in with the milk at the start: the seeds speckle the pot, the pod infuses the whole cook, and you fish it out at the end. That is how I prefer it. Extract goes in off the heat — two hours of simmer blows off the alcohol and a chunk of the aroma. One or the other, not both. Salt is optional and does not make this savoury; it keeps the sweetness from reading as flat candy. If you are filling alfajores, skip it — the cookie already has salt.

Equipment

  • A wide, heavy pot — 28–32 cm across, 4–5 L, stainless or enamelled steel. Surface area is the timer
  • A heatproof spatula or wooden spoon, flat enough to scrape the bottom and the walls
  • A wet pastry brush, to knock sugar crystals off the wall
  • A small plate in the freezer, for doneness checks
  • A clean 500 ml glass jar, sterilised

Not needed, and actively harmful: a sealed can of condensed milk sitting in a pot of water. That is not this recipe. Cans can rupture, the process is untested as home canning, and you cannot see colour, scrape, or stop at clásico. Also skip: thin nonstick (two hours of scraping wrecks it, and you cannot see the brown film on the wall); a pressure cooker as the method, because enclosed steam is not a Maillard pan; the microwave; and a whisk once it thickens.

Method

  1. Dissolve everything cold5 min

    Pour the milk into the wide pot. Add the sugar, baking soda, and salt. If you are using a pod, split it, scrape the seeds in, and drop the pod in. Stir cold until the sugar is mostly dissolved and the soda has no dry pockets.

    Starting cold matters. Sugar dumped onto hot milk sits on the bottom and can scorch before it dissolves. Soda dumped into a rolling simmer foams hard and climbs the walls. A faint yellow tint from the soda is normal — it is not a curdle.

    Put a small plate in the freezer for testing later. In a wide pot, stir cold whole milk, sugar, baking soda and optional salt until mostly dissolved, with no dry soda pockets. Use no more than 1 g soda. If using a vanilla pod, add its seeds and split pod now; save extract for the end.

  2. Bring it to a simmer10–15 min

    Medium heat, stirring now and then. You want a simmer, not a boil: small bubbles at the edge, a surface that shivers, around 95–98 °C / 203–208 °F. A hard boil throws protein foam and scorches the bottom before the water has had time to leave.

    When it first simmers the soda will foam. Knock it down with the spatula and it settles in a minute or two. If it threatens the rim, drop the heat. Do not add butter "to stop the foam" — that is a different confection.

    Heat on medium, stirring occasionally, to a gentle simmer at 95–98 °C / 203–208 °F, about 10–15 minutes. Lower the heat if the initial foam rises; stir it down with a spatula. Do not boil hard or add butter.

  3. The long reduction60–90 min

    Lower the heat so the surface barely moves. Uncovered. Stir every 5–8 minutes for the first hour, scraping the bottom in a full circle and the walls where a beige film forms.

    That film is flavour if it has browned and not blackened — scrape it back in. If a patch has gone dark brown-black and smells bitter, leave that patch. Bitterness does not cook out.

    This stage looks like nothing is happening, and then it looks like café con leche. Volume drops. Colour shifts from white to ivory to the tan of milky coffee. It still pours. You will smell sweet milk, then a faint toasted note — that note is Maillard, proteins and lactose, not sucrose caramelising. Sucrose needs roughly 160 °C / 320 °F to caramelise dry, and you are nowhere near that.

    A wide pot at a true low simmer hits café con leche around 60–75 minutes. A narrower pot will still be pale. Do not raise the heat to catch up — that scorches the bottom while the top is still thin.

    Simmer uncovered over low heat for 60–90 minutes, stirring and scraping the bottom and sides every 5–8 minutes during the first hour. Incorporate beige film, not blackened or bitter patches. Expect a milky-coffee color after roughly 60–75 minutes in a wide pot; a narrow pot takes longer. Do not raise the heat to hurry it.

  4. The thickening20–40 min

    Once it looks like café con leche, the solids are high enough that the bottom wants to catch. Stir every 1–2 minutes and keep the simmer lazy.

    Colour. Café con leche is pale tan and still pourable — good for coffee, flan, ice cream. *Clásico* is commercial-jar brown: a ribbon that falls from the spatula and sits a second before sinking. *Repostero* is mahogany, stiff, pulling from the sides in a slow mass — that is pastry filling.

    Sound. The bubbles get slower and heavier. When it plops rather than simmers, you are in the last stretch.

    The cold plate. Drop a small spoonful on the frozen plate, wait ten seconds, and tilt it. Café con leche runs. Clásico wrinkles and holds a trail. Repostero sits in a mound.

    It thickens more as it cools, so stop a notch looser than the jar you want. For toast, medialunas, and pancakes, stop at clásico. For alfajores de maicena, take it to repostero — a loose dulce in a cornstarch cookie is a leak.

    If the sides crust with pale sugar, brush them down. Those crystals can seed a grainy jar.

    As it thickens, stir every 1–2 minutes for another 20–40 minutes. Test a spoonful on the frozen plate: wait ten seconds and tilt. Clásico leaves a trail; repostero holds a mound and suits alfajores. Stop slightly looser than desired because it thickens on cooling. Brush down pale sugar crystals on the sides.

  5. Finish and jar it12 min, then cool

    Off the heat when the plate test says so. Fish out the vanilla pod, or stir in the extract now, off the heat. Residual heat in a heavy pot keeps cooking — err loose.

    Pour into the warm sterilised jar, wipe the rim, lid on. Cool until the jar is no longer hot, about an hour, then refrigerate.

    Do not leave a pot of warm dairy-sugar paste on the stove all evening. Homemade dulce has no industrial preservative. Treat it like a dairy product that happens to be sweet.

    Remove from the heat. Discard the vanilla pod, or add the vanilla extract now. Pour into a warm sterilized jar, wipe the rim and cover. Cool until no longer hot, about an hour, then refrigerate; this is refrigerated dairy, not shelf-stable canning.

Storing it

How long it keeps

Refrigerated, in a clean jar, 2–3 weeks for homemade. Commercial jars last longer because they are a plant process — do not use a store date as your homemade date. A thin skin on the surface is not spoilage; press parchment onto it if it bothers you. It freezes: small containers, a little headspace, three months. Thaw in the fridge and stir it smooth.

If it goes grainy

Usually lactose and sucrose crystallising in the cold. Not dangerous. Prevention is dissolving the sugar fully at the start, brushing down wall crystals, and not stirring the sugar crust back in. To rescue it, warm it over a water bath and stir until the crystals dissolve; a teaspoon of warm milk over low heat helps stubborn ones. You are slightly re-diluting it — that is a fix, not an improvement.

Not negotiable

  • Do refrigerate it, and use a clean spoon every time. - Do throw it out if it smells fermented, fizzy, or cheesy. - Don't water-bath can this formula. There is no lab-tested process here and I am not handing you one. - Don't leave it in the danger zone, roughly 5–60 °C / 40–140 °F, for hours. Cool it before the fridge, but do not let it sit out.

Troubleshooting

Still white after an hour.

Heat too low, pot too narrow, or no soda. Do not add more soda now — alkali late tastes soapy and foams. Wider pot next time.

Soapy, or grey.

Too much baking soda. There is no fix I trust. Start over at 1 g.

It split — grainy and watery.

The proteins coagulated: milk slightly acid, heat too high, or an unstirred bottom boil. Sometimes a splash of hot milk and a hard stir off the heat brings it back. Curds sitting in sweet whey means it is broken. Next batch: fresh milk, lower heat, soda from the start.

Scorched, bitter.

Do not scrape the burnt part back in. If the rest tastes clean, pour it off into a new pot and finish. If the whole batch is bitter, it is done.

It foamed over.

Soda plus a boil, or too small a pot. Lower the heat. Next time: wider pot, true simmer, soda dissolved cold.

Too thin after cooling.

You stopped at café con leche. Return it to the pot and cook to clásico. It is easier to cook it further than to thin a repostero.

Too thick, like paste.

You went to repostero. Warm it with a spoon or two of milk over very low heat — or fill alfajores with it.

Gritty, from the wall crust.

Those crystals seeded the batch. Water-bath and stir. Prevention is the wet brush.

Colour right, taste flat.

Salt and vanilla. A pinch of salt off the heat often does more than another half-hour of browning.

Substitutions

Swaps, and the verdict on each

SwapVerdict
Whole cow's milkTraditional. Use this
2% or skimKnown departure. Chalkier, easier to split
Ultra-pasteurised wholeUsable. Duller browning
Goat's milkNot this recipe — that is closer to cajeta
White sugar, 250–300 g per litreCanonical range
Brown sugar / panela / honeyKnown departure. Wrong flavour; honey's acid can curdle
Baking soda, ~1 g per litreCanonical home practice
Baking powderNo. It is not soda
Vanilla pod from the startTraditional, and my preference
Vanilla extract off the heatFine, and common
No vanillaTraditional in some pots. Valid
Cinnamon stickKnown departure. Household variation, not standard
Cream at the endKnown departure. Richer, not necessary
Condensed milk, can in waterNot the method. Cans can rupture, you cannot see or scrape, and it is untested as canning
A store-bought jarNot a substitution here — but for alfajores tonight, a firm commercial repostero is what pastry kitchens actually use

Scaling

Canonical ratio: 1 L milk to 250–300 g sugar to about 1 g soda. Scale on the milk.

Row labelHalfBaseDouble
Milk500 ml (2 cups)1 L (4 cups)2 L (8 cups)
Sugar140 g280 g560 g
Baking soda0.5 g (⅛ tsp)1 g (¼ tsp)2 g (½ tsp)
Salt (optional)a pinch1 g2 g
Vanilla½ pod or ½ tsp1 pod or 1 tsp1–2 pods or 2 tsp
Yield at clásico~225 g~450 g~900 g
Time, same wide pota little under base1½–3 hlonger, or two pots

Why doubling costs more than double

Evaporation is a surface problem, so doubling in the same pot more than doubles the time. Use a wider pan or two pots. Soda scales with milk — 1 g per litre, not "a bit extra for luck." A half batch in a wide pot can finish in 70–90 minutes. Watch the colour, not the clock.

What to serve it with

Heat it gently if you are saucing something. A hard boil on finished dulce can split it.

  • Medialunas, split and still warm
  • Alfajores de maicena, as the glue — cooked to repostero, or clásico chilled overnight until it stands
  • A spoon, standing in the jar
  • Pancakes, panqueques, toast, other facturas
  • Flan, a spoonful on the plate or warmed and poured
  • Ice cream, ribboned through at the end or warmed as a sauce

Do not confuse this with the dark dry-sugar caramel you cook in a flan mould. That is caramel; this is dulce. They can sit on the same plate.

Questions

Is this caramel?

No. Caramel is sucrose browned around 160 °C / 320 °F and up. Dulce de leche never gets that hot. The brown is Maillard — milk proteins plus lactose, helped by a slightly alkaline pot, while the water leaves. Same colour family, different chemistry.

Why baking soda?

pH. Maillard likes a higher pH, and soda gets you browning at a simmer before the proteins curdle. Skip it and you can still get there, slowly, with more risk of a split or a pale result. Overdo it and you get soap and grey.

How do I know when it's done?

Colour plus the cold-plate test, not the clock. Café con leche pours. Clásico ribbons and holds a trail. Repostero mounds. Stop a notch looser than the jar in your head — it thickens as it cools.

Slow cooker or pressure cooker?

An uncovered slow cooker will reduce milk if you give it most of a day and still stir near the end. A sealed pressure cooker hides the stage and does not evaporate. This recipe is the open wide pot.

Why did mine take three hours?

Narrow pot, timid heat, or too much milk for the surface area. Next time, wider. Do not crank the heat to punish the pot.

Can I can it for the pantry?

Not from this page. Homemade dulce goes in the fridge.

Is the condensed-milk can method the same thing?

No. Condensed milk is already concentrated and sweetened; you would only be browning it. The unopened-can-in-boiling-water version adds a rupture risk I will not walk you through. If you need dulce tonight and cannot stand at a pot, buy a jar.