Combine 4 cups flour, instant yeast, sugar, salt in large bowl. Stir to combine. Heat the milk in the microwave for about 20-30 seconds. Add warm milk, melted butter, eggs, and vanilla extract to the flour mixture. Mix until combined, then knead for 5-7 minutes in a stand mixer using the dough hook attachment until the dough is smooth and elastic. Add the additional ½ cup of flour only if needed. The dough should be soft and sticky but still manageable.
Cover the bowl of dough with plastic wrap and let rise at room temperature until doubled in size (1-2 hours) or in the fridge overnight. An overnight rise results in slightly lighter donuts with a more developed flavor and an easier to work with chilled dough, but they are almost just as good with the shorter rise time at room temperature so that is what we often do.
Roll out the donut dough on a clean greased or lightly floured surface until about ½-inch thick. Use a large 3- or 3 ½-inch round donut cutter with a center hole or a large round biscuit cutter with a small circular cutter or the wide end of a large piping tip for the centers to cut out donuts. Save the centers for donuts holes. You can combine scraps and reroll for more donuts. Gently move the donuts to a baking sheet lined with parchment paper. Cover loosely with plastic wrap and let the donuts rise for 30-60 minutes until slightly puffy.
Heat 2-3 inches of oil in a large heavy-bottomed pan or dutch oven over medium-high heat to 350°F. Use a candy thermometer to monitor the temperature while frying and try to keep it within the 350°F to 375°F range.
Use a metal spatula to carefully transfer 3-4 donuts to the hot oil to fry for about 2-3 minutes, flipping halfway through, until golden brown on both sides. Donut holes will cook faster. Remove the fried donuts from the oil and let them drain on a wire rack, while you fry the remaining donuts and donut holes. Let donuts cool slightly before dipping in glaze.
Whisk powdered sugar, milk, and vanilla together to make the glaze until smooth and thin enough to dip the donuts. Dip the donuts to coat with the glaze, then return to a wired rack until the glaze has had a chance to set up (about 20 minutes).
Homemade donuts are best enjoyed the day they are made when they are fresh but can be stored in an airtight container at room temperature or in the fridge for a day or two.