Beans are both a source of protein and carbohydrates—they don’t neatly fit into just one category like meat (mostly protein) or bread (mostly carbs). They’re a fantastic hybrid food, often called a “superfood” for good reason.
Here’s a typical nutritional breakdown for cooked beans (using common examples like black, pinto, kidney, or navy beans, based on USDA-style data for a standard ~½ cup / ~90–120g cooked serving without added salt):
Calories: ~110–130
Protein: ~7–8 grams (solid plant-based protein!)
Total Carbohydrates: ~20–24 grams (the majority of the calories come from here)
Of those carbs: ~6–9 grams are dietary fiber (huge bonus—often 25%+ of your daily fiber needs in one small serving)
Fat: Very low (~0.5–1 gram)
In other words:
By weight/grams, carbs usually win out over protein (roughly 2–3× more carbs than protein per serving).
By calories, about 60–75% come from carbs (mostly complex starches + fiber), and ~20–30% from protein.
That’s why nutrition guidelines (like USDA MyPlate) count beans in both the vegetable group and the protein foods group—they’re versatile! In vegetarian/vegan diets, they’re frequently used as a primary protein source, even though animal proteins (like chicken or eggs) deliver more protein per calorie with fewer carbs.
Quick comparison for context:
A ½ cup of cooked black beans ≈ 8g protein + 20g carbs (with 7–8g fiber)
A 3-oz chicken breast ≈ 25g protein + almost 0g carbs
A slice of bread ≈ 3–4g protein + 15–20g carbs
So beans are more carbohydrate-dominant in raw numbers, but their combo of complex carbs (low glycemic impact thanks to fiber and resistant starch), high-quality plant protein, and tons of micronutrients (iron, folate, potassium, magnesium) makes them way more balanced and nutrient-dense than a plain carb source like rice or pasta.
What do you think—do you eat beans more as a protein stand-in (like in chili or burritos), or just as part of a veggie side? Or are you team “beans are basically carbs and we should stop pretending otherwise”? 😄 I’d love to hear your take!
