Prep the pans: Preheat the oven to 350°F (175°C).
Lightly grease a 6-cavity donut pan with nonstick spray. If using silicone pans, still give them a light spray for easy release.
Mix dry ingredients: In a medium bowl, whisk the flour, cocoa powder, sugar, baking powder, baking soda, and salt until evenly combined and lump-free.
Mix wet ingredients: In another bowl or large measuring cup, whisk the buttermilk, oil, egg, and vanilla until smooth. Stir in the melted chocolate until fully blended.
Combine: Pour the wet ingredients into the dry ingredients.
Gently fold with a spatula until no dry streaks remain. Do not overmix; the batter should be thick and slightly glossy.
Fill the pan: Transfer the batter to a piping bag or a zip-top bag with a corner snipped off. Pipe batter into each donut cavity, filling about 3/4 full. This helps keep the shape neat and even.
Bake: Bake for 9–12 minutes, or until the tops spring back lightly when touched and a toothpick comes out with a few moist crumbs.
Avoid overbaking to keep them soft.
Cool: Let donuts cool in the pan for 5 minutes, then transfer to a wire rack to cool completely before glazing.
Make the glaze: In a bowl, whisk the powdered sugar, cocoa, 2 tbsp milk, vanilla, melted butter, and a pinch of salt until smooth. Add a splash more milk if needed for a thick-but-dippable consistency.
Glaze the donuts: Dip the top of each cooled donut into the glaze, let excess drip off, then return to the rack. Add toppings while the glaze is wet.
Let set for 20–30 minutes.
Serve: Enjoy once the glaze is just set, or let them rest longer for a firmer finish that travels well.