Prep the chocolate: Finely chop 4 ounces (115 g) bittersweet or semisweet chocolate. Microwave in 20–30 second bursts, stirring between each, until smooth.
Set aside to cool until just slightly warm to the touch.
Soften the butter: In a large bowl, add 1 cup (225 g) unsalted butter at room temperature. It should give easily when pressed but not look oily.
Cream the butter: Beat the butter with a hand mixer or stand mixer on medium for 1–2 minutes until creamy and pale. This traps air for a lighter, fluffier frosting.
Whisk your dry mix: In a separate bowl, whisk together 3 cups (360 g) powdered sugar, 3/4 cup (75 g) unsweetened cocoa powder, and 1/4 teaspoon fine sea salt to break up lumps and evenly distribute the cocoa.
Add the dry mix gradually: With the mixer on low, add the sugar-cocoa blend in 3 additions, scraping the bowl as needed.
It will look thick and sandy at first—this is normal.
Pour in cream and vanilla: Add 6–8 tablespoons heavy cream, 1 tablespoon at a time, along with 2 teaspoons vanilla extract. Start with 6 tablespoons and increase to reach your ideal consistency.
Beat until lush and glossy: Increase speed to medium-high and beat for 1–2 minutes until smooth, fluffy, and spreadable. If it looks stiff, add a splash more cream.
If it’s too soft, add 1–2 tablespoons powdered sugar.
Blend in melted chocolate: Make sure the melted chocolate is slightly warm, not hot. Pour it into the frosting and beat on low just until combined and uniformly chocolatey. This step adds shine and that classic fudge finish.
Fine-tune the flavor: Taste and adjust.
Add a pinch more salt for balance or 1/2 teaspoon espresso powder to deepen the chocolate notes. Beat briefly to incorporate.
Use or set: For silky swirls, use immediately. For a thicker, more fudge-like spread, let the frosting sit at cool room temperature for 10–15 minutes to slightly firm up.