
Pineapple buns, or 菠萝包, are one of the most iconic treats from Hong Kong bakeries. Despite the name, there is no actual pineapple in them. The name comes from the cookie layer on top, which bakes into a pattern that looks like the surface of a pineapple. Inside, the bread is incredibly fluffy and tender, and the topping is buttery and slightly sweet. So good!
I first tried these at a bakery in Hong Kong years ago, still warm from the oven with a thick slab of cold butter stuffed inside. The contrast between the hot bread and the melting butter was unforgettable, and I knew I had to figure out how to make them at home. After a lot of testing I landed on a version that captures that same bakery quality using a stand mixer and simple ingredients. Yes, that’s right!
My recipe has 2 parts: a cookie dough topping and a milk bread base. I make the topping first so it can chill in the fridge while the bread dough rises. Once the dough is shaped and rested, I place the topping disks on, brush with egg wash twice for that rich golden color, and bake until perfectly fractured on top.
Trust me, this is a weekend baking project, but the results are absolutely worth the effort. The buns freeze well, so I always make a full batch so my family and I can enjoy them whenever we want. I encourage you to give it a try by following my step-by-step recipe below.

Ingredients
I split the ingredients into 3 groups: the cookie topping that gives the buns their amazing crust, the enriched bread dough underneath, and a quick egg wash for the glossy finish.
Topping: I use melted butter, sugar, egg yolk, and vanilla mixed with flour, baking powder, and baking soda. This creates a crumbly dough that bakes up crunchy and fractures naturally.
Bread: I build the dough with warm milk, sugar, yeast, heavy cream, egg, bread flour, all purpose flour, salt, and softened butter. The combination of heavy cream and butter makes the bread extra tender and rich.
Egg wash: I whisk together egg yolks, milk, and a pinch of sugar. Brushing it on twice builds the thick shiny layer I love.
How to Make
1. Make the topping dough: Melt the butter and mix it with milk, egg yolk, vanilla, and sugar until smooth.

2. Mix: Combine the flour, baking powder, and baking soda in a separate bowl, then add to the wet ingredients and stir until a crumbly dough forms.

3. Form Dough: Press the crumbs together into a log, wrap in plastic, and chill in the fridge.

4. Activate the yeast: Warm the milk to about 100 to 110°F (38°C) and pour it into the mixer bowl. Add the sugar and yeast, stir, and let it sit for 5 minutes until bubbly and fragrant.

5. Knead the bread dough: Add the heavy cream, egg, both flours, and salt to the yeast mixture. Mix with the dough hook on low until a dough forms, about 2 minutes. Add the softened butter, increase to medium speed, and knead for 14 minutes until the dough is smooth and stretchy. Pull a small piece with both hands to check. It should stretch into a thin, translucent sheet.

6. Let the dough rise: Shape the dough into a tight ball, place it back in the bowl, and cover loosely with plastic wrap. Let it rise in a warm spot until doubled in size, about 1 hour.

7. Shape the buns: Punch the dough down to release the air. Divide it into 16 even pieces (about 62 to 63 g each) and roll each into a smooth ball. Place them on a lined baking sheet with 2 inches of space between each one.

8. Let the buns rise: Cover loosely and let them rise for another 30 to 45 minutes until doubled.

9. Prepare the topping: While the buns rise, slice the chilled topping log into 16 even pieces.

10. Rolling: I roll each piece between 2 sheets of plastic wrap into a thin disk, about 2.5 inches wide.

11. Egg wash: Make the egg wash by whisking the yolks, milk, and sugar together, then chill it in the fridge.
12. Assemble and bake: Preheat the oven to 350°F (176°C). Place a topping disk on each risen bun. Brush with egg wash, let it dry slightly, then brush again for a second coat.

13. Cook: Bake for 15 to 17 minutes until the tops are deep golden and the bottoms are lightly browned.

14. Serve: Let the buns rest in the pan for 5 minutes, then transfer to a cooling rack.

