Extra Dark Chocolate Gelato (90%)
Dry and almost savoury at the front, it turns round in the middle as the milk sugars catch up, then finishes long and dark with nothing sweet chasing it.

At this cocoa level the number on the front of the wrapper tells you less than the order of the ingredient list. A 90 percent bar runs near 53 percent fat, 13 percent protein and 7 percent sugar, and where a maker sits inside that range changes what you pour into the mix. Skimp on cocoa butter and the weight tips towards protein, which is the tight constraint here: the sheet closes at 4.83 percent against a ceiling of 5.00, so cocoa powder is held to 15 g. It is also why the bar stops at 110 g per kilo, and why 407 g of skimmed milk sits in the formula doing the diluting that lets fat and protein fit.
Cocoa powder is held to 15 g/kg, close to a symbolic amount. Cocoa is around 20% protein and a milk base has a 5% protein ceiling, and protein here already finishes at 4.83%. A formula can be pushed to 25 g of cocoa and still pass, but it passes by a hair, and a recipe that passes by a hair breaks on the first rounding error of a kitchen scale.
The sugar architecture is inverted compared with a 70% build. The 90% brings almost no sugar of its own, so every point of sweetness and most of the freezing point depression has to come from added sugars: 125 g/kg of sucrose plus 45 g/kg of dextrose, giving POD 168.85 and PAC 261.76 with total sugars at 17.39%.
Skim milk at 407 g/kg alongside 270 g/kg of whole milk is the dilution valve. It lets fat settle at 7.18% in the middle of the 5 to 12 band while MSNF still clears its floor at 8.3%, and it keeps lactose down to 7.39% of the water phase.
Ingredients
Makes 1000 g of finished base.
| Ingredient | Grams | Home measure |
|---|---|---|
| Skim Milk | 407 | 1 2/3 cups |
| Whole Milk | 270 | 1 1/4 cups |
| Sugar (Sucrose) | 125 | 1/2 cup plus 2 tablespoons |
| Dark Chocolate 90% | 110 | |
| Dextrose (Glucose) | 45 | 1/4 cup |
| Non-Fat Dry Milk | 23 | 1/4 cup |
| Cocoa Powder 22-24% | 15 | |
| Stabilizer (Neutral) | 4 | |
| Salt | 1 |
Method
Frozen slab, spatula paddling
- 1Whisk every dry ingredient together first: sugars, milk powder, stabiliser and salt. Dry-blending them stops the stabiliser clumping when it meets liquid.
- 2Warm the liquids to 40 C (104 F), then rain the dry mix in while whisking hard.
- 3Heat to 82 C (180 F) and hold for 2 minutes so the stabiliser hydrates.
- 4Melt the chocolate to 45 C (113 F) and stir it into the hot base off the heat, then blend 60 seconds until glossy.
- 5Chill in an ice bath to under 5 C (41 F) within 2 hours. Slow cooling is where bacteria and coarse crystals both start.
- 6Age 6 to 12 hours in the fridge under 5 C (41 F). This is when the stabiliser and the milk protein take up water.
- 7Freeze in a shallow metal pan 2 to 3 cm deep, breaking the crystals with a fork every 30 to 40 minutes, 4 to 6 times.
- 8Freeze firm, then temper 10 to 15 minutes in the fridge before scooping.
The balance
All six against the professional range for Milk Gelato.
Two ceilings shape this recipe, and neither of them is the one people expect. The first is protein at 4.83% against a 5.00 limit, driven by the 13% protein in the chocolate plus the 20% in cocoa powder, which is exactly why cocoa was cut to 15 g/kg and non-fat dry milk to 23 g/kg. The second is fat: the chocolate contributes 5.8% on its own, so almost all of the dairy is skim, and total fat still finishes at 7.18%. With MSNF only at 8.3%, right on the 8 to 12 floor, the mix has little protein structure to spare, so freezing point control has to be chemical rather than structural. That is the job of the 45 g/kg of dextrose, which brings PAC to 261.76 in the middle of the 220 to 300 range while POD stays at 168.85, keeping the gelato firmly bitter.
What is specific to a 90% is that tannin astringency, not bitterness, is the dominant sensory problem. The 1 g/kg of salt is not seasoning, it is a bitterness suppressor: sodium inhibits TAS2R receptors and lowers perceived bitterness without adding sweetness. Do not push salt past 1.5 g/kg, because salt reads PAC 585 on the sucrose scale of 100 and it moves the freezing point out of proportion to its weight. Never bring the base to a boil with the 90% in it: the cocoa butter separates and does not re-emulsify well in a mix this low in sugar. Melt the chocolate separately at 45 to 50 C, fold it into the pasteurized base at 70 C in three additions, blending between each. Mature at least 12 hours, since the 90% needs that time for the fat to crystallize and the bitterness to round off.
If it goes wrong
The base was boiled with the chocolate in it and the cocoa butter separated. At 17.39% total sugars there is not enough sugar to help it re-emulsify.
Melt the 110 g/kg of chocolate separately at 45 to 50 C and add it to the base at 70 C in three additions, blending after each.
Tannins from the 90%, unmitigated. Salt was skipped or the mix was churned straight after cooking.
Keep salt at 1 g/kg and mature the base at least 12 hours before churning.
The 15 g/kg of cocoa powder went into hot liquid and clumped on contact.
Disperse the cocoa into a portion of the cold milk with the sugars before heating, and pass the finished base through a stick blender.
Allergens: milk
- https://icecreamcalc.com/2021/03/12/chocolate-gelato/
- https://chocolatealchemy.com/recipes/deep-flavored-chocolate
- https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8405736/
Want to change an ingredient and watch the numbers move? Open the free balancer