Halo-Halo: Shaved Ice Piled With Everything
The Filipino dessert that stacks sweet beans, jackfruit and flan under a mountain of ice

Contents
↓ Jump to recipeHalo-halo means “mix mix” in Tagalog, and the name is an instruction as much as a description. Nobody eats it in the neat stripes you photograph it in. You drive a long spoon straight down to the bottom of the glass and drag the whole architecture up through the ice and milk until the sweetened beans, the ube jam, the flan and the toasted rice have collapsed into one cold, sweet, slightly chaotic mouthful. That collapse is the entire point, and it happens at the table, in front of whoever’s eating it, never in the kitchen beforehand.
The dessert’s structure is fixed even though the exact contents vary from one carinderia to the next. Underneath the ice you build a base layer of sweetened preserves: red mung beans (monggo), kaong (sugar palm fruit) or nata de coco (fermented coconut water set into cubes), macapuno (sweet strings of young coconut), and usually a wedge of leche flan and a few slices of candied plantain or saba banana. Shaved ice goes on top, evaporated milk gets poured over that, and the whole thing is crowned with a scoop of purple ube ice cream and a scatter of pinipig, which is pounded young rice toasted until it smells like popcorn and crunches like it too.
Halo-Halo: Shaved Ice Piled With Everything
Ingredients
- 200g sweetened red mung beans (monggo), drained
- 150g sweetened kaong (palm fruit) or nata de coco, drained
- 150g macapuno strings (sweetened young coconut), drained
- 3 tbsp ube jam (ube halaya)
- 1 ripe saba banana (or 2 small plantains), sliced
- 2 tbsp caster sugar
- 1 slice leche flan per serving, cut into wedges
- 800g finely shaved ice
- 400ml evaporated milk, chilled
- 4 scoops ube ice cream
- 4 tbsp pinipig (toasted pounded rice) or crushed cornflakes
- 4 wafer biscuits, to serve (optional)
Method
- Melt the caster sugar in a small pan over medium heat with a splash of water, add the sliced saba banana and cook for 4-5 minutes until glossy and soft. Set aside to cool.
- Set out the sweetened monggo beans, kaong or nata de coco, macapuno strings, ube jam and candied banana in separate bowls, each well drained of syrup.
- Take four tall glasses. Spoon 2-3 tablespoons each of the monggo beans, kaong, macapuno and a dollop of ube jam into the base of each glass, keeping them in separate wedges rather than mixed.
- Add a few slices of candied banana and a wedge of leche flan to each glass.
- Pile finely shaved ice on top until it mounds well above the rim of the glass.
- Pour 100ml chilled evaporated milk slowly over the ice in each glass.
- Top with a scoop of ube ice cream and a scatter of pinipig.
- Serve immediately with a long spoon and a straw, tucking a wafer biscuit into the ice if using. Stir everything together at the table before eating.
Where it actually comes from
The dessert’s direct ancestor is Japanese, not Spanish, which surprises people used to tracing Filipino food back to three centuries of Spanish rule. In the early twentieth century, Japanese immigrants running small ice cream and confectionery shops in Manila and other Philippine cities sold a version of kakigori, Japan’s shaved ice dessert, sweetened with adzuki beans and topped with condensed milk. Filipino customers took to it fast, and local cooks began substituting what they already had on hand: monggo beans instead of adzuki, kaong and macapuno from the coconut and sugar palm trades that were already deeply embedded in Filipino cooking, and eventually ube, the purple yam that had long been used in native rice cakes and desserts.
By the postwar decades halo-halo had become fully Filipino, sold from department store lunch counters, roadside stalls and, eventually, fast food chains that turned it into a bottled, ready-mixed product you shake up yourself. The Japanese kakigori shops that started it mostly disappeared from public memory, but the dessert they left behind became one of the most recognisably Filipino things you can eat, precisely because it kept absorbing whatever sweet, cold, colourful ingredient the country had plenty of. Older Filipinos will tell you the original name for the whole category of iced desserts was “halo-halo especial” only once ube ice cream and flan were added on top; the plain version, just beans, fruit, ice and milk, was simply “halo-halo” or sold as “mais con yelo” when corn was the main addition.
Building it properly
The single biggest mistake home cooks make is mixing everything into a slush before serving. Halo-halo is meant to arrive at the table as a landscape: distinct pockets of colour and texture visible through the glass, with the mixing happening as a ritual the eater performs themselves. Layer the sweetened beans, fruits and jams around the base and sides of a tall clear glass rather than dumping them in one pile, so each spoonful pulls up a bit of everything rather than three spoonfuls of the same bean.
Shave the ice as finely as you can manage. A blender pulses ice into chunks, not shards, and chunks melt the milk into a thin, wet puddle rather than the fluffy, slowly-dissolving snow you want. A proper ice shaver or a food processor run in very short bursts gets you closer; freeze water in a shallow tray rather than ice-cube trays first, since flat sheets shave more evenly than cubes. Pack the shaved ice down gently as you mound it so it holds its shape when the milk goes over, rather than sliding straight to the bottom the second the pour starts.
Evaporated milk, not condensed, is the traditional pour, because it’s not sweet on its own and lets the sugar already loaded into the beans, jams and fruit carry the dessert. Condensed milk on top of an already-sweet base tips the whole thing into cloying territory, and once you’ve tasted a properly balanced glass the all-condensed-milk version other cuisines sometimes serve tastes flat and one-note by comparison. Chill the tin in the fridge before serving; cold milk holds the ice’s structure for longer at the table, and a lukewarm pour will start collapsing your careful mound within a minute.
The components worth making rather than buying
Ube jam, or ube halaya, is grated purple yam cooked down slowly with coconut milk and sugar until it turns glossy and spreadable, closer to a thick jam than a raw vegetable. Good jarred versions exist and are a reasonable shortcut, but if you can find fresh or frozen grated ube, cooking your own batch gives you a jam with real yam flavour rather than the flat, mostly-sweet character some commercial jars have, since ube on its own is only mildly sweet and gets its intense purple more from the variety than from added colouring in a good batch. Simmer grated ube with coconut milk, sugar and a knob of butter over low heat, stirring often, until it holds its shape on a spoon; this takes 25-30 minutes and keeps in the fridge for a week.
Candied saba banana is worth doing fresh even on a weeknight, because it takes five minutes and tastes far brighter than the tinned, pre-sweetened version, which can have a slightly metallic edge. Saba is a short, blocky plantain variety grown across the Philippines, starchier than a dessert banana and firmer once cooked, so it holds its shape in the glass instead of turning to mush. If you can’t find it, a slightly underripe regular plantain works fine sliced and given the same quick caramelising in sugar and a splash of water.
Leche flan is the one component genuinely worth making ahead rather than buying, and this site’s own leche flan recipe, steamed rather than baked, gives you the dense, only-just-set texture that holds together in wedges instead of collapsing into the ice the way an oven-baked, wobblier custard would.
If you want to make the ube ice cream from scratch rather than buying a tub, steep full-fat milk and cream with a knob of ube jam and a pinch of salt, whisk in egg yolks and sugar cooked gently to a custard, then churn once fully chilled. Home-churned versions are icier than shop-bought but taste far more of actual yam, and the extra graininess barely registers once it’s melting into shaved ice anyway.
Variations worth knowing
Halo-halo de special is the version with everything, no exceptions: leche flan, ube jam, ube ice cream, and often a piece of pastillas (milk candy) tucked in too. Some regions add sweet corn kernels or gelatin cubes in bright colours, which read as garish to outsiders but are entirely standard on a Filipino dessert table, where visual abundance is treated as part of the appeal rather than something to tone down. In Cebu, a version sometimes called “halo-halo with ripe jackfruit” leans harder on the fruit itself, using fresh jackfruit rather than a jam, which gives a fibrous, tropical sweetness that contrasts nicely with the cold ice and cuts some of the richness from the flan and ice cream.
Street vendors in Manila often build theirs in a repurposed jam jar rather than a glass, and top it with a single wafer stick stood upright rather than laid across the rim; it’s a small detail but it changes how the dessert photographs and, more usefully, gives you something crunchy to break off and eat between spoonfuls of the softening ice.
Troubleshooting and serving
If your halo-halo turns watery within a minute of building it, the ice wasn’t shaved fine enough, or the glass and milk weren’t properly chilled beforehand; both let the ice melt from contact heat rather than dissolving slowly as you eat. If the beans and jams sink to the bottom and leave you with a top layer of plain ice and milk, you’ve piled the ice too aggressively before the base layer had a chance to settle; press the base ingredients down gently first so they form a solid enough floor for the ice to sit on rather than sliding through gaps.
Halo-halo has to be eaten the moment it’s built. There’s no making it ahead as a finished dessert; the ice melts within minutes and the whole point of the layered pour is lost once it turns to soup. What you can and should do ahead is stock the fridge with jarred kaong, nata de coco and cooked monggo beans, keep a batch of ube jam and a flan on hand, and shave the ice only when glasses are actually going to the table. Treat it the way you’d treat an ice cream sundae bar: all the pieces ready, assembly happening in the last two minutes before anyone eats.
For a full Filipino dessert spread, pair it with ensaymada for something to nibble alongside the cold, or serve it as the finale after a savoury Southeast Asian coconut dish like gudeg, where the sweetness makes a genuinely refreshing contrast to a long-stewed main.