Tips I Recommend to Follow
Measure in grams: Although I’ve listed cups measurement, I highly recommend using grams if possible, which is much more precise and garantee a better result.
Use a stand mixer for the bread dough: Kneading by hand takes much longer and it is harder to develop the gluten properly. A stand mixer with a dough hook makes the 14 minute knead effortless especially when you have a toddler and a busy schedule like me.
Check the dough with the windowpane test: After kneading, pull a small piece of dough with both hands. If it stretches into a thin sheet you can almost see through without tearing, the gluten is fully developed and the dough is ready.
Chill the topping in the fridge, not the freezer: The fridge keeps the dough firm enough to slice but still pliable enough to roll flat. If it gets too hard, let it sit on the counter for 10 to 15 minutes before cutting.
Brush the egg wash twice: One coat gives a pale finish. Two coats with a short dry time in between create a bakery style sheen.
Serving Suggestions
I love eating these straight out of the oven by themselves because they honestly do not need a thing. But the classic Hong Kong way is to split the bun open while it is still hot and slide a cold slab of butter inside. The butter melts into the warm bread and it is incredible. On weekends I prepare a few with jam for my son, and he tears through them. Sometimes I stuff them with leftover char siu for a savory twist that tastes just like the ones I had in Hong Kong.
When I make these for friends, I bake the full batch and place them on a board with butter, jam, and some char siu bao on the side for a dim sum brunch. If you like this recipe, you might also like my steamed custard buns and milk bread rolls too. I always tell people to eat them while they are warm, that is when the topping is at its best.

Frequently Ask Questions
What is the best way to roll the topping without it falling apart?
I roll each piece between 2 sheets of plastic wrap, which keeps it from sticking and gives me more control. The dough is naturally crumbly, so some splitting at the edges is normal and actually helps create the unique look. If it breaks too much, I just press it flat with my fingers instead.
Can I make the topping dough the night before?
Yes, and I actually recommend it. The topping rolls out more cleanly when it has been well chilled overnight. Just keep it wrapped tightly in the fridge. I do not recommend making the bread dough ahead because overnight rising can lead to over proofing and change the texture.
How do I store leftover pineapple buns?
I keep them at room temperature in an airtight container for up to 2 days. For longer storage, I put them in a ziplock bag, press out the excess air, and freeze for up to a month. I never refrigerate bread because it dries it out. To reheat from frozen, I bake them at 350°F (176°C) without thawing for about 10 minutes.
Chinese Cooking Made Easy
Are you new to this website? This free email series is a great place to start. I’ll walk you through a few of my most popular recipes and show you how and why they work. You’ll quickly start to cook better Chinese food in your own kitchen.
Watch video

