Is my list too top heavy?

I think that your stats are competitive even at the most selective schools on your list (Stanford and Harvard). It also looks to me as if you could handle the rigor at these schools. Of course Stanford and Harvard are high reaches and lacking a “hook” your chances are lower than the overall acceptance rate at these schools.

One thing that you need to do is to make sure that the University of Washington really is a safety for you. Given your stats and the fact that you are in-state I hope that it is a safety, but I am not sure and it might depend upon your major. You should add a second safety, such as Washington State (or less likely something to the north of you in BC, or a WUE school if Washington counts for WUE).

Given how strong the University of Washington is, I can see having your other applications go to reaches. There is little point in applying to a school that you would turn down and attend UW instead.

Would you really want to fly across the country to attend Northeastern (which is also very good), or don a very warm winter coat and boots to pay out of state prices at Michigan? Is UNC worth the out of state cost of attendance versus U.Washington in-state? Living pretty far away from you in the northeast corner of the country, I see UNC and UW as both really good schools, but I don’t see why I would pay out of state costs at either if I were in-state for the other.

Would you rather live for four years in the middle of a big city (Columbia), or a beautiful but isolated small town in the snow zone (Cornell, Williams)? Do you want a big school or a small school? I think that you should think about these issues before sending in 21 applications to roughly 17 or 18 reaches, perhaps 2 or 3 matches, and a very good safety.

Are you sure that you and your parents could afford to attend any university on the list? Are you fine with full pay with no debt, or have you run the NPCs?

I am concerned that if you try to write 21 applications, then your essays are going to start to suffer before you get to the end of the applications.