Bubur Ketan Hitam: A Sweet Porridge of Softly Yielding Black Rice
Cook black glutinous rice slowly until the grains are soft enough to crush and the porridge is thick. Keep the sweetness gentle and the pinch of salt in place, and let a little coconut cream added at the table supply the richness.
Lift a spoonful and the porridge is a deep purple-black and thick, with soft grains that are almost falling apart but still just visible. A thin line of white coconut cream sits on top, and in the mouthful the gently sweet rice meets the creamy coconut. This is bubur ketan hitam, a sweet black glutinous rice porridge from Indonesia, served as a homely dessert or snack.
The name describes the dish directly: bubur means porridge, and ketan hitam means black glutinous rice. The same porridge goes by other names across the region. In parts of Sumatra the rice is called pulut hitam, a name also used in Singapore and Malaysia, and in Bali a related porridge is known as bubur injun.
The recipe here follows a home recipe from the Indonesian cooking site Cook Me Indonesian, written for 4 servings: 150g black glutinous rice and 2 litres of water, simmered for about 2 hours in total, with raw sugar, salt and pandan added halfway through. The amounts, serving count and cooking times come from that recipe; they have not been kitchen-tested for this article. Because rice and stoves vary, judge when it is done by the texture of the grains, not by the clock alone.
The keys to making it at home are using the right rice, glutinous black rice rather than ordinary black rice, and giving it a long, gentle simmer. For more of the country's cooking, see our Indonesian dishes.
Ingredients: Serves 4

Equipment
- A large, heavy pot with plenty of room for the rice and 2 litres of water
- A bowl for soaking and rinsing the rice
- A wooden spoon for stirring the bottom of the pot
- A spoon for checking the texture
- Serving bowls
Choosing the Rice, Pandan, Sugar and Coconut
The rice must be glutinous. Look for packs labeled "black glutinous rice", "ketan hitam" or "pulut hitam" at Asian grocers or online. Ordinary black rice, which is not glutinous, cooks with a different stickiness and breaks down differently, so it does not give the same porridge. Some black rice products or grain blends are not glutinous, so read the label rather than going by color. Keep the 150g weight to dried black glutinous rice; the dry grains and the soaked, rinsed grains also look quite different, so don't judge the amount by eye after soaking.
Pandan is often sold frozen at Asian grocers, and it brings the aroma closest to the dish. If you can't find it, leave it out; the porridge will lack that grassy, sweet scent. Other flavorings such as vanilla do not give the same aroma.
Raw sugar is the sweetener in this recipe. Another light unrefined cane sugar is a reasonable approximation. Palm sugar (such as Javanese gula Jawa) or dark unrefined cane sugar brings a stronger, deeper flavor; that makes a good porridge too, but treat it as a different flavor rather than the same recipe.
Coconut cream should be unsweetened; don't mix it up with sweetened coconut products. Thick cream gives richness in a small amount. Without coconut cream, the thick layer at the top of a can of coconut milk can stand in, though this depends on the brand and how much it has separated. Coconut milk on its own gives a lighter finish.
Method: A Long, Gentle Simmer Until the Grains Give Way
The rice cooks in water alone for about 1 hour, then with sugar, salt and pandan for about 1 hour more. Stir the bottom of the pot now and then, especially near the end as the porridge thickens.
Hard, Scorched, Watery: Fixing It in the Pot
| Problem | Likely cause | What to do |
|---|---|---|
| The centers of the grains are still hard | Short soak, or not cooked long enough | Keep simmering gently and check again with the back of a spoon. Don't stop by the clock alone |
| It catches on the bottom | Heat too high as the porridge thickens | Lower the heat and scrape the bottom of the pot now and then, more often near the end |
| It is watery | Not cooked down enough yet | Keep simmering until it has weight on the spoon. No starch or flour is needed |
| It is too sweet for you | Personal taste | Use the 3 tbsp as written and taste before serving. Next time you can hold back a little and let each person add sugar at the table |
Adding the sugar earlier will not soften hard grains. What matters is that the rice itself has become soft.
Serving: Coconut Cream, Warm or Chilled