Pineapple Buns (Bolo Bao)
Ingredients
Topping
- 60 g butter
- 2 teaspoons whole milk
- 1 egg yolk
- 1/2 teaspoon vanilla extract
- 140 g sugar
- 150 g all-purpose flour
- 1/2 teaspoon baking powder
- 1/2 teaspoon baking soda
- Pinch of salt
Bread
- 180 g whole milk
- 70 g sugar
- 7 g active dry yeast
- 160 g heavy cream
- 1 large egg
- 300 g bread flour
- 225 g all-purpose flour
- 5 g salt
- 50 g butter , softened
Egg wash
- 2 egg yolks
- 2 teaspoons whole milk
- 1/2 teaspoon sugar
Instructions
Make the bread topping dough
- Heat the butter in the microwave until it melts completely. Once the melted butter is slightly cooled, add the milk, egg yolk, vanila, and sugar. Mix with a spatula until smooth.
- Combine the flour, baking powder, and baking soda in another medium-sized bowl. Stir to mix a few times, then transfer it to the bowl with the wet ingredients.
- Mix with a spoon or fork until a dough forms. The dough should be very crumbly. Use your hand to press the crumbs together until a thick dough log is formed (see picture in the blog post).
- Transfer the dough onto a large piece of plastic wrap and wrap the dough. Continue shaping the dough once wrapped, so it forms a thick cylindrical log, about 2” (5 cm) in diameter.
- Transfer the dough to the fridge until ready to use.
Make the bread dough
- Add the milk into a small bowl and warm it to approximately 100-110°F (38°C), about 30 seconds in the microwave. The milk should be warm, just a bit above body temperature. Pour it into the KitchenAid mixing bowl. Add the sugar and yeast. Stir it slightly and let it sit for 5 minutes to activate the yeast. You can tell the yeast has activated when there are bubbles forming in the liquid and a strong yeasty smell.
- Add the heavy cream, egg, bread flour, all-purpose flour, and salt into the bowl (add the salt at the end to prevent it from directly touching the yeast).
- Install the dough hook on your KitchenAid. Mix at setting 2, until a dough forms, about 2 minutes.
- Turn off the mixer. Add the butter to the dough. Use a spatula to smear the butter into the dough to prevent it from splashing. Turn the mixer to setting 6. Knead for another 14 minutes, until the dough is smooth and stretchable. During mixing, turn off the mixer and scrape the sides as needed to make sure all the butter is incorporated. Test the dough by pulling a piece of it using both of your hands. It should stretch into a very thin and translucent sheet.
- Form the dough into a tight ball by pulling its sides to the bottom, then place back in the mixing bowl. Cover the top of the bowl loosely with plastic wrap and place it in a warm and humid part of your home. Allow to rise until it double in size, about 1 hour.
Shape the bread dough
- Line a large baking sheet with parchment paper.
- Once the dough is rested, punch the dough softly to push the air out. Place the dough onto an unfloured working surface and knead it a few times. Use a bench scraper or a knife to cut the dough in half, then halve it again into four pieces, and cut each piece into four even pieces, so you get 16 pieces in total. For a more accurate result, you can weigh the dough so each piece is 62 to 63 g (2.1 to 2.2 oz).
- Loosely cover all the dough pieces with plastic wrap and work on the dough pieces one at a time.
- Pinch the ends of a dough ball into its bottom and place the pinched side down. Place your hand over the ball, forming a cage with your fingers and working the ball in a circular motion, applying light pressure with all of your fingers, until the ball is well rounded.
- Place the dough ball onto the lined baking sheet. Repeat with the rest of the dough balls. Make sure there is 2” (5 cm) of space between each ball. Cover the dough balls with plastic wrap while you form the rest, to prevent the dough from drying out.
- Once done, make sure the whole tray is loosely covered with plastic wrap. Place it in a warm and humid place. Let it rise for another 30 to 45 minutes, until the size doubles again.
Egg wash
- Make the egg wash by combining the yolk, milk, and sugar in a small bowl. Whisk together until everything is combined.
- Cover with plastic and place in the fridge. Chilling the egg wash will make it slightly thicker so it will stick better when brushed on the dough.
Shape the topping
- Once the topping is chilled, unwrap it. Use a knife to slice off the uneven ends and discard them. Carve marks on the dough so you can slice the log into 16 even pieces (see the blog post for instructional pictures). Then slice the dough accordingly. If the dough is too hard to slice, rest it on the kitchen counter for 10 to 15 minutes to let it soften before cutting.
- Place each piece between two pieces of plastic wrap. Use a rolling pin to flatten the dough without cracking it, until it forms a round disk that is about 2.5” (6 cm) in diameter and 1/4” (5 mm) thick. The dough will be very crumbly and the ends might crack a bit (it’s totally OK!). If you find the dough too difficult to roll out without cracking, you can use your hand to lightly flatten it instead of rolling it. (*Footnote 1)
- Place the rolled/pressed topping disks onto a large sheet of plastic wrap using a thin spatula (you can also stack them together by placing plastic wrap or parchment paper between each piece of dough). Cover with plastic wrap until you’re ready to assemble the buns. (*Footnote 2)
Assemble and bake
- Preheat the oven to 350° F (176° C).
- Once the bread dough has risen again, remove the plastic wrap. Gently place the topping dough disks onto the bread dough rolls.
- Brush all the buns with egg wash. Allow the egg to dry slightly. Then brush them again for a second time to get the beautiful yellow color.
- Bake for 15 to 17 minutes, until the top is golden yellow and the bottom is slightly browned.
- Let the buns rest in the pan for 5 minutes, then transfer them onto a cooling rack.
- Serve warm or at room temperature.
Notes
- The topping dough will be very crumbly. We’ve tried both rolling the dough and pressing the dough, and found that the rolling method generates a slightly better result. The topping will cover the bread better and the buns will look better. On the other hand, pressing the dough is much easier and the result is just as tasty. Although, the topping will be slightly small and won’t cover the bread fully in that case.
- If your bread has risen while you were working on the toppings, you can place the topping directly onto the bread rolls.
Nutrition
Did you make this recipe?
I’d love to hear how it turned out for you! Please take a moment to leave a 5-star rating ⭐️ and share your thoughts in the comments further down the page. It really helps others discover the recipe too.
Lilja Walter is a part of the Omnivore’s Cookbook team and worked closely with Maggie to develop and test this recipe.
Raymond Baggs
Reading the recipe, what makes it a pineapple bun?
Maggie
It doesn’t have pineapple in it but the top of the bun has cracked patterns that resembles the surface of pineapple. I think that’s where the name comes from.
Hali
I’ve made these pineapple buns 3x and they always come out perfect. I knead the dough by hand for ~15 minutes instead of using a stand mixer and have no problems.
Thanks for this recipe that lets me eat my childhood favorite at home!
Robyn
Just out of the oven, made it for my finicky Chinese American parents. They loved it! My father kept yelling “Yes! It’s perfect!!” I rolled the topping/crust a little thinner and it ended up encompassing the whole bao (and we completely enjoyed that!) It didn’t crack as beautifully like yours but it was still recognizable. You nailed it, I do not feel the need to test out others. I’ll be looking forward to more bakery items you create in the future.
Thank you from NYC!
Rebecca
My Topping got soggy on the 2nd day. I stored in a covered container; do you know why this will happen? Thanks.
Maggie
The topping won’t stay as crispy once stored but you should able to bring it back by warm the pineapple buns in the oven.
mIKES
One of the most important steps in baking is how to form the dough. Not only did you do an easy to see demonstration, you did it twice! Good on you. It’s almost a trade secret.
Rebecca
Pineapple buns rock!
Keto is the only excuse not to have these.
But not even that could stop me. LoL
Made my day thanks.
Mehndi
so delicious! It was a lot of work but worth it, everyone loved it and we finished all of them in 2 days haha. Thanks so much for sharing this recipe!
Nicole
I have made these at least 8 times since discovering it in March and needless to say, I’m obsessed! I follow the recipe, definitely recommend using a stand mixer for the dough and I’ve had consistent 16-17 min bake times for my oven. My only adjustment to the recipe is pre-crack the topping discs before placing them in the bun before baking. I’ve had toppings not split and it doesn’t turn out with signature “pineapple” crunchy topping. Instead it would form a skin and stay soft. The flavors were still yummy but it definitely affected the authenticity of my buns. I also found I don’t need all the egg wash the recipe calls for. I haven’t tried freezing them, they go way too quick in my household for me to even think about that.
Thank you Maggie for this game changing recipe! I don’t think I will be buying store bought bolo baos ever again.
Dian
Hi Maggie,
Thanks for your recipe! It’s makes me eager to try. I have a question about heavy cream,i am quite difficult to find heavy cream in Hong Kong,most of supermarkets sell only whipped cream or heavy whipped cream. I have buy President whipped cream and Pauls Pure Cream. Can I use whipped cream instead heavy cream? And do they have any different result because of this? Also,may you suggest me,what brand of heavy cream that you recommended?
Thanks A Lot!
Maggie
Hi Dian, heavy cream and heavy whipping cream are the same thing (same fat content). Regular whipping cream will have a lower fat content but it will totally work in the recipe as well. For President and Pauls Pure Cream, I think either will be good. If you want to get as close to heavy cream as possible, check the fat content and go with the one with higher fat (36% or more).
Alice
Great recipe. Thanks.
Rohtak
This recipe is amazing.
Luke
Just made these. Tasted great. However, they came out all deflated and flat. Were nice little balls before before putting into oven and was shocked to see them just deflated and flat and super spread out.
Any idea on what might had caused that? Only thing I can think of was letting the balls rise for a few hours before I put the topping and egg wash on and into the oven. Or did I not knead enough after separating the dough before making each ball?
Maggie
Hi Luke, I’m sorry to hear the recipe didn’t work out for you. Judging your description, I think you overproofed the dough. The second rise should be very short (30 mins or so), otherwise they will rise too high and collapse later.
Jen
The recipe for the bread list the flours in g and cups. The cup measurements are the same for both flours but the g is different. Do we follow the measurements in g?
300 g (1 3/4 cup) bread flour
225 g (1 3/4 cup) all-purpose flour
Maggie
Hi Jen, thanks so much for bringing up this issue.
I would always recommend to use the grams measurement because the cups measurement is never accurate and it will cause issues for the cooking depending on how you measure your ingredients.
I think I might have used a densely packed flour when I got the 1 3/4 cup measurement for the bread flour. It is 2 cups after I fluffed it. And you can get 2 1/4 cups if you sift the flour before measuring.
I just updated the recipe. In any case, you should definitely follow the gram measurement if you have a scale.
Peter Shaw
I’m so glad to see you acknowledge the difficulty of using cups as a measurement. I despair when I see a recipe measuring in cups particularly when I want to make a recipe just for 2 and the fractions of cups become impossible. I honestly wish that cups would disappear from recipes completely. Most of us have digital scales that give excellent precision for measuring in grams or ounces. Cups are inaccurate, imprecise and redundant nowadays.
Grace
Any advice for making the bread dough ahead of time? Thinking of maybe letting the second rise happen overnight (to split up the work and wait time,) but unsure if I should separate into individual/shaped pieces, or how long I can/should leave it in the fridge. Any insight or suggestions are appreciated!
Maggie
Hi Grace, I’ve never tested it so I’m not 100% sure, but from what I’ve read, it’s the best to do the 1st rise in the fridge.
The 1st rise takes longer time so you won’t overproof it in the fridge. The second rise requires much shorter time. So you might able to proof it in the fridge for a few hours, but not overnight.
amanda
Made these but had no dough hook so knead them by hand for about half an hour- definitely worth it though! Family went through them all in one night!
Christine
Thanks for great recipe. Would you have any clue as to why my topping did not crack? It has the beautiful orange brown color from the egg wash but did not crack. Can it be I went too heavy on the egg wash? Other than that, the taste and everything was buttery and perfect. I only had a cup of bread flour left so I had to sub the rest with AP flour. The dough came out much stickier no matter how much extra flour I added, so I just went with it but still case out great.
Tiff
WOW. I usually never post comments but this recipe was exceptional. Perfectly fluffy and soft inside with a nice crunch on top. These are even better than what I find at the Asian bakeries! I didn’t have a dough hook attachment so I ended up kneading the dough for a good 25 minutes or so until it passed the window pane test. Definitely was a lot of work (a good arm workout) but worth the effort. Thanks so much for the delicious and easy to follow recipe!
Alexis H
My pineapple buns came out so so amazing and the texture and taste is phenomenal. I wish I could post a picture here of them! I love your site. Keep up the amazing work <3
Vee
Can I sub heavy cream with milk or something else?
Maggie
Maybe you can use the milk bun recipe for the bun: https://omnivorescookbook.com/milk-bread-rolls/
That one uses milk and condensed milk, no heavy cream.
Michelle
Made these yesterday and they turned out PHENOMENAL!! Just had one for breakfast and the SMELL as soon as I opened my Tupperware container was amazing. I’ve tried a different recipe for bo lo bao before, but I much prefer yours. Your video was helpful, and I liked your strategy for making the topping. Lastly, thanks for the tip about storing long-term in the freezer! That’s actually how I came across your recipe–Googling “freezing bolo bao,” haha!