Sapin-sapin is a Filipino layered rice cake made with glutinous rice flour and coconut milk. The layers are steamed one at a time, each with its own flavor and color.
It's soft and chewy, lightly sweet, and usually topped with latik or toasted coconut. It might look fancy, but it's really just a steamed rice cake made with simple ingredients and a little patience.

Jump to:
What is Sapin-Sapin?
Sapin-sapin is a Filipino rice cake made by steaming soft, chewy layers one on top of another. The name literally means "layers," which pretty much describes it - one pan, different colors and flavors, all stacked together.
Each layer is usually flavored with ube, langka, or macapuno. The texture is chewy and the layers stick together just enough to hold their shape when cut.
Ingredients You'll Need

Notes and Substitutions
- Coconut cream: This is what you need to make latik - the thick part of coconut milk, also called kakang gata. You can also use unsweetened desiccated coconut instead or use both for the topping.
- Glutinous rice flour (sweet rice flour): It's made from sticky rice and gives sapin-sapin its chewy texture. Regular rice flour won't work the same.
- Coconut milk: This is used for the base batter. Use full-fat coconut milk for the best texture and flavor.
- Ube jam (ube halaya): Adds flavor and a bit of color to the purple layer. A few drops of ube flavoring can help make the color darker.
- Achuete powder: Used mainly for color. Always dissolve it in warm water first so it mixes evenly.
- Macapuno: Soft, jelly-like coconut, and usually sold sweetened in jars. You can also use young coconut meat (buko).
How to Make Sapin-Sapin (Step-by-Step)
Step 1: Make the coconut curds (latik)
Pour 1 can of coconut cream into a wide pan. Cook it over medium-high heat until it comes to a boil.
As it heats up, it will slowly thicken and begin to separate-this takes about 20 minutes, so don't rush it.

Once it thickens, lower the heat and keep it simmering, stirring now and then. Scrape the bottom and sides of the pan so nothing sticks or burns.

You'll know it's ready when the oil separates and the coconut bits turn golden and crisp. Turn off the heat at this point.
If they get too dark, they can taste bitter, and if they're too light, they won't have much flavor.

Strain to separate the crispy coconut bits (latik) from the oil. Set both aside - the latik will crisp up more as it cools.
For a detailed, step-by-step guide on making latik, be sure to check out my latik tutorial.

If you want to save time, you can use toasted coconut instead. Toast unsweetened desiccated coconut in a dry pan over medium heat until lightly golden. It's quicker and lighter in flavor, but still adds a nice crunch on top.

Step 2: Prep your steamer and pan
Set up your steamer and add about 2 inches of water, making sure it does not touch the pan. Bring the water to a gentle simmer-you want steady steam, not a hard boil.
Wrap the steamer lid with a clean kitchen towel to catch condensation so it doesn't drip onto the sapin-sapin.
Note: I used a large pot with a rack and only needed about 1 inch of water. Just keep the water below the rack and add more if needed.

Lightly grease an 8-inch round pan, including the sides. If you made latik, use a bit of the reserved coconut oil for extra flavor and to help prevent sticking.

If you're using banana leaves, wipe them clean and pat dry. Quickly pass them over a flame to soften them and bring out the smell.
Line your serving platter with the leaves, brush lightly with latik oil, and set aside.

Step 3: Make the base batter
In a large bowl, combine:
- 3 cups glutinous rice flour
- 1¼ cups white sugar
- a pinch of salt
- 1 (13.5 ounce) can coconut milk
- 1½ cups water
Mix the batter until smooth. It should be thick but pourable, similar to pancake batter.

Step 4: Divide and flavor the layers
Divide the batter evenly into 3 bowls, just under 2 cups each.
For the purple layer: Add ½ cup ube jam and a few drops of ube flavoring, until you get the color you like.

Mix the batter until smooth and the color is even.

For the orange layer: Dissolve 1 teaspoon achuete powder in 1 tablespoon warm water.

