Combine dry ingredients: In a large bowl, whisk together flour, sugar, baking powder, and salt.
Mix wet ingredients: In a separate bowl, whisk together milk, melted butter, egg, and vanilla extract.
Combine wet and dry: Pour the wet ingredients into the dry ingredients and stir until just combined. Don't overmix! The dough will be slightly sticky.
Shape the donuts: On a lightly floured surface (optional), roll out the dough to about 1/2 inch thickness. Use a donut cutter or a sharp knife to cut out donut shapes. You can also re-roll the scraps to make a few more donuts.
Resting dough: For perfectly risen donuts, let the shaped dough rest for 10-15 minutes before frying.
Heat the oil: Fill your deep fryer or pot with enough oil to reach a depth of 2-3 inches. Heat the oil to 375°F (190°C) using a thermometer.
Fry the donuts: Carefully drop the donuts into the hot oil, a few at a time. Fry for 1-2 minutes per side, or until golden brown. Flip once during frying.
Drain and cool: Transfer the donuts to a paper towel-lined plate to drain excess oil. Let them cool slightly before glazing.
Make the glaze: In a small bowl, whisk together powdered sugar and milk until smooth and pourable. Adjust the milk to reach your desired glaze consistency. You can have a thin glaze for dripping or a thicker glaze for dipping.
Glaze the donuts: Dip the cooled donuts into the glaze, turning them to coat completely. Allow the excess glaze to drip off before placing them on a wire rack to cool completely.