Jump to Recipe
Bubur cha cha is a Malaysian and Nyonya dessert soup made from cubed sweet potato, taro, and purple yam simmered in coconut milk with chewy sago pearls and pandan leaves. It’s served warm or chilled, and it tastes like coconut, caramel-sweet root vegetables, and a little bit of chew from the sago, much like the rich coconut custard dessert found in Venezuela’s bienmesabe.
I first had this at a hawker stall in Penang, spooned out of a huge pot that had been simmering all afternoon. The colors caught me before the taste did, orange, purple, and cream, all floating in pale coconut broth.
This version keeps things simple. You boil the roots until they’re fork-tender, cook the sago separately so it doesn’t turn the whole pot starchy, then bring everything together with coconut milk and palm sugar right at the end.
One thing I learned the hard way: if you dump raw sago straight into the coconut milk, it clumps into a gluey mess instead of staying as separate pearls. Cook it on its own first.
Why You’ll Love This Recipe
- Uses simple pantry roots and canned coconut milk
- Naturally vegan and gluten-free without substitutions
- Make-ahead friendly, tastes good the next day too
- Bright colors from purple yam and orange sweet potato
Ingredient Notes
- orange sweet potato: Adds natural sweetness and color. Regular yellow sweet potato works if that’s what you have.
- purple sweet potato: Gives the dish its signature purple flecks. If you can’t find it, use extra orange sweet potato instead.
- taro: Starchy and slightly nutty once cooked. Always cook it fully, raw or undercooked taro contains calcium oxalate crystals that can irritate the throat.
- small sago pearls: These are tiny tapioca pearls, not the large boba-style ones. Small pearl tapioca is an easy swap if sago is hard to find.
- palm sugar (gula melaka): Gives a caramel depth regular sugar doesn’t have. Swap with light brown sugar plus a half teaspoon of molasses if needed.
- pandan leaves: Adds a grassy, vanilla-like fragrance to the broth. Use half a teaspoon of pandan extract or skip it if unavailable.
- sweet corn kernels: Optional but common in Nyonya versions, adds a pop of texture and sweetness against the soft roots.

Creamy Bubur Cha Cha: Sweet Potato Coconut Dessert
Ingredients
Method
- Bring 1 liter water to a boil in a 3-quart / 2.8 L saucepan with the 3 knotted pandan leaves.
- Add the orange sweet potato, purple sweet potato, and taro. Simmer for 6 to 8 minutes until a fork slides through easily but the cubes still hold their shape. Drain and set aside, discard the pandan leaves. Do not undercook the taro, raw taro can irritate the throat.
- Bring 800 ml water to a boil in a 2-quart / 1.9 L saucepan. Add the sago pearls and stir once so they don't stick to the bottom.
- Simmer for 12 to 15 minutes, stirring occasionally, until the pearls turn fully translucent with no white core left.
- Drain the sago in a fine-mesh sieve and rinse under cool running water for 30 seconds to keep the pearls loose.
- Combine the coconut milk, remaining pandan leaf, palm sugar, granulated sugar, and salt in the rinsed-out 3-quart / 2.8 L saucepan. Warm over medium-low heat, stirring, until the sugar dissolves, about 3 minutes.
- Add the sweet corn kernels if using and simmer gently for 2 minutes. Keep the heat low, a hard boil can split the coconut milk.
- Stir the cooked root vegetables and drained sago into the coconut broth. Simmer for 2 to 3 minutes, just until everything is warmed through.
- Taste and adjust sweetness, cold portions need more sugar than warm ones. Discard the pandan leaf before serving.
- Ladle into bowls and serve warm, or chill for at least 2 hours and serve cold over ice.
Notes
- Cook taro fully, undercooked taro can irritate the throat from natural calcium oxalate.
- Cut roots into even 1.5 cm cubes for uniform cooking.
- Cook sago separately, never directly in the coconut milk.
- Keep coconut milk at a gentle simmer, never a rolling boil.
- Adjust sugar after tasting, cold servings need more sweetness than warm ones.

Tips for Success
- Cook sago pearls separately in plenty of water so they turn translucent without turning the pot starchy.
- Cut sweet potato and taro into even 1.5 cm cubes so they finish cooking at the same time.
- Simmer coconut milk gently after adding it, a hard boil can cause it to split and look grainy.
- Rinse cooked sago under cool water right after draining to stop the pearls from sticking together.
- Taste the broth before serving and adjust sugar, cold coconut milk mutes sweetness more than warm broth does.
Variations
- Add cubed pumpkin or extra sweet corn kernels for a Nyonya-style version with more texture and color.
- Swap palm sugar for light brown sugar if gula melaka isn’t available, the flavor turns milder but still works.
- Serve it chilled over ice on a hot day, this is common at hawker stalls in Singapore during summer.
Storage and Reheating
Bubur cha cha keeps in the fridge for 3 to 4 days in an airtight container. The sago pearls firm up as they chill, so don’t worry if the pot looks thicker overnight.
Reheat gently on the stove over low heat, stirring in a splash of water or coconut milk to loosen it back up. Warm for 3 to 4 minutes, just until heated through, and don’t let it boil hard or the coconut milk can split.
I don’t recommend freezing this one. The root vegetables turn mushy once thawed and the sago pearls break down into a starchy paste.
Serving Suggestions
Bubur cha cha works as a stand-alone dessert, ladled into small bowls while it’s still warm. In Malaysia and Singapore, it’s also common to serve it slightly chilled over ice on hot afternoons.
Top it with a drizzle of extra coconut milk right before serving, similar to the coconut topping on Lebanese milk pudding, that pool on top looks good and cools each spoonful. A few toasted coconut flakes on top add crunch if you want it.
Pair it with a simple cup of tea, the roots and coconut here are sweet enough on their own without more sugar on the table.

FAQ
Why does the sago in my bubur cha cha turn into a gluey clump?
That happens when sago pearls go straight into the coconut milk or don’t get rinsed after boiling. Cook the sago in a separate pot of water until translucent, drain it, then rinse under cool water so the pearls stay loose before stirring them into the finished pot.
Can I use tapioca pearls instead of sago pearls?
Yes, small pearl tapioca works the same way as sago in bubur cha cha since both are starch pearls with a similar chewy bite. Stick with the small size, not large boba-style pearls, and cook them the same 15 minutes until fully translucent.
Can I make bubur cha cha ahead of time and keep it in the fridge?
Yes, it keeps for 3 to 4 days in an airtight container in the fridge. The sago firms up as it chills, so reheat it gently on the stove with a splash of water or coconut milk to loosen the texture back up.
Is bubur cha cha served warm or cold?
Both, depending on where you’re eating it. In Malaysia it’s often ladled out warm straight from the pot, while at Singapore hawker stalls you’ll frequently find it chilled over ice, much like Peru’s chilled purple corn pudding, as a refreshing afternoon dessert.
Is bubur cha cha gluten-free and vegan?
Yes, bubur cha cha is naturally gluten-free and vegan as written, since it’s built from root vegetables, sago pearls, coconut milk, and palm sugar with no dairy, eggs, or wheat. Just check that your sugar brand hasn’t added anything else.
What’s the difference between bubur cha cha and Indonesian kolak?
Bubur cha cha uses cubed sweet potato, taro, and sago pearls in coconut milk, while kolak leans on banana and sometimes cassava simmered in coconut milk with palm sugar. Both are sweet coconut soups from the region, but bubur cha cha has more root variety and chewy sago.