Mix it into the batter until the color is even.

For the white layer: Mix in ½ cup macapuno. If the strands are long, chop them first so they spread better.

Mix the batter until smooth.

Step 5: Steam the layers
Take your time with this step. Each layer needs to set before adding the next so the colors stay clean and the sapin-sapin cooks evenly.
Layer 1: Pour the ube layer into the prepared pan. Steam for about 12 minutes.

How to check: Lightly tap the center with a fingertip or the back of a spoon. It should feel set and no longer wet, even if it's still soft.

Layer 2: Mix the batter again, then slowly pour the orange layer over the first layer. You can pour it over the back of a spoon so it goes on gently and doesn't break the layer underneath. Steam for about 15 minutes.

Check: The center should feel set before moving on. Make sure there's still water in the steamer and add more if needed.

Layer 3: Mix again before pouring the white layer in. Steam a little longer, about 18 minutes.

Check: Press the center lightly-it should feel firm but still bouncy.

Turn off the heat and let the cake sit in the steamer for 15 minutes, with the lid on. This makes sure it cooks all the way through and holds its shape.
Step 6: Cool and unmold
Take the pan out of the steamer and let the sapin-sapin cool completely. Run a thin knife around the sides, then gently flip it onto a platter to unmold.
Lightly brush the surface with a little latik oil to keep it from drying out and to give it a nice sheen.

Step 7: Slice and serve
Use a sharp knife to slice, wiping it clean between cuts so the layers look nice. Top with latik, toasted coconut, or both.

Sapin-sapin is best enjoyed at room temperature so it stays soft and chewy.

Storage
- If it's not too hot or humid, you can leave sapin-sapin covered on the counter for about a day. If you're keeping it longer, store it in an airtight container in the fridge for up to 5 days.
- When it comes out of the fridge, let it sit for about 20 minutes so it softens before serving.
To Freeze
- Freeze sapin-sapin without the toppings. Wrap it tightly and freeze for up to 1 month.
- Thaw in the fridge overnight or on the counter. If it feels firm, just steam it for a minute or two to soften.
Helpful Tips
- Let each layer set before adding the next.
- Pour new layers gently (over a spoon) so you don't break the layer underneath.
- Check the water level in your steamer and keep it simmering so it doesn't run dry.
- Once it's cooked, leave it in the steamer for about 15 minutes so it cooks through.
Recipe FAQs
Yes. If your room is cool, you can keep sapin-sapin covered at room temperature for a day. If your kitchen is warm or humid, it's better to store it in the fridge, where it will keep for up to 5 days.
Keep the latik in the fridge and add it just before serving - coconut can go rancid if left out too long.
No. Glutinous rice flour is what makes sapin-sapin chewy. Regular rice flour will make it dry and crumbly instead.
The layer underneath wasn't fully set. Let each layer steam until the center feels set and no longer wet before adding the next.
Lightly tap the center - it should feel set and no longer wet, even if it's still soft.
This usually happens when the layers are too thick or there isn't enough steam coming from the pot. Just keep steaming until the center cooks through.
Yes, you can freeze without the toppings. Wrap the slices properly and freeze them for up to 1 month. Thaw in the fridge overnight or at room temperature. Steam lightly to soften if needed.
Try Other Kakanin (Filipino Rice Cakes)
- Bibingka: Soft, coconut-based rice cake, usually topped with salted egg and cheese.
- Puto: Steamed rice cakes that are often served with savory dishes.
- Puto bumbong: Purple rice cakes steamed in bamboo, topped with butter, sugar, and coconut.
- Kutsinta: Chewy, brown rice cake with a slightly sticky texture, topped with grated coconut.
- Palitaw: Soft rice cakes rolled in grated coconut and sesame seeds, with a light sugar coating.
- Suman: Sticky rice cakes wrapped in banana leaves, served with sugar or latik sauce.
- Cassava cake: Dense, chewy cake made with grated cassava and coconut milk, usually baked.
Other Street Food Recipes You May Like

