4 cups all-purpose flour
1/3 cup granulated sugar
4 teaspoons active dry yeast*
2 1/4 teaspoons kosher salt
1 1/4 cups unsalted butter, cold (2 1/2 sticks)
1 cup milk (you may need slightly more or less)
egg wash (1 large egg beaten with a teaspoon or two of water)
Place the flour, sugar, yeast, and salt in a large bowl and whisk together until combined.
Slice the butter into 1/8-inch thick slices and toss in the flour mixture to coat.
Add the milk and stir together until a stiff dough forms.
Wrap the dough tightly in plastic wrap and chill for 1 hour.
On a lightly floured surface, roll the dough into a long rectangle shape.
Fold it into thirds (like a letter), turn 90 degrees, and repeat 4 to 6 more times, or until the dough has large streaks of butter in it but it is smooth and flat. (If at any point the butter starts to feel soft, chill it in the refrigerator or freezer until stiff.)
Wrap tightly and chill for 1 more hour, then divide the dough in half and roll each portion out to a thickness of about 1/8-inch, in a long rectangle shape (approx. 10-inches wide by 22-inches long).
Cut the dough into long, skinny triangles (about 5-inches at the wide end).
Notch the wide end of each triangle with about a 1/2-inch cut, then roll from the wide end to the pointed end, tucking the point under the croissant.
Place on a parchment-lined baking sheet, cover loosely with plastic wrap, and allow to proof until doubled in size (1 to 2 hours).
Preheat the oven to 375 degrees F, and gently brush the croissants with egg wash.
Bake for 15 to 20 minutes, or until puffed, golden brown, and flaky.
*Instant yeast may be substituted. Rise time may need to be reduced by 10 to 15 minutes. You’ll know your dough is done rising when it has doubled in volume.