Skip to content
DishRoute.

Halo-Halo.

Filipino Shaved Ice with Beans and Flan

Halo-halo · say it: HAH-loh HAH-loh

Halo-halo is a glass of shaved ice sitting on a heap of sweetened things: red beans, chewy cubes of nata de coco, sugar palm fruit, strands of jackfruit in syrup, a stripe of ube jam, and a cube of leche flan balanced on top. Evaporated milk goes over it at the table and the whole thing is immediately stirred into rubble — the name means mix-mix, and it is an instruction rather than a description. The taste is milky and cold with pockets of very different sweetness, and the pleasure is textural: soft, chewy, slippery, crunchy and icy all arriving in the same spoonful.

Tall glass of Filipino halo-halo with shaved ice, purple ube jam, leche flan cube and layers of sweet beans and jelly
Filipino Shaved Ice with Beans and Flan
Prep
30 min
Cook
30 min
Total time
3 hr incl. 2 hr rest
Serves
4
Status
Easy
Nutrition / serving · estimated
Calories 540 kcal
Protein 12 g
Carbs 92 g
Fat 14 g
Fiber 5 g
Sugar 76 g

Why this recipe works.

  • Assembly order and chilling discipline spelled out, since a warm glass or undrained syrup is what turns halo-halo into soup.
  • A steamed leche flan sized for four glasses rather than a whole cake, so the best component is not the one you skip.
  • Names every jarred item and says plainly which are worth hunting down and which are padding.
  • Treats it as the mixed dish it is, not a layered parfait to be photographed and eaten in strata.

Ingredients.

21 items
Servings
4
Now showing amounts for 4 servings

For the leche flan

For the sweet beans

From the pantry, drained

To finish

Equipment

  • Ice shaver, high-powered blender or food processor
  • Small metal tin or ramekins for the flan
  • Steamer with a lid
  • Fine sieve
  • Tall glasses and long spoons

Instructions.

  1. Caramelise the flan tin

    Heat the 80 g sugar with 2 tablespoons of water in a small pan, swirling but not stirring, until it turns deep amber and smells toasted. Pour it straight into a small metal tin or four ramekins and tilt to coat the base before it sets hard, which takes under a minute.

  2. Mix the custard without aerating it

    Stir the egg yolks and whole egg together with a fork rather than a whisk — you want them combined, not foamy. Stir in the condensed milk, evaporated milk and zest, then pass the mixture through a fine sieve twice to catch any strands of white. Pour it over the set caramel and cover tightly with foil.

    Tip Every air bubble you beat in now shows up as a hole in the finished flan.

  3. Steam the flan gently

    Steam over low, barely trembling water for 25–30 minutes, until the edges are set and the centre only just wobbles as a single mass when you nudge the tin. Cool, then refrigerate at least 2 hours before running a knife round the edge, turning out and cutting into small cubes.

  4. Sweeten the beans

    Simmer the drained beans with the sugar, water and salt for 8–10 minutes, until the liquid reduces to a thick syrup that clings to each bean rather than pooling around them. Cool completely and refrigerate — warm beans will melt the ice on contact.

  5. Drain everything properly

    Tip the nata de coco, kaong, macapuno, jackfruit and saba into a sieve and leave them for ten minutes, shaking occasionally, until they stop dripping. Keep the drained sweets covered in the fridge. This step is the difference between halo-halo and sweet soup.

  6. Chill the glasses

    Put four tall glasses in the freezer for 15 minutes so they frost over. Check that every component — beans, sweets, flan, milk — is properly fridge-cold before you start building.

  7. Layer the base

    Spoon the beans into the bottom of each glass, then add the nata de coco, kaong, macapuno, jackfruit and saba in loose layers so you can see them through the glass. Smear 2 tablespoons of ube halaya up one inside wall of each glass.

  8. Mound the ice and top it

    Shave the ice to a fine snow and pack it into each glass, heaping it well above the rim so it holds its shape. Set a cube of leche flan on top, add a scoop of ube ice cream if using, and scatter over the pinipig for crunch.

  9. Pour the milk at the table

    Carry the glasses out, pour about 75 ml of cold evaporated milk over each one, and hand people a long spoon. Tell them to stir it down to the bottom until the ice, milk and ube collapse into one lilac-grey mixture — that mixing is the dish, and eating it in tidy layers means missing the point.

Tips from our kitchen.

  • Drain the jarred sweets in a sieve for a good ten minutes. The syrup clinging to nata de coco and kaong is what floods the glass and makes everything taste the same.
  • Chill every single component to fridge-cold and put the glasses in the freezer for fifteen minutes beforehand. Ice hitting a room-temperature glass is already melting before you pour the milk.
  • Shave the ice as fine as your equipment allows. Snow packs around the sweets and holds the milk; chunks leave hollow gaps and slide off the spoon.
  • Smear the ube halaya up the inside wall of the glass rather than dropping it in the middle. It looks better through the glass and it distributes more evenly when stirred.
  • Steam the leche flan rather than baking it, and keep the heat gentle. A hard boil pushes the custard into bubbles and gives you a pitted, spongy texture instead of a dense one.
  • Pour the evaporated milk at the table, not in the kitchen. Poured early it sinks and the ice above it stays plain.

Substitutions.

Ube halaya (purple yam jam) Sweet potato mashed with condensed milk and butter, or a scoop of ube ice cream on top instead
Bottled ube halaya is sold in every Filipino grocery and freezes well. Taro paste is the closest supermarket stand-in and tastes similar but is far less sweet.
Kaong and nata de coco Any two chewy jarred sweets — sweetened jackfruit, palm seeds, sago pearls, or lychee
The role they play is texture, not flavour. What you cannot substitute is chewiness: a glass with only soft components is dull to eat.
Homemade leche flan A shop-bought flan, cut into cubes
Filipino groceries sell it in foil trays. It is the single component most worth including, home-made or not.
Evaporated milk Whole milk with 2 tbsp condensed milk stirred in, or coconut milk for a dairy-free glass
Evaporated milk is used because it is concentrated enough to survive dilution by melting ice. Plain milk goes watery fast.

