Tofu (firm) vs Chicken breast (cooked)

The short answer

Chicken breast is far higher in protein per 100 g and near fat-free; tofu has less protein but is a complete plant protein with no cholesterol and less saturated fat. Chicken for maximum lean protein, tofu for a plant-based swap that still carries real protein.

Tofu (firm) and Chicken breast (cooked), per 100 g and per portion. A gap means USDA has no value for it — not zero.

Tofu (firm) · per 100 gChicken breast (cooked) · per 100 g
Calories144165
Protein17.3 g31 g
Fat8.7 g3.6 g
Carbs2.8 g0 g
Fiber2.3 g0 g
Sugarsno data0 g
Sodium14 mg74 mg
Vitamins & minerals — where both carry data
Calcium683 mg15 mg
Folate29 µg4 µg
Iron2.7 mg1 mg
Magnesium58 mg29 mg
Niacin0.4 mg13.7 mg
Phosphorus190 mg228 mg
Potassium237 mg256 mg
Riboflavin0.1 mg0.1 mg
Thiamin0.2 mg0.1 mg
Vitamin Ano data6 µg
Vitamin B120 µg0.3 µg
Vitamin B60.1 mg0.6 mg
Vitamin C0.2 mg0 mg
Vitamin D0 µg0.1 µg
Vitamin Eno data0.3 mg
Vitamin Kno data0.3 µg
Zinc1.6 mg1 mg
At equal calories (per 100 kcal)
ProteinTofu (firm): 12 g, Chicken breast (cooked): 18.8 g · FiberTofu (firm): 1.6 g, Chicken breast (cooked): 0 g · SodiumTofu (firm): 9.7 mg, Chicken breast (cooked): 44.8 mg

Chicken is shown cooked, tofu raw — each as it is eaten. Cooking concentrates chicken’s numbers, so read the state in each column, not just the totals.

Generic USDA foods (not brands), so both carry micronutrients. Numbers are per 100 g unless the portion toggle is on. USDA FoodData Central, as of 2026-08-12.

Common questions
Is Tofu (firm) or Chicken breast (cooked) better?

Neither is “better” on its own — it depends what you want from it. The table shows where each is higher; the short answer says when each one fits. Compare on the same basis (per 100 g) and pick for your dish and your goal.

How were these numbers worked out?

Straight from USDA FoodData Central for the generic form of each food, per 100 g. We show the portion view too, but portion sizes differ between foods, so per 100 g is the fair comparison.

Why does one column say “no data”?

Because USDA has no value for that nutrient in that food — so we leave it blank rather than print a 0 that would read as “none”. A real zero from USDA still shows as 0.

More in Plant protein