Do Oxalates Really Inhibit Calcium Absorption?

Oxalates do inhibit calcium absorption, and the effect is dramatic. When oxalate binds to calcium in your digestive tract, it forms an insoluble compound your body can’t break down or absorb. This is why spinach, despite containing a decent amount of calcium on paper, delivers only about 5% of it to your body, compared to 28% from milk.

How Oxalate Locks Up Calcium

Oxalate is a small organic molecule found naturally in many plants. It carries a strong negative charge that attracts positively charged calcium ions. When the two meet in your gut, they snap together at multiple binding sites on the oxalate molecule, forming calcium oxalate crystals. These crystals are essentially inert. They pass through your intestines without being absorbed and leave your body in stool.

This binding happens before your intestinal lining ever gets a chance to pull calcium into your bloodstream. So even if a food is rich in calcium, a high oxalate content can neutralize most of that calcium before it does you any good. The binding is strong enough that magnesium can weaken it slightly (by competing for the same binding sites), but not enough to make a meaningful difference in how much calcium you absorb from very high-oxalate foods.

Spinach vs. Milk: The Numbers

The clearest demonstration comes from a study that measured calcium absorption from spinach and milk in the same people. On average, participants absorbed 27.6% of the calcium in milk but only 5.1% of the calcium in spinach. That’s a difference of about 22 percentage points, and absorption from milk was higher in every single participant. Spinach is one of the highest-oxalate foods, containing 600 to 970 mg of oxalate per 100 grams.

To put that in perspective: a cup of cooked spinach contains roughly 240 mg of calcium, which sounds impressive. But at 5% absorption, your body only gets about 12 mg from it. A cup of milk has about 300 mg of calcium, and at 28% absorption, you actually take in around 84 mg. The usable calcium from milk is seven times higher.

Low-Oxalate Vegetables Are a Different Story

Not all vegetables suffer from this problem. Kale, a low-oxalate green, has calcium absorption averaging 41%, which is actually higher than milk’s 32% in the same study. Broccoli, bok choy, and collard greens are similarly low in oxalates and deliver their calcium efficiently. The issue isn’t vegetables in general. It’s specifically the high-oxalate ones.

The highest-oxalate foods include spinach, rhubarb (600 to 1,235 mg per 100 grams), beet greens (around 870 mg per 100 grams), Swiss chard, and sweet potatoes. If you rely heavily on these foods for calcium, you’re likely getting far less than you think.

Cooking Reduces Oxalate Significantly

How you prepare high-oxalate vegetables matters. Boiling is the most effective method, reducing soluble oxalate content by 30 to 87% depending on the vegetable. The oxalate leaches into the cooking water, so discarding the water is key. Steaming is less effective, reducing soluble oxalate by only 5 to 53%. Baking has essentially no effect.

This means boiled spinach delivers more usable calcium than raw spinach, though it still won’t match a low-oxalate green like kale. If you eat spinach for its other nutrients (folate, iron, vitamin K), boiling and draining is a simple way to reduce the oxalate load.

The Kidney Stone Connection

When oxalate binds calcium in your gut, that’s actually protective. The calcium oxalate crystals leave your body in stool, harmlessly. The problem arises when oxalate is absorbed into your bloodstream without calcium to bind it. That free oxalate travels to your kidneys, where it meets calcium in your urine and forms the crystals that become kidney stones.

Urinary oxalate excretion above 25 mg per day is considered an increased risk factor for stones. Even small increases of 5 mg per day in urinary oxalate can double stone risk in men with otherwise normal levels. Large cohort studies found that dietary oxalate intake alone carries a modest risk for stone formation, with a relative risk of about 1.2 for men and older women. But here’s the counterintuitive finding: dietary calcium has a stronger influence on stone risk than dietary oxalate, and the correlation is negative. Eating more calcium is associated with fewer stones, not more, because the calcium binds oxalate in the gut before it can be absorbed and reach the kidneys.

The National Kidney Foundation recommends aiming for 1,000 to 1,200 mg of calcium per day, ideally from food eaten with meals. This strategy is considered more effective for most people than a strict low-oxalate diet, which can be hard to follow and may cut out otherwise healthy foods.

Your Gut Bacteria Play a Role

A bacterium called Oxalobacter formigenes lives in the intestines of a large proportion of adults and uses oxalate as its primary energy source. It breaks down oxalate in the colon, reducing how much gets absorbed into the bloodstream. People colonized with this bacterium have a roughly 70% lower risk of being recurrent calcium oxalate stone formers. The bacterium thrives on dietary oxalate, so people who eat more oxalate-containing foods tend to harbor larger populations of it, creating a natural feedback loop.

Antibiotic use can wipe out these bacteria, and recolonization isn’t guaranteed. This may partly explain why some people handle high-oxalate diets without issues while others develop problems.

Practical Ways to Maximize Calcium Absorption

If your goal is getting the most calcium from your diet, the strategy is straightforward. Choose low-oxalate greens like kale, bok choy, broccoli, and collard greens when you want plant-based calcium. These deliver calcium as effectively as dairy, and in kale’s case, even more so.

When you do eat high-oxalate foods, pair them with a calcium source at the same meal. The calcium binds the oxalate in your gut, which prevents the oxalate from being absorbed and reaching your kidneys. This is why the recommendation isn’t to avoid oxalate-rich foods entirely but to eat adequate calcium alongside them. Boiling high-oxalate vegetables and discarding the water before eating further reduces the oxalate load. And spacing your calcium intake across meals (rather than taking it all at once) keeps a steady supply available to neutralize oxalate throughout the day.