In a large bowl, combine the buttermilk, kosher salt, pepper, cayenne pepper, garlic powder, and onion powder. Mix well.
Add the chicken pieces to the buttermilk mixture, ensuring all pieces are fully submerged. Cover the bowl and refrigerate for at least 4 hours, or preferably overnight, for the juiciest results.
In a separate shallow dish, whisk together the flour, cornstarch, and baking powder. This creates the ultra-crispy coating.
Remove the chicken from the buttermilk, letting excess drip off, but do not rinse.
Dredge each piece of chicken thoroughly in the flour mixture, pressing the coating onto the chicken firmly to create craggy, thick spots. For extra crispiness, dip the floured chicken back into the remaining buttermilk for a quick second dip, then coat again in the flour mixture.
Heat 2-3 inches of oil in a large, heavy-bottomed skillet or Dutch oven to 325 degrees Fahrenheit. Use a thermometer to monitor the temperature; maintaining this heat is key for crispy chicken.
Carefully place the chicken pieces into the hot oil, ensuring you do not overcrowd the pan. Work in batches.
Fry the chicken for about 6-8 minutes per side, turning occasionally, until deep golden brown and cooked through. Thighs and drumsticks may take slightly longer than breasts. The internal temperature should reach 165 degrees Fahrenheit.
Remove the cooked chicken from the oil and place it on a wire rack set over a baking sheet to drain excess oil. Do not place directly on paper towels, as this can steam the bottom crust and make it soggy.
Serve your best homemade fried chicken immediately as a savory dinner idea or comfort food classic.
Notes
For the crispiest coating, let the dredged chicken rest on the wire rack for 15 minutes before frying. This allows the coating to hydrate slightly and adhere better.
If you are making Chicken Fried Chicken, prepare a simple white gravy separately to pour over the finished product.
Maintain your oil temperature carefully; if it drops too low, the chicken absorbs too much oil and becomes greasy instead of crispy.