The coconut cream is not cooked here. Each bowl simply gets a little drizzled over the top, so the white cream stays bright against the dark porridge and each person can take as much richness as they like.
The Malaysian and Peranakan home-cooking site Nyonya Cooking describes eating pulut hitam either warm or chilled. This article does not give a method, times or temperatures for chilling the porridge or for keeping leftovers.
Ways to vary the bowl without changing the dish:
- Keep the cream separate. Serve the porridge plain and pass the coconut cream so everyone adds it just before eating.
- Serve it warm. One of the two ways described for pulut hitam.
- Serve it chilled. The other way described for pulut hitam.
- Go lighter on sugar. Use a little less and put extra sugar on the table for those who want it.
- Use palm sugar or dark unrefined sugar. This changes the flavor; think of it as a variation rather than the same recipe.
Names and Recipes That Change by Region
Ketan hitam is part of the food cultures of Java, Bali, Sumatra and beyond, according to the Slow Food Foundation's Ark of Taste. In parts of Sumatra it is called pulut hitam, and in Bali the porridge made from it is known as bubur injun. Cook Me Indonesian notes that in Singapore and Malaysia the dish is called pulut hitam and is found on Malay and Peranakan tables, both at home and in eateries. These names overlap, but no single region's version is the national standard.
Recipes differ as well. The Indonesian recipe from Sasa uses 250g ketan hitam soaked overnight, then cooks the rice in 1L of its soaking water with salt and pandan until soft, adds 200g gula Jawa near the end, and warms coconut milk separately in another pan to pour over. Its sugar, its timing and its separate coconut sauce all differ from the recipe on this page, so the two are not mixed here. Nyonya Cooking's pulut hitam is another separate recipe.
The black grains look black when dry but cook to a deep purple-black. The dish's exact origins and age are not established by the material used here, so this article does not make claims about its history.
Frequently Asked Questions
Can I use any black rice?
No. Use black glutinous rice. Ordinary black rice is not glutinous, so it gives a different stickiness and does not break down into the same thick porridge.
Do I have to soak the rice?
Cook Me Indonesian recommends soaking for at least 3 hours and ideally overnight, and its recipe card calls for an overnight soak. How long unsoaked rice would take to cook is not established here.
When does the sugar go in?
In this recipe, after the rice has simmered in water for about 1 hour, together with the salt and pandan. Other recipes, such as Sasa's, add the sugar near the end of cooking instead.
Is it eaten warm or cold?
Both. Nyonya Cooking describes eating it warm or chilled. This article does not give chilling or storage times.
Are pulut hitam and bubur injun different dishes?
They are names used in different places for black glutinous rice porridge: pulut hitam in parts of Sumatra and in Singapore and Malaysia, and bubur injun in Bali. The ingredients and proportions vary by region and household.
Sources
- Cook Me Indonesian / Deyana Goh, "Bubur Ketan / Pulut Hitam: Black Glutinous Rice Dessert Porridge (Vegan)." The main recipe on this page: serving count, ingredients and amounts, soaking, cooking order and times, signs of doneness, the meaning of the name, and the use of pulut hitam in Singapore and Malaysia. https://www.cookmeindonesian.com/bubur-ketan-pulut-hitam-black-glutinous-rice-dessert-porridge-vegan/
- Sasa Kreasi Sasa, "Bubur Ketan Hitam." Used only for comparison: a separate Indonesian recipe with gula Jawa added near the end and coconut milk warmed in a separate pan. https://www.sasa.co.id/kreasisasa/recipe/bubur-ketan-hitam
- Slow Food Foundation, "Ketan Hitam - Ark of Taste." Ketan hitam in the food cultures of Java, Bali and Sumatra, the name pulut hitam in Sumatra, bubur injun in Bali, and the color of the rice. https://www.fondazioneslowfood.com/en/ark-of-taste-slow-food/ketan-hitam/
- Nyonya Cooking / Grace, "Pulut Hitam (Black Glutinous Rice Sweet Soup)." Used only for serving the porridge warm or chilled. https://www.nyonyacooking.com/recipes/pulut-hitam-black-glutinous-rice-sweet-soup~BJif_wswz5-X











