For the cake:
2 cups (9 ounces) all-purpose flour
2 teaspoons cinnamon
2 teaspoons baking powder
1 teaspoon baking soda
1 teaspoon salt
4 large eggs, room temperature
1 teaspoon vanilla
3/4 cup (6 ounces) canola oil
1 cup (8 ounces) granulated sugar
4 cups grated carrots (a little less than 2 pounds carrots)
For the frosting:
1/4 cup (2 ounces) unsalted butter, room temperature
1 8-ounce package cream cheese, room temperature
1 teaspoon vanilla extract
3 cups powdered sugar
Pinch of salt
Preheat the oven to 350°F. Grease a 9x13-inch baking dish.
Whisk together the flour, cinnamon, powder, soda, and salt. In a separate bowl, beat the eggs with the vanilla. Set both aside.
In a large bowl, beat together the oil and sugar in a stand mixer or by hand until they reach a uniform consistency. With the mixer on low, beat 1/3 of the flour. Next, add 1/3 of the eggs. Continue adding the flour and eggs in alternating additions. Stop mixing when the last of the flour is just barely incorporated. Fold the carrots into the batter with a spatula, working slowly and gently until the carrots are distributed and no more dry flour remains.
Pour the batter into the baking dish and tap the dish a few times against the counter to work out the air bubbles. Bake for 45 to 50 minutes, rotating once during baking. The finished cake should be slightly puffed in the middle and browned on the edges. A toothpick inserted in the middle should come out clean.
Let the cake cool completely before frosting, about one hour, or wait to frost until the next day.
When ready to frost, beat together the butter and cream cheese. Slowly beat in the vanilla, powdered sugar, and salt. Increase to high once the frosting starts to come together into lumps. Beat until creamy, scraping down the sides of the bowl as necessary.
Leftover cake can be kept, covered, at room temperature for several days. You can also wrap the unfrosted cake in aluminum foil and freeze it for up to 3 months.