Homemade hot chocolate has never been easier! This rich and creamy hot chocolate is easily made on the stovetop and can be kept warm for hours (also, it is DELICIOUS made with almond milk in place of dairy milk)!

In a decade of blogging (can you believe my blog turns ten this month??) and almost four decades of living (yeah, I’m avoiding February), one thing has stayed the same.

And that’s my love for hot chocolate.

I love it. Fiercely.

A white mug of steaming hot chocolate and marshmallows floating on the top.

And that’s probably no surprise, because I’ve told you that many times over the last ten years.

I’ve even posted a hot chocolate recipe or four:

Homemade Hot Chocolate Mix (SO good)
Coconut Tres Leches Hot Chocolate (amazing)
Hot Chocolate Truffles (decadent)
White Peppermint Hot Chocolate

A ladle of hot chocolate being poured in a white mug.

But what’s been missing is a really good, really classic, really delicious homemade hot chocolate recipe that isn’t fussy, isn’t weird, isn’t disgusting.

But that IS creamy, rich, ultra-chocolatey and perfect.

This is it.

Give yourself 10 minutes, and you’ll have a steaming mug of hot chocolate staring you in the face.

A top-view of a white mug of steaming hot chocolate and marshmallows floating on the top.

What I love about this recipe is that it is very customizable to your tastes.

Want it darker and even more decadent? Change up the brand or type of cocoa powder.

OR stir in a handful of chocolate chips at the end. No surprise that I tried that so fast.

Dairy-free? Sub the milk with almond milk or another non-dairy milk.

Want it minty? Add a smidgeon of mint extract to the finished cocoa.

A white mug of steaming hot chocolate and marshmallows floating on the top with a bowl of marshmallows in the background.

Another bonus is that once you’ve whipped up the homemade hot chocolate, you can transfer the delicious nectar to a slow cooker to stay warm for hours.

Hot chocolate at your beck and call. Oh, yeah.

Perfect for all-day sledding bonanzas. Or family parties. Maybe Christmas tree trimming?

Or perhaps just because a Tuesday afternoon needs hot chocolate. That’s as good of an excuse as any.

I’m a self-professed hot chocolate snob, and I love this hot chocolate. I hope you do, too!

One Year Ago: Glazed Cranberry Lemon Cake
Two Years Ago: Holiday Pomegranate Guacamole
Three Years Ago: Perfect Pumpkin Pancakes
Four Years Ago: Fresh Cranberry Chutney {My Fave Cranberry Sauce}
Five Years Ago: Black and White Holiday Bark

Rich and Creamy Homemade Hot Chocolate

Homemade Hot Chocolate

4.70 stars (96 ratings)


  • cup (57 g) natural, unsweetened cocoa powder or Dutch-process cocoa powder
  • 1 ⅓ cups (283 g) granulated sugar
  • teaspoon salt
  • cup water
  • 6 cups milk, dairy milk or non-dairy milk, like almond milk
  • 1 teaspoon vanilla extract
  • Half and half or additional milk, if desired


  • In a 4-quart saucepan, whisk together the cocoa powder, sugar, salt and water. Stirring constantly, bring this mixture to a boil. Simmer for 2-3 minutes, moderating heat, if needed, so it doesn’t burn.
  • Stir in the milk and vanilla and heat until very warm without boiling or simmering. Serve immediately with additional half and half or milk to cool down the hot chocolate and add extra creaminess OR transfer the hot chocolate to a slow cooker and keep warm (warm or low setting) for several hours.


Cocoa: my favorite blend is to use half natural, unsweetened cocoa powder (like Hershey’s) and half Dutch-process cocoa powder (like Ghirardelli dark or Droste or Trader Joe’s) for a richer, sweeter chocolate flavor. If your cocoa powder is extra lumpy, you might want to sift it into the saucepan to avoid any lumps. 
Milk: this is DELICIOUS with almond milk in place of dairy milk (and if you want an extra chocolatey boost, try using the dark chocolate almond milk instead – holy moly).
If you Want a Peppermint Version: add a couple drops of peppermint oil or extract with the milk and vanilla. 
Serving: 1 Cup, Calories: 258kcal, Carbohydrates: 46g, Protein: 7g, Fat: 7g, Saturated Fat: 4g, Cholesterol: 18mg, Sodium: 118mg, Fiber: 2g, Sugar: 43g

Recipe Source: adapted from this popular recipe (reduced the sugar, altered the mixing method, reduced milk)