Toast the hazelnuts: Preheat oven to 350°F (175°C).
Spread hazelnuts on a baking sheet and toast for 10–12 minutes, until fragrant and lightly browned.
Remove the skins: If your hazelnuts have skins, wrap the warm nuts in a clean kitchen towel and rub to loosen the skins. Don’t worry about getting every speck off.
Make hazelnut butter: Add the warm hazelnuts to a food processor or high-powered blender. Process until they turn into a smooth butter, scraping down the sides as needed.
This may take 3–6 minutes.
Add cocoa and sweetener: Sprinkle in the cocoa powder and powdered sweetener. Pulse a few times, then blend until combined.
Add fats and flavor: Pour in 2 tablespoons of oil, vanilla, salt, and espresso powder if using. Blend until smooth and glossy.
If the mixture is too thick, add the remaining oil.
Adjust consistency: For a silkier spread, blend in 2–4 tablespoons of heavy cream or coconut milk, one tablespoon at a time, until it spreads easily.
Taste and tweak: Adjust sweetness with a bit more powdered sweetener or a few drops of stevia/monk fruit. Add a pinch more salt if needed to balance the flavors.
Cool and store: Transfer to a clean jar. Let it cool to room temperature before sealing.
The spread will thicken slightly as it rests.