Wash the potatoes well, but there's no need to peel them since the skin adds texture and nutrients. Using the large holes of a box grater, shred the potatoes into long strands. Work quickly here so the potatoes don't start to brown from air exposure.
Place the shredded potatoes in the center of a clean kitchen towel and gather up the edges. Twist tightly over a sink or bowl to squeeze out as much liquid as possible. This step is the single biggest reason hash browns turn out crispy instead of mushy.
Transfer the dried shreds into a mixing bowl. Add the salt, pepper, and garlic powder if using, then toss everything together with your hands. Make sure the seasoning is distributed evenly so every bite has flavor.
Set a large skillet over medium-high heat and add the butter and oil together. Let the mixture heat until the butter stops foaming, which usually takes about a minute. This tells you the pan is hot enough to start crisping right away.
Spread the shredded potatoes evenly across the skillet in a thin, even layer. Avoid piling them too high in the center, since thick spots won't cook through properly. Press down firmly with your spatula to help everything make contact with the hot pan.
Resist the urge to stir or flip too soon. Let the potatoes cook untouched for about 5 to 6 minutes so a deep golden crust can form on the bottom. Moving them too early is the most common mistake that ruins the crispiness.
Once the bottom is golden brown, slide the hash browns onto a plate, then flip them back into the skillet uncooked-side down. Press down again with the spatula and cook for another 5 to 6 minutes until both sides are crispy and golden.
Slide the finished hash browns onto a plate or cutting board and slice into portions. Hash browns taste best straight out of the pan while they're still hot and crunchy, so serve them right away for the best texture.