Add the heavy cream to the bowl of a stand mixer fitted with the whisk attachment. Start on the slowest setting, then gradually increase the speed. Continue to whip until soft peaks form, then continue until stiff peaks form, about 6 minutes.
At this point I recommend putting a dish towel over the mixer to keep splatter to a minimum. Keep whisking the heavy cream at high speed, keeping an eye out for the butter solids and buttermilk to separate, about an additional 4 to 5 minutes. Once they separate, pour the buttermilk into another bowl and reserve for another use.
Gather the butter solids together and press through a fine mesh strainer pressing out and removing any leftover buttermilk (this helps the butter to last longer!).
Add ½ cup (118g) of ice water to a bowl. Add the butter and knead or press the butter to agitate it and rinse any remaining buttermilk. Once the water is cloudy, pour it out then repeat the process until the water is clear after agitating the butter.
At this point you can either use it as is for unsalted butter, or return it to the mixer and add the salt, mixing until just combined. (You can also add your flavor variations at this point.) Store refrigerated in an airtight container for up to 2 to 3 weeks.
Notes
Look for a high-quality heavy cream with a high fat content (ideally around 40% or higher).