Make a basic butter and milk enriched dough and separate into two: one half will be flavored and colored with cocoa, the other left plain. Layered and swirled together this produces an eye catching swirled loaf.
Recipe updated September 2026: the recipe now makes one large swirled loaf and has been updated to include butter and milk powder, giving it a richer flavor.
Earlier this year, I saw a lovely two-toned dough in this pic on instagram and a few weeks later an ube version on this site . I started to picture a chocolatey dough swirl within an enriched plain dough. I knew that keeping a plain dough and adding some darker cocoa would give me a very pretty contrast. Happily, the cocoa does come through in taste too! This isn’t an overly sweet bread, think of it like a light brioche with a hint of cocoa.
The recipe requires you to make two small separate doughs, allow them to rise separately and then roll each out and fold them together for a second rise. Honestly, it’s super easy and totally worth the extra dough-making. It’s not a very sweet bread, making it great for breakfast.
Flour: use a high protein all purpose flour or a bread flour.
Water: we’ll use some to make the tangzhong and some to bloom the yeast. You’ll also add some to the cocoa dough.
Milk: to make the tangzhong.
Yeast: I use a packet of instant yeast (fast acting) but active dry will work too. Measure out a little over two teaspoons.
Sugar: fine granulated. Removing or reducing the sugar will make for a drier bread.
Eggs: large eggs.
Buttermilk or milk powder (non-fat or not): this enriches the bread’s flavor and makes it softer. Ideally you don’t skip this.
Salt: fine sea salt. Halve the amount if using table salt.
Butter: softened and unsalted. It must be at room temperature to incorporate into the dough.
Cocoa: dutch process cocoa.
Start by making the tangzhong: combine the flour, water and milk in a small pot and cook over medium heat until thickened into a (loose) paste. Set aside to cool.
Bloom the yeast: in the bowl of a stand mixer mix the yeast with the water and leave for a few minutes. It should start to foam, this is how you know the yeast is good to use.
Combine all the Base Dough ingredients in the bowl: to the yeast add the flour, sugar, eggs, milk powder, and salt.
Affix the dough hook and knead until it starts to come around the hook.
Now add the butter, about half a tablespoon at a time.
As you add, the dough will loosen but left to knead for awhile it will start to come around the dough hook again.
It will be mostly sticky but we’re about to fix that: remove half of the dough and set aside (if you put it in an oiled bowl it wont stick to it). This is going to be the cocoa dough.
With the half that’s still in the mixer, add two more tablespoons of flour and knead until mostly smooth (but still tacky). This is your p. lain dough. Set it in an oiled bowl and leave to rise.
Take the first half you set aside and place it back in the bowl: add the cocoa and a tablespoon of water and knead. If the dough is looking dry, add another tablespoon of water. Once it comes together around the bowl and is tacky, remove it and set into it’s own oiled bowl (the one you used to keep it in briefly is perfect). Cover the dough with plastic wrap.
The first rise can be at room temperature until almost doubled, then set in the fridge for at least 30 minutes (to allow for easier rolling/shaping). Alternatively, I make the dough the night before, leave it to rise briefly on the counter (about an hour) then set it in the fridge overnight. It’s usually ready to shape in the morning.
Flour your countertop well: this is a sticky dough. Divide the doughs in half so you have two of each flavor. Roll each out into a long oval/rectangular shape – the width shouldn’t be more than 9 inches, the length can go up to 16 inches.
Layer the doughs: start with a plain, lay a rolled out cocoa dough on top, then a plain dough on top of the cocoa and lastly, a cocoa dough.
Now roll the doughs from the shorter side (so you have a short log), tightly. Set the log in an oiled pullman or large loaf pan (not a standard size).
Tip: if you don’t have a large loaf pan you can split the dough into half, layer just two doughs together and make two smaller loaves.
Let rise until puffy: you’ll know it’s ready to bake when you can poke the dough and it doesn’t bounce back but your finger leaves an indentation.
Preheat the oven to 375 and we’ll bake it for about 10 minutes on this higher temperature. Then lower to 350 F and bake until it’s fully done: you can check this with a thermometer, it’ll take another half hour or so.

Share & tag me on instagram @buttermilkbysam
If I only have a 9×5 loaf pan, might that work? Thank you!
Hi Hannah, you could use that and make some rolls if you like, or use it twice to make two smaller loaves.
I was nervous about making this due to there not being any reviews. I’ve made other recipes from this blog, but it’s like this one is in a forgotten, hidden corner. I am a proficient baker and have had a lot of success with most of your recipes, which are usually extremely detailed and thorough. The recipe itself was much messier than usual. I am in the US but prefer metric measurements for baking, especially bread. The plain loaf was in US standard while parts of the cocoa load were in g. The blog above states that the recipe is enough for 2 loaves, but in the recipe itself there is no instruction for when to divide the doughs in half. I just felt like there was far more guesswork than usual for one of your recipes! I pushed through anyway, as I am using the bread for bread pudding and knew that would allow for some imperfection. In the end, I am very happy with the result. It’s a beautiful, tasty loaf.
Hi Lena, this is a very old recipe when I was first starting to blog and just sharing how I was making things (often with weirdly mixed measurements!). Sometimes I pull recipes like this offline until I can redo them but I haven’t gotten to this one yet. I’m sorry it was frustrating!
Yummy