Keto Fudge
Published December 14, 2025 • Updated March 13, 2026
This post may contain affiliate links. See my disclosure policy.
The trick to getting fudge right without sugar is the condensed milk. Most recipes skip it entirely and use cream cheese or coconut oil instead. The texture is never the same. Real fudge has that dense, smooth bite that clings to your teeth slightly before melting. That comes from condensed milk, and I make a sugar-free version at home.
I simmer 2 cups of heavy cream with butter and sweetener for about 45 minutes, stirring occasionally and watching it go from thin and white to golden and syrupy. That slow reduction is what gives this fudge its structure. Without it, you get chocolate ganache. Good, but not fudge. Some recipes call themselves “no bake” and skip the stovetop entirely. You can taste the difference. The simmering time is what earns the texture.
Why This Sets Differently
Homemade fudge without sugar has a reputation for being grainy or soft. The condensed milk fixes both problems. The slow reduction dissolves the powdered sweetener completely (no grit), and the concentrated milk proteins help it firm up in the fridge without becoming chalky. I tested this with allulose, monk fruit blends, and powdered erythritol. All work, but powdered erythritol gives the smoothest set. Allulose makes a slightly softer result because it doesn’t crystallize the same way, so I give it an extra hour of chill time.
One of my readers, Courtney, discovered that swapping heavy cream for ultra-filtered whole milk produces an even firmer set. I tried it and she’s right. The higher protein content gives the condensed milk more structure. If you can find Fairlife or a similar brand, it’s worth testing.
The Chocolate Matters
I use ChocZero or Lily’s chocolate chips. Both melt cleanly and set firm. Avoid chips with maltitol (check the label). Maltitol causes digestive issues for most people and has a higher glycemic impact than other sugar alcohols. If you want a deeper chocolate flavor, swap 2 oz of the chips for unsweetened baking chocolate. Another reader, Laura Q., tried browning the butter before adding it to the condensed milk. The nuttiness pairs really well with the chocolate, and it still sets fine. I’m making that my default.
Variations I Make Often
The base recipe makes classic chocolate fudge, but I make variations constantly. I stir in 1 cup of chopped walnuts after melting the chocolate for a crunchier version. For a holiday twist, try my white chocolate fudge with pistachios and dried cranberries. If you want something completely different, my toffee uses the same butter and sweetener base but goes crunchy instead of smooth.
I usually make a double batch of the condensed milk and keep half in the fridge for the next round. It holds for about a week. During the holidays, I cycle through batches of fudge, caramels, and toffee, packaging squares in small tins for gifts. The low carb count (1.2g per piece) means even friends watching their intake can have a few without thinking twice. The condensed milk is the foundation for all of it.
How to make keto fudge with homemade condensed milk
This recipe has two stages. First, I make the condensed milk by simmering heavy cream with butter and sweetener for about 45 minutes until it reduces by half and turns thick and golden. Don’t rush this step. If the cream hasn’t reduced enough, the fudge won’t set properly.
Once the condensed milk is ready, I melt the chocolate chips into it, add vanilla and salt, pour into a lined pan, and refrigerate for at least 4 hours. The fudge firms up as it cools. After it’s set, lift it out by the parchment paper overhang and slice into 32 pieces.
The whole process takes about an hour of active time (mostly waiting for the cream to reduce) plus 4 hours of chilling. Plan to make this the night before you need it. I start the condensed milk after dinner and pour the fudge before bed. By morning, it’s ready to cut.
Explore 687+ keto recipe videos with step-by-step instructions, tips, and tricks to make keto easy.
Ingredients
4 tablespoons unsalted butter, divided
1/2 cup powdered sugar-free sweetener
2 cups heavy whipping cream or ultra-filtered whole milk
12 oz sugar-free chocolate chips
1/4 teaspoon salt
1 teaspoon vanilla extract
Step by Step Instructions
Step by Step Instructions
Make condensed milk
Add butter, sweetener and milk or cream to a heavy bottom saucepan. Bring to a boil over medium heat while stirring occasionally. Reduce heat to low and simmer for 25-30 minutes or until the mixture has thickened and can coat the back of a spoon. Stir occasionally, scraping continuously to prevent a milky buildup from forming around the sides.
- 3 tablespoons unsalted butter
- 1/2 cup powdered allulose
- 2 cups heavy whipping cream or ultra-filtered whole milk
Prepare the pan
Line an 8×8 or 9×5 pan with parchment paper or foil, lightly grease it with butter, and set it aside.
Melt chocolate
To the sweetened condensed milk, add the chocolate chips, butter, and salt. Heat over low, stirring constantly so the chocolate doesn’t seize. Keep going until the chocolate chips are completely melted and everything is smooth.
- 12 oz sugar-free chocolate chips
- 1 tablespoons unsalted butter
- 1/4 teaspoon salt
Pour fudge into pan
Once everything is fully melted, remove the pan from the heat, stir in the vanilla extract, then immediately pour the mixture into the prepared pan and smooth the top with a spatula.
- 1 teaspoon vanilla extract
Refrigerate
Let the fudge cool completely and set for several hours until firm by placing it in the refrigerator, then slice and enjoy.
Nutrition disclaimer
The nutrition information provided is an estimate and is for informational purposes only. I am a Doctor of Pharmacy (Pharm.D.); however, this content is not intended to be a substitute for professional medical advice, diagnosis, or treatment. Always consult your physician or other qualified health provider before making any lifestyle changes or beginning a new nutrition program.
Your Macros. Your Recipes. Calculated in 60 Seconds.
Get personalized keto macros and instantly see which recipes fit your targets. No more guessing what to eat.
Get My Macros + Recipes →Frequently Asked Questions
Can I use a different sweetener?
I've tested three head-to-head: powdered allulose, powdered monk fruit blends, and powdered erythritol. All work, but they set differently. Powdered erythritol gives the smoothest, firmest result. Allulose makes a slightly softer fudge because it doesn't crystallize the same way, so I give it an extra hour of chill time. Powdered is important regardless of which you choose. Granulated sweetener won't dissolve fully during the condensed milk stage and you'll end up with grit.
Why didn't my fudge set?
I've had this happen, and it's almost always the condensed milk. If it didn't simmer long enough (a full 45 minutes), it stays too thin to give the fudge structure. It needs to be thick, golden, and coat the back of a spoon. If it's still white and runny, keep going. The second issue is chill time. I give mine at least 4 hours, but overnight is better. If it's still soft after 6 hours, the condensed milk wasn't thick enough. You can re-melt the entire batch, simmer for 10 more minutes to reduce further, and pour it again.
What chocolate chips work best?
ChocZero and Lily's Dark Chocolate Chips are what I use most. Both melt smoothly and set firm. Avoid any brand that lists maltitol as a sweetener. Maltitol has a higher glycemic impact and causes digestive discomfort for most people. I always check the back of the bag, not just the front label. If you want a more intense flavor, I replace 2 oz of the chips with unsweetened baking chocolate.
Can I make this dairy free?
I've tested this with full-fat coconut cream in place of the heavy cream. It works. The flavor shifts slightly toward coconut, but the texture holds and it sets and slices the same way. Replace the butter with coconut oil. Most sugar-free chocolate chip brands are already dairy free. It's a slightly different fudge, but my family didn't complain.
How many net carbs per piece?
1.2g net carbs per piece when I cut into 32 squares from an 8x8 pan. The carbs come mostly from the heavy cream and chocolate chips. If you use a different chocolate brand, check the label since carb counts vary. The entire batch is about 38g net carbs total. For more low carb treats in this range, I'd point you to my chocolate mousse or Cadbury eggs.
Can I add peanut butter?
I swirl in 1/4 cup of natural peanut butter (no sugar added) after melting the chocolate. Don't mix it fully. Leave visible streaks for a marbled effect. This adds about 0.5g net carbs per piece. You can also spread peanut butter on the bottom of the pan before pouring the fudge on top for distinct layers. I've tried almond butter too, and it works as a substitute.
Does this need to stay refrigerated or can it sit at room temperature?
I keep mine in the fridge. At room temperature, the fudge softens within a couple of hours and starts losing its clean edges. It won't spoil quickly since butter and chocolate are stable, but the texture goes from firm and sliceable to soft and sticky. For parties, I pull the tray out right before serving. It holds for about an hour on the counter before things get messy. If you're gifting, always include a note to keep it refrigerated.
Can I make a peppermint version for the holidays?
I add 1/2 teaspoon of peppermint extract when I stir in the vanilla. That's enough for a clear mint flavor without overpowering the chocolate. I've also crushed a few peppermint candies on top before the fudge sets for a candy cane look. My holiday tins usually include a mix of plain and peppermint pieces.

