Whisk the whole milk, all-purpose flour, cornstarch, granulated sugar, vanilla extract, cinnamon, baking powder, and fine salt until completely smooth.
Pour the mixture into a wide, shallow dish and let it stand for 5 minutes so the flour and cornstarch can hydrate.
Heat a large skillet or griddle over medium-low heat. Melt enough of the butter to lightly coat the cooking surface.
Dip each bread slice into the milk mixture for about 5 seconds per side. Allow the excess coating to drip back into the dish so the center does not become gummy.
Cook the coated bread for 3 to 4 minutes on the first side, until deeply golden and crisp around the edges.
Turn and cook for another 2 to 3 minutes, until the second side is golden and the center is hot. Repeat with the remaining bread and butter.