Milk Bread & Math

| arrow_downward Jump to Recipe


Back in January, my cousin messages me, "Have you seen the cookbook "Mooncakes and Milk Bread"? I got it from the library, this girl knows what's up." That's pretty much all the convincing I needed to buy Kristina Cho's Mooncakes & Milk Bread. This cookbook is filled with some of my Chinese bakery favorites like cocktail buns, pineapple buns, egg tarts, as well as some new creative recipes such as "After-school PB&J buns" (PB&J filled milk bun rolls!). Every night, I read a few new recipes and get more excited to try them out.


As my first recipe to try, I decided to go with the main star of the show --- "Mother of All Milk Bread." This is the foundation recipe that she uses for most of her baked bread recipes in her book, so it seemed like an important one to nail down! It had been a few years since I had made tangzhong breads (used to use Christine's Recipes tangzhong bread recipes and they worked well!), so I dusted off those old skills and got to work. 


(Cha siu bao, made back in 2011!)


(Maybe I should try making these again??)

I started going through her recipe and everything had been going fine until I started to knead the dough. I remember thinking that the dough was a bit stiffer than I thought it would be. Kristina specifically said this would be a sticky / hard to work with dough especially if you were hand kneading, which I was. I contemplated adding some more liquid at that time, but decided I wanted to try to follow as closely to the recipe as I could. Note, I did already substitute instant yeast for active yeast, and table salt for coarse salt, but this was approved by Kristina in her notes about ingredients. Anyway, I proceeded on to knead the dough the best I could and then let it rise for its first proof.

After about 2 hours, I checked on it again and I couldn't tell if it had "doubled"'s hard to tell when the dough is in a stainless steel bowl! I was anxious to move on with the recipe, so I did. At this point, I ended up splitting up half of my dough to make cocktail buns, and half of them to make mini loaf pans. I really should have just stuck to one recipe for the first time, but I couldn't help myself. I shaped my buns, and let them proof a second time. Again, I was not sure if my proofing was adequate, but I kept marching on. 




Eventually the buns were baked, the kitchen smelled divine, and the buns came out looking great with a beautiful browned color. However, when I finally tried them, they were not as airy or moist as they should be. 



(Cocktail buns filled with a sweet coconut filling. You can see that the bun is a bit dense.)

Evidently, I had made some mistakes. 

So I analyzed the process and what I had done. What were my possible mistakes? I narrowed it down to a few possible things:

  • The recipe called for warming up the milk and then activating the active-dry yeast in the milk with some sugar. Could I have kept the milk on the stove for too long and boiled off some of the liquid? And could I have killed off some yeast?
  • I did not proof the dough long enough. I had suspicions with the first proof that the dough was not ready, but I had trouble telling exactly how much the dough had expanded in the bowl. With the second proof, as a result of splitting up my dough, I had lost some guidelines available in the recipe. For example, for a loaf pan, I would have expected the dough to rise to the level of the loaf pan. For my mini loafs, I wasn't sure if that guideline still held true on the smaller scale. 


Trial 2:

I was ready to try again the next day, but before I did, I came across this King Arthur article "How to convert a bread recipe to tangzhong". It's a great read that dives into the science of hydration levels and the effects of including tangzhong. They walk through how to calculate hydration levels, and how to adjust it for tangzhong recipe. Their recommendation is that the dough hydration level, which for typical sandwich/dinner rolls is about 60-65%, should be 75% for tanzhong breads. This is because some of the liquid that is used for making the tangzhong is "trapped" by the tangzhong, and does not help with your bread's final texture. That got me curious -- what was the hydration level of Kristina's Milk Bread recipe?

In the basic form of calculating hydration, you take the total weight of liquids and divide it by the total weight of your flour. However, at the end of the KA article, they included a "Extra credit: determining water content" where they list out the different water content for typical bread ingredients for even more accurate hydration calculations. Old high school math nerd and straight-A student me could not resist the extra credit option! It was time to break out the calculator. 


Kristina's recipe was as follows:


  • 100g milk
  • 20g bread flour

Milk bread

  • 125g warm milk
  • 1 tsp active dry yeast
  • 50g sugar
  • 335g bread flour
  • 1/2 tsp coarse salt
  • 1 large egg
  • 55g unsalted butter

So the liquids in this recipe were milk (225g total = 100g from tangzhong, 125g from dough), egg, and butter. The flour was a total of 355g. The water percentage listed for each of the wet ingredients are as follows:

  • Milk: 87% water
  • Large eggs: 74% water
  • American-style butter: 16% water

We can use the above information  to calculate the water weight of the wet ingredients:  

  • Milk: 225g x 0.87 = 195.75g water
  • Egg: 50g x 0.74 = 34g water
  • Butter: 55g x 0.16 = 8.8g water

This summed up to a total of 241.55g water. Dividing this by the total flour weight (355g):

  • 241.55g water / 355g flour = ~68% hydration rate.

Interesting! So this was slightly below the recommended hydration level of 75% per the KA article. The next step then was to determine how much extra milk I needed to add to reach the 75% hydration:

  • 0.75 x 355g = 266.25g total water weight needed
  • 266.25g - 241.55g = 24.7g of water needs to be added to the recipe
  • 24.7g / 0.87 = 28.4g of milk needed (Since milk is 87% water, then 87% of 28.5g milk is 24.7g water)

I needed to add about 28g of milk to the recipe!

So the first change I made to the recipe was using 153g of milk instead of 125g in the bread dough. The second thing I changed was to not heat up the milk because I was using instant yeast. Instant yeast does not have to proof active dry yeast and rather than risk boiling off my preciously calculated water and also risking killing my yeast from too-hot milk, I decided to just use room temperature milk. The third thing I changed was proofing my dough in a clear bucket with markers so i could actually see how much it rose. 


So how did this dough compare to the first run? It was much stickier, much more pliable, and much softer. Though I did not knead until the dough passed the "window pane" test, it got pretty close. My kneaded dough was smoother and more airy. It also reminded me more of the higher-hydration sourdoughs I had worked with in the recent (pandemic) years. I had high hopes for it.

Oh, and the fourth thing I changed - sticking to one recipe. I chose to go with the 3-segment loaf, baked in a pullman pan for that square sandwich bread. At this point, I also decided to look up different ways of rolling up my swirls. I landed on this YouTube video about pullman loaf shokupan (Japanese white bread)/ tangzhong bread and ended up following those instructions, which involved two rounds of rolling. Their results looked pretty great, so I hoped mine would too.


(Milk bread rolls before 2nd proof)


(2nd proof - proofed to about 75% of container height)

And it came out pretty well! The dough rose all the way to the top of the pullman pan, creating a nice square loaf. Sides did end up shrinking in a bit after cooling, but this was expected. The resulting bread was soft, moist, and flavorful. When you're kneading the butter into this dough, you'll realize that the bread is pretty much pre-buttered. No wonder why it tastes so great plain! 



I'm excited by how this came out, and I look forward to trying out more of Kristina's recipes! I don't think it was her recipe that was the issue for my first failed run because I've heard of many other people having great success with her recipe. I may try her original recipe again but keeping the tweak of not heating up the milk for the instant yeast. Either way, the first failed run gave way to a great learning experience on hydration calculation for tangzhong doughs, and I can't wait to make more! 


Milk bread

(Adapted from Kristina Cho's "Mother of All Milk Bread" recipe)

Hand kneaded, and baked in a 9" x 4" x 4" pullman loaf pan.



  • 100g milk
  • 20g bread flour

Milk bread

  • 153g milk
  • 1 large egg
  • 335g bread flour
  • 1 tsp instant yeast
  • 50g sugar
  • 3/8 tsp table salt
  • 55g unsalted butter, softened


  1. Make the tanzhong - In a sauce pan, mix together the milk and bread flour and cook over low heat. Stir constantly and after a few minutes, the mixture should thicken to a mashed potato-like paste. Transfer to a bowl and allow to cool.
  2. Mix liquids - In a large measuring liquid cup, whisk together your milk, egg, and cooled tangzhong. I recommend the large liquid measuring cup so that we can stream the liquids into the dry ingredients later.
  3. Mix dry ingredients - In a large mixing bowl, mix bread flour, instant yeast, sugar, and salt. 
  4. Mix in wet ingredients - Make a well in the middle of your dry ingredients. Have chopsticks in one hand, and your cup/bowl of liquid ingredients in the other. Slowly stream your wet ingredients into the dry-ingredient well and start to mix the dry ingredients in by stirring the wet ingredient well with your chopsticks. Continue to stream the wet ingredients in the middle while slowly incorporating the dry ingredients in. Once all the wet ingredients have been added, your dough should look a bit shaggy and will be quite sticky.
  5. Knead the dough - Knead the dough in the bowl. The dough will stick to your hands but try to avoid getting more flour. I like to pull the dough apart in the air and then folded it on itself. Is this an actual technique? I'm not sure, but it seems to work for me.

  6. Incorporate butter - Once dough has somewhat come together, start to knead in the butter a small amount at a time.  The butter will help with the stickiness of the dough and will add additional hydration, making it even softer.  Knead dough until smooth. The dough should be fairly stretchable and can nearly (or maybe actually) pass the window-pane test.
  7. Shape into a boule - When your dough is ready for its first proof, shape the dough into a boule by gathering up the sides of the dough to the center and shaping it into a nice smooth ball. Kristina describes this as "pinching and pulling". 
  8. First proof - Put your dough in a clear container that has enough room to allow the dough to at least double. I used a rubber band to mark the starting position of the dough -- the same technique I use to track my sourdough starter growth! Cover with the container lid or cling wrap, and allow to proof in a warm spot for about 2 hours, or until doubled in volume
  9. Deflate and reshape boule -- Punch down your dough, then pour your dough out from your container. Reshape the deflated dough into a boule again.
  10. Divide dough - Weigh your dough and divide into 3 equal portions. Reshape each into a boule again. 
  11. First roll-- For each portion, roll out the dough to approximately a 16cm x 25cm rectangle. Flip the dough over, and then gently roll it up into  a log (about 3 flips for me). Place seam-side down. Repeat for the other 2 portions. Loosely cover with cling wrap and let rest for 10-15 minutes. 

  12. Second roll -- With the dough seam-side down, roll out the along its length to make it 35cm x 7cm Flip the dough over, and gently roll it up. Place it in a greased pullman loaf seam-side down, with the swirls facing the long edge. Repeat for remaining portions.
  13. Second proof - Cover pan with cling wrap and allow dough to proof until it fills about 70-75% of the pan, about 75 minutes.
  14. Bake - Preheat oven to 350F/180C. Cover pullman loaf pan with the lid. Once the oven is preheated, bake the bread for about 35 minutes.
  15. Remove bread and cool - Remove lid from pan and allow bread to cool for 5 minutes before inverting it onto a cooling rack. Allow bread to completely cool before slicing it.
  16. Enjoy!



I'm Alicia, the floundering cook. Thanks for joining me on my kitchen adventures. I hope you can pick up a few tips or tricks while you're here. Happy cooking!

Subscribe to my newsletter

Stay updated on my latest cooking adventures and learnings via my weekly newsletter

Follow me