Variations.

Pampanga style
Stripped back to three things — macapuno, sweetened saba banana and leche flan — with milk and ice and nothing else. Fewer ingredients, more strongly flavoured milk.
Mais con hielo
The one-ingredient ancestor still sold everywhere: sweet corn, shaved ice and milk in a glass. Takes two minutes and is genuinely good.
Halo-halo sundae
Built in a bowl with the ice cream underneath rather than on top, so it half-melts into the milk and thickens the base as you dig down.

Storage & reheating.

The assembled glass has no shelf life at all — it is a puddle in twenty minutes and cannot be refrigerated or saved. Everything that goes into it, though, stores well. Sweetened beans keep a week in the fridge in their syrup. Leche flan keeps four days covered and is arguably better on day two, when it has firmed up and the caramel has fully dissolved into a sauce. Opened jars of nata de coco, kaong and macapuno keep two to three weeks refrigerated in their own liquid. Ube halaya keeps two weeks in the fridge and freezes for three months. Set the whole lot out in bowls and let people build their own rather than trying to assemble in advance.

Serve with

A long spoon and a long-handled teaspoon; nothing else. It is eaten mid-afternoon, on its own, in the heat.

The story behind Halo-Halo.

The trail back from halo-halo leads, most historians agree, to Japanese migrants who settled in Manila in the decades before the Second World War. They ran small shops selling kakigōri — Japanese shaved ice — and a version topped with sweetened mung beans that Filipinos knew as monggo con hielo, beans with ice. The refrigeration technology arrived with them, and the format did too. What happened afterwards was entirely Filipino: the beans multiplied into several kinds, the local sweets and preserves that already lived in every pantry got tipped in, and by the post-war decades the restrained Japanese original had become the maximalist thing it is now.

That maximalism is the point of contention. Halo-halo is not a fixed recipe but a shelf: whatever your household stocks in jars goes in. Nata de coco and kaong, macapuno, sweetened saba banana, jackfruit, sweet corn, purple yam jam, sago pearls, toasted pinipig rice flakes, leche flan, a scoop of ube ice cream on top if the budget allows. Some cooks argue the dish has been ruined by additions and that the older, plainer version was better — Pampanga is known for a deliberately minimal style, most famously at Razon's, which uses only macapuno, sweetened saba and leche flan and nothing else, and has a devoted following precisely because of what it leaves out. Elsewhere, the pile keeps growing.

It is summer food in a country whose summer is punishing. Halo-halo appears in April and May at sari-sari stores, roadside stalls and shopping malls, and it is one of the very few Filipino dishes that everyone from a street vendor to a national fast food chain sells in essentially the same form. The ritual around it matters more than the ingredient list: it arrives layered and beautiful, and the first thing you are expected to do is destroy that, working the spoon down to the bottom until the milk has picked up the ube and the whole glass is a uniform lilac-grey. Eating it in neat layers marks you out immediately as someone who has not done this before.

Questions, answered.

What is ube and is it the same as taro?

No, though they are constantly confused. Ube is a purple yam, deep violet all the way through, sweet and slightly vanilla-like, and it is usually sold already cooked into a jam called ube halaya. Taro is a corm with pale flesh flecked lilac, and it tastes starchier and much less sweet. Recipes and products labelled taro in Western supermarkets are often coloured to look like ube, which does not make them the same thing.

Do I really need all those jarred ingredients?

No. A perfectly respectable halo-halo can be made with sweetened beans, one chewy element such as nata de coco, ube halaya, ice and evaporated milk. What you are aiming for is a spread of textures rather than a long list — something soft, something chewy, something creamy. The minimalist Pampanga style uses three components and is widely considered among the best in the country.

Why does my halo-halo turn into a watery mess so quickly?

Three usual causes: the components were not fully chilled, the jarred sweets went in without draining their syrup, or the ice was crushed into chunks rather than shaved into snow. Chunky ice melts into pools of water rather than absorbing the milk. Freeze the glasses, drain everything in a sieve, keep every component in the fridge until the last moment, and it will hold together long enough to eat.

Do I need a shaved ice machine?

A dedicated shaver gives the best texture, but a high-powered blender pulsed briefly with ice cubes gets close, and so does a food processor. The lowest-tech method works well too: freeze water in a shallow tray, then scrape the surface hard with a strong metal spoon to raise flakes. Whatever you use, aim for snow rather than gravel.

How is halo-halo different from cendol or Korean bingsu?

All three are shaved ice desserts and they diverge completely after that. Cendol from Malaysia and Indonesia is built on pandan rice-flour strands, salted coconut milk and palm sugar syrup, and it is a fairly focused combination. Bingsu is generally milk-based ice with one dominant topping like red bean or mango. Halo-halo is deliberately crowded — a dozen sweetened components in one glass — and it is stirred into a mixture rather than eaten in layers.

Can I make halo-halo ahead for a party?

Only the components. Prepare the leche flan and beans a day or two early, drain the jarred sweets and keep them covered in the fridge, and shave the ice into a container in the freezer just before guests arrive. Then set everything out and let people assemble their own glasses. Anything assembled more than a few minutes in advance arrives at the table as sweet milk with debris in it.

Keep exploring Philippines.

Philippines has 9 more dishes in the atlas — Chicken Inasal and Filipino Adobo, and 7 more.

Recipe by The DishRoute Kitchen · published August 20, 2026 · updated August 20, 2026