Prep your pan and tools: Line the pan first. Measure all ingredients and keep them close. Fudge moves quickly once it’s hot, so being ready helps you avoid mistakes.
Melt the base: In a medium, heavy-bottomed saucepan, combine butter, sugar, and milk.
Set over medium heat, stirring gently until the butter melts and the mixture looks smooth.
Bring to a steady bubble: Once melted, bring the mixture to a gentle boil. Stir frequently and keep it at a slow, steady bubble for 4–5 minutes. You want it thickened and glossy, but not dark or scorched.
Remove from heat and enrich: Take the pan off the burner.
Immediately stir in the peanut butter, marshmallow creme, vanilla, and salt. Work quickly and fold until completely smooth and uniform. No streaks should remain.
Check the texture: The mixture should be thick but pourable.
If it’s overly stiff, give it a few more firm stirs to smooth it out. If it seems oily, keep stirring until it comes back together.
Pour and level: Scrape the fudge into the prepared pan. Use an offset spatula or the back of a spoon to spread it evenly.
If using toppings, sprinkle them on now and press gently to adhere.
Let it set: Cool at room temperature for 20–30 minutes, then transfer to the fridge. Chill for 2–3 hours, or until firm enough to slice cleanly.
Slice and serve: Lift the fudge out using the parchment. Cut into small squares with a sharp knife.
Wipe the blade between cuts for tidy edges.