Tip that made a difference: warm your knife under hot water and wipe it dry before each cut. First batch I just went at it and the pieces splintered along the edges. Second batch, clean slices every time. The condensed milk step is a bit fussy but it's what gives the texture that smoothness, so don't skip it.
Every keto fudge I've tried has this chalky finish that just gives it away. I was pretty sure I'd mess up the condensed milk step but it set up so smooth, and SO good, nothing like the others. Completely converted.
That chalkiness. Almost always the chips. Maltitol in most brands does it.
Made a batch of this over the weekend and my teenage son (who avoids anything I label 'keto') kept coming back to the pan. When I finally told him what was in it, he picked up my bag of Lily's chips and read the label like he was doing actual research. I've tried other keto fudge before and there's always that slightly gritty texture you can't get past, but this one is smooth all the way through. Something about making the condensed milk from scratch first instead of just melting chips together. Already planning another batch.
Once he's past the label it's just candy. The condensed milk step is everything for that texture. Melted chips alone don't set the same way.
First time making fudge of any kind and I went straight for the from-scratch condensed milk, which felt like a bold choice for a beginner. I kept watching it the whole time, convinced I was going to mess something up, but it came together smooth and the final texture is genuinely impressive for 1.2g net carbs. Four stars only because I want to keep experimenting before I commit to five. Quick question though: do you think this would hold up with white chocolate chips instead of the dark? Not sure if the ratios would behave the same way.
White chocolate works, same ratios. It sets a little softer than dark so give it extra time in the fridge before you cut it. ChocZero makes a sugar-free white chocolate chip that melts cleanly.
First batch stayed soft no matter what. Pulled the condensed milk too early apparently. Full 20-minute reduction fixed it.
My mom used to make fudge every year around the holidays and I honestly thought that was just over for me when I went keto. Made this last Sunday and the texture stopped me cold. That same dense, smooth pull when you break a piece off a block. Something about making the condensed milk from scratch gets it right in a way that other versions I've tried just don't. Sent her the link.
The scratch condensed milk is what gets that pull. Can't shortcut it. And sending her the link - yeah, that says everything.
Tried this with coconut cream because I was out. Fudge set up firmer than expected, which I actually prefer. Slices clean, doesn't go soft in your hand. Coconut flavor doesn't come through at all once the chocolate's in. Worth it if you want a sturdier cut.
Yeah, coconut cream sets firmer. The fat ratio's different so it locks up tighter in the fridge. And the chocolate just covers the coconut.
Fudge was the one thing I genuinely mourned when I went keto three years ago. Made this last week with Lily's baking chips and the condensed milk came together faster than I expected. Cut my first piece after it set overnight. Texture was exactly what I remembered. Tried a lot of keto swaps over the years, but this is the first one I didn't have to talk myself into.
That last line says everything. Lily's and ChocZero are the two I go back to.
Made this last week and the condensed milk took way longer to thicken than I expected. Any visual cue to watch for, or does it just need more time than it looks like?
Color is your cue more than time. When it's ready it should be a deep golden, not cream-colored, and thick enough that a line holds for a second when you drag a spoon through. Pale and watery means keep going.
Used Lily's dark chocolate chips and stirred in a tablespoon of almond butter right before pouring into the pan, and the texture came out somehow even smoother, almost ganache-like. One thing though: it sets faster with the almond butter in there, so don't walk away once everything's melted. Worth knowing before you try it.
Almond butter does that. More fat pulls it toward ganache and it firms faster once it's off the heat. Good warning on the timing.
Lily's chips melt cleaner if you pull the pan off the heat before adding them. Left mine on low the first time and got some grainy patches. Off heat, totally smooth.
Same thing happened my first batch. The pan holds enough heat on its own once you pull it.
My teenager has made it her mission to catch me sneaking keto swaps into things, so I kept quiet when I put this out. She had two pieces before dinner, then asked what brand the fudge was. When I said I made it from scratch she literally didn't believe me. The condensed milk step had me nervous (never made anything like it before) but once the sweetener dissolved it looked exactly right.
Detective mode and she still couldn't catch you. That condensed milk has an awkward phase where nothing seems to be happening, but it always gets there. 1.2g net carbs and she's asking for the brand.
The homemade condensed milk step took me straight back to my mom's kitchen and I wasn't prepared for that, not even a little.
Yeah, that simmer gets you. Whole kitchen shifts during those 45 minutes, smells like it's been going all day.
Never made fudge from scratch before. Wasn't sure about the condensed milk step, but it came together fast. Once it set, texture was perfect. Doubling the batch next time.
Condensed milk step gets everyone the first time. For the double batch, go 9x13 instead of 8x8 or it'll be too thick and take forever to set.
My grandmother made a tin of fudge every December, kept the recipe on an index card in a box I still have but can't use anymore. I hadn't thought about it in years, and then I made this last weekend and the texture just brought it back. The way it cuts cleanly, the way it sets firm but still gives when you bite in. I used Lily's chips and let it sit overnight in the fridge, came out smooth enough that I sat with a piece for a while just thinking. Four stars because I pulled back on the sweetener slightly and think it works better that way, but that's just me. Glad this recipe exists.
Texture holds memory like that. Lily's chips run sweeter than a lot of brands anyway, so I get the pull back.