Did you make this recipe? I would love to know! Your feedback helps me make better recipes. Please rate, review, or comment below. Questions about this recipe are welcome, too!
Let's connect on Facebook, Instagram, Pinterest, TikTok, Twitter, and Youtube. Be sure to tag me when you try any of my recipes @recipesbynora!
📖 Recipe

Easy Sapin-Sapin Recipe (Filipino Layered Rice Cake)
Equipment
- Steamer with lid
- 8-inch round pan
Ingredients
Latik topping:
- 1 can coconut cream sub: unsweetened desiccated coconut
Base batter:
- 3 cups glutinous rice flour
- 1¼ cups granulated sugar
- A pinch of salt
- 1 (13.5 ounce) can coconut milk (about 1¾ cups)
- 1½ cups water
Flavoring:
- ½ cup ube jam + a few drops ube flavoring
- 1 teaspoon achuete powder dissolved in 1 tablespoon warm water
- ½ cup macapuno
Instructions
- Make the latik: Cook coconut cream in a wide pan over medium-high heat, stirring now and then, until the oil separates and the coconut bits turn golden (about 30-40 minutes). Strain and set aside the latik and oil.Quick option: Toast unsweetened desiccated coconut in a dry pan until lightly golden.
- Prep the steamer and pan: Add water to the steamer (keep it below the rack) and bring to a simmer (not a hard boil). Wrap the lid with a kitchen towel to prevent dripping.Using the latik oil, grease the pan well to prevent sticking, including the sides.
- Make the base batter: In a bowl, mix glutinous rice flour, sugar, a pinch of salt, coconut milk, and 1 cup of water until smooth. The batter should be thick but pourable.
- Divide and flavor: Divide batter evenly into 3 bowls (just under 2 cups each).Purple: Mix in ube jam and flavoring until smooth and color is evenOrange: Mix in dissolved achuete until evenly colored.White: Mix in macapuno.
- Steam the layers: Let each layer fully set before adding the next to keep layers clean.Ube layer: Pour into pan. Steam for about 12 minutes, until set.Orange layer: Stir the batter again, then pour gently over the back of a spoon. Steam for about 15 minutes.White layer: Stir again before adding, then steam for about 18 minutes, until firm but bouncy.Turn off heat and let cake sit in the steamer 15 minutes, lid on.
- Cool and unmold: Take the pan out of the steamer and let it cool completely. Run a thin knife around the edges, then gently flip onto a platter. Lightly brush the top with latik oil to keep it from drying out.
- Slice and serve: Top with latik, toasted coconut, or both. Slice with a sharp knife, wiping between cuts. Serve at room temperature.
Video
Notes
- Coconut cream (kakang gata): The thick part of coconut milk used to make latik. You can also use unsweetened desiccated coconut, or a mix of both, for the topping.
- Glutinous rice flour (sweet rice flour): Made from sticky rice and gives sapin-sapin its chewy texture. Regular rice flour won't give the same result.
- Coconut milk: Used for the base batter. Full-fat coconut milk gives the best texture and flavor.
- Ube jam (ube halaya): Adds flavor and color to the purple layer. A few drops of ube flavoring can deepen the color if needed.
- Achuete powder: Used mainly for color. Dissolve in warm water first so it mixes evenly.
- Macapuno: Soft, jelly-like coconut, usually sweetened and jarred. Young coconut (buko) works as a substitute.
- Let each layer set before adding the next.
- Pour new layers gently so you don't break the layer underneath.
- Check the water in your steamer so it doesn't run dry.
- Keep covered at room temp for 1 day, or refrigerate up to 5 days.
- Freeze without toppings for up to 1 month. Thaw and steam lightly to soften.









Elma says
This looks absolutely gorgeous! I have to make this.
Nora Reyes says
Thank you, Elma!