This homemade hot chocolate is creamy, thick, and flavorful, made with both melted chocolate and cocoa powder. It's a perfect cozy treat for a cold day!
This hot chocolate recipe is so much better than a powdered mix! Made with two types of chocolate—a chopped bar and cocoa powder—it’s deliciously rich, creamy, and just the right amount of sweet. It’s super easy to make too—it comes together with 5 simple ingredients in under 10 minutes.
We’ve already made this homemade hot chocolate a few times this December, and I have a feeling that it’ll stay on repeat all month long. It’s the perfect warming treat for a cold winter night, especially if you have a kid (like ours) who loves cozying up under the Christmas tree with a mug to sip.
Enjoy it plain, or top it with whipped cream, marshmallows, and/or shaved chocolate. I hope you love this hot chocolate recipe as much as we do!
Homemade Hot Chocolate Ingredients
Here’s what you’ll need to make this recipe:
- Milk – Any kind! Whole milk will create the thickest, richest texture, though I’ve also had great results using a plant-based milk like almond milk or oat milk.
- Chopped dark chocolate – The key ingredient that sets this recipe apart from a hot cocoa mix! It makes this hot chocolate thick, creamy, and intensely chocolatey. I typically use a 70% dark chocolate bar, but feel free to use whatever level you like best. The lower the percentage, the sweeter the hot chocolate will be.
- Cocoa powder – It deepens the chocolate flavor without adding extra sugar.
- Granulated sugar – For sweetness. If you’d like to sweeten it naturally, replace the sugar with 2 tablespoons maple syrup.
- And vanilla extract – For warm depth of flavor.
Find the complete recipe with measurements below.
How to Make Hot Chocolate
This recipe is super easy to make!
- First, dissolve the sugar and the cocoa powder in the milk. Combine all three in a medium saucepan. Cook, stirring occasionally, over medium heat until smooth and heated through, 3 to 4 minutes.
- Then, add the chopped chocolate. Reduce the heat to low and whisk until the chocolate melts and the mixture is smooth.
- Pour in the vanilla and season to taste. Stir in a little more sugar if you’d like it to be sweeter, or add a tiny pinch of salt to balance the flavors.
That’s it!
Recipe Tips
- Don’t let it come to a boil. My #1 tip for making hot chocolate from scratch! If it comes to a boil at any time, the chocolate can separate, giving it a grainy texture.
- Variations are fair game. Try adding a drop of peppermint extract instead of vanilla, or stir in a little cinnamon (or cayenne!) along with the cocoa powder. You could even add a shot of espresso for a richer flavor!
Ways to Serve Hot Chocolate
You don’t need to serve this cozy drink with anything extra—it’s decadent and delicious on its own.
But toppings are really fun here, especially around the holidays or if you’re making this with kids. Here are some of our favorites:
- Whipped cream
- Marshmallows or mini marshmallows
- Mini chocolate chips or chocolate shavings (just peel the edge of a chocolate bar with a vegetable peeler!)
- Candy canes
- Cinnamon sticks
How do you like to serve homemade hot chocolate? Let me know in the comments!
More Cozy Drinks
If you love this recipe, try one of these cozy drinks next:

Homemade Hot Chocolate Recipe
Ingredients
- 3 cups milk
- ¼ cup unsweetened cocoa powder
- ¼ cup cane sugar
- 3 ounces dark chocolate, chopped (about ½ cup)
- 1 teaspoon vanilla extract
Serving Options
- Whipped cream or marshmallows
- Chocolate shavings
Instructions
- In a medium saucepan, whisk together the milk, cocoa powder, and sugar. Place over medium heat and cook, stirring occasionally, for 3 to 4 minutes, or until smooth and heated through. Be careful not to let the mixture come to a boil.
- Reduce the heat to low and add the dark chocolate. Whisk until the chocolate melts and the mixture is smooth, then add the vanilla and whisk to combine.
- Pour into mugs and serve topped with whipped cream and chocolate shavings, if desired.









A real treat after some backyard sledding! Kids enjoyed the version sans bourbon while the parents sipped on the hot coco with an added kick!
This hot chocolate was so easy and quick to make! I liked how rich and creamy it turned out, even without the whipped cream. It paired perfectly with cookies for Santa. I agree with other reviewers that adults might enjoy this more that kids. I will try adding the bourbon or Kahlua next time!
Made this to top off our Christmas weekend – hot chocolate this rich is a simple way to make an evening feel special. I’d prefer a little more sweetness, but that’s an easy adjustment to make next time.
This was SO delicious and decadent! I used oat milk.
Easy, creamy and delicious! Nice to have a vegan hot chocolate!
I made the hot cocoa today! My husband and I both thought it was delish!
This was lovely!
I really liked this hot chocolate. It was definitely rich but not overly sweet, which I appreciated since I’ve been loading up on cookies for the holidays and needed a little bit of a balance. It was super quick and easy to make too. Will definitely make it again!
Sweet and delicious! topped with some coconut whip from Trader Joes 🙂
Very rich and delicious. I actually felt like I needed a glass of plain almond milk to wash it down.
This is the best hot chocolate recipe I’ve made! So silky and smooth and punched full of flavor.
Made this last night with dark chocolate, it was delicious! More of a grown up taste than for kids but still great
So yummy, and super easy to make!!
Super yummy!! I topped mine with a shot of Kaluhu:)
Just made this and topped it with some vegan marshmallows. So tasty!
Loved this recipe, very easy and very tasty!
The hot chocolate was delicious. Made it with the grandkids. They really enjoyed making and drinking. ?
Delicious! My husband and I loved the bourbon addition 🙂
Very decadent and did not suffer from the accidental addition of a whole teaspoon of vanilla. ?
Meant to give this 5 stars
I doubled the recipe and made this for my family on a windy, stormy night. It was a delicious treat.