Good et al. 2026 — Heavy metals, nutrients, and organochlorine pesticides in cow and plant-based milks (Houston, US retail)
Good and colleagues at Texas Southern University measured four heavy metals (Cr, total As, Cd, Pb), four macronutrients (Na, Mg, K, Ca), four micronutrients (Fe, Cu, Zn, Mn), and 24 organochlorine pesticides (OCPs) in 22 commercially available milk products purchased from Houston, Texas grocery retailers — cow milk plus seven plant-based milk alternative (PBMA) categories (almond, soy, oat, coconut, hemp, rice, cashew). Heavy metals and minerals were quantified by inductively coupled plasma mass spectrometry (ICP-MS); OCPs by gas chromatography with electron capture detection (GC-ECD) following USEPA Method 8081B. PBMAs exhibited higher and more variable concentrations of Cr, As, and Cd than cow milk, with rice milk showing the highest arsenic (0.64 µg/L) and hemp milk the highest chromium (0.68 µg/L). Lead concentrations were comparable across all milk types (0.18 to 0.28 µg/L). All measured concentrations of heavy metals fell well below applicable regulatory thresholds for drinking water and milk; the authors flag that no harmonized heavy-metal maximum limits currently apply to plant-based milk alternatives. Detectable residues of multiple OCPs (dicofol, hexachlorobenzene, mirex, toxaphene, kepone, and others) were observed across all milk categories.
Key numbers
All concentrations are reported in micrograms per liter (µg/L) of the beverage as analyzed and as consumed, per the source’s Materials and Methods (microwave-assisted acid digestion of 4 mL well-homogenized liquid milk, diluted to a final 2% HNO3 concentration, then ICP-MS quantification). Heavy metal values in Tables 1, 3, and 4 are reported as mean ± standard deviation across brands per milk type (n = 2 to 4 brands per type), with each brand analyzed in triplicate; brand-level means were treated as independent observations for the milk-type summary statistics. The arsenic figures below are total arsenic (no inorganic-arsenic speciation was performed by the authors), even though the Discussion text contextualizes potential intake against the WHO inorganic arsenic provisional tolerable daily intake.
Heavy metal concentrations by milk type (Table 1, source p. 3)
| Milk type | Cr (µg/L) | As (µg/L, total) | Cd (µg/L) | Pb (µg/L) |
|---|---|---|---|---|
| Cow | 0.11 ± 0.06 | 0.02 ± 0.01 | 0.03 ± 0.01 | 0.20 ± 0.10 |
| Almond | 0.43 ± 0.63 | 0.07 ± 0.05 | 0.04 ± 0.04 | 0.18 ± 0.07 |
| Coconut | 0.24 ± 0.10 | 0.13 ± 0.04 | 0.05 ± 0.02 | 0.28 ± 0.23 |
| Soy | 0.23 ± 0.05 | 0.08 ± 0.02 | 0.17 ± 0.03 | 0.28 ± 0.06 |
| Oat | 0.49 ± 0.09 | 0.13 ± 0.03 | 0.10 ± 0.04 | 0.26 ± 0.06 |
| Rice | 0.26 ± 0.05 | 0.64 ± 0.27 | 0.04 ± 0.01 | 0.26 ± 0.06 |
| Hemp | 0.68 ± 0.55 | 0.28 ± 0.22 | 0.05 ± 0.02 | 0.21 ± 0.03 |
| Cashew | 0.41 ± 0.05 | 0.05 ± 0.02 | 0.03 ± 0.02 | 0.18 ± 0.02 |
Per-analyte ranges across the eight milk categories: Cr 0.11 to 0.68 µg/L (lowest cow, highest hemp); total As 0.02 to 0.64 µg/L (lowest cow, highest rice); Cd 0.03 to 0.17 µg/L (lowest cow/cashew, highest soy); Pb 0.18 to 0.28 µg/L (lowest almond/cashew, highest coconut/soy). The authors highlight three patterns: Cr, As, and Cd were predominantly higher in PBMAs than in cow milk; rice and hemp milks led the As column; Pb concentrations were comparable across cow milk and PBMAs.
Macronutrient concentrations by milk type (Table 2, source p. 3)
| Milk type | Na (µg/L) | Mg (µg/L) | K (µg/L) | Ca (µg/L) |
|---|---|---|---|---|
| Cow | 14,919 ± 4,712 | 2,593 ± 263 | 64,643 ± 22,340 | 18,735 ± 7,543 |
| Almond | 16,250 ± 10,210 | 610 ± 344 | 25,200 ± 14,570 | 20,700 ± 12,190 |
| Coconut | 3,400 ± 2,140 | 670 ± 220 | 11,500 ± 7,820 | 9,800 ± 6,520 |
| Soy | 6,250 ± 2,480 | 1,870 ± 130 | 39,000 ± 7,910 | 7,800 ± 3,610 |
| Oat | 9,300 ± 1,140 | 450 ± 55 | 56,000 ± 9,280 | 11,500 ± 3,840 |
| Rice | 9,900 ± 1,010 | 220 ± 32 | 2,800 ± 460 | 5,600 ± 1,710 |
| Hemp | 11,050 ± 1,200 | 2,100 ± 1,470 | 9,800 ± 7,460 | 6,200 ± 5,260 |
| Cashew | 6,600 ± 4,780 | 860 ± 52 | 7,300 ± 470 | 1,100 ± 420 |
Micronutrient concentrations by milk type (Table 3, source p. 4)
| Milk type | Fe (µg/L) | Cu (µg/L) | Zn (µg/L) | Mn (µg/L) |
|---|---|---|---|---|
| Cow | 21 ± 10 | 63 ± 28 | 203 ± 65 | 1.2 ± 0.4 |
| Almond | 43 ± 26 | 33 ± 11 | 20 ± 9 | 9.6 ± 4.5 |
| Coconut | 59 ± 36 | 23 ± 9 | 36 ± 25 | 9.3 ± 2.1 |
| Soy | 114 ± 18 | 65 ± 11 | 74 ± 6 | 47 ± 6 |
| Oat | 44 ± 7 | 38 ± 4 | 32 ± 8 | 26 ± 7 |
| Rice | 29 ± 23 | 27 ± 3 | 17 ± 4 | 10 ± 4 |
| Hemp | 98 ± 68 | 30 ± 16 | 63 ± 61 | 39 ± 42 |
| Cashew | 57 ± 5 | 37 ± 14 | 46 ± 4 | 16 ± 2 |
Organochlorine pesticide concentrations by milk type (Table 4, source p. 5; selected high-load compounds, all values µg/L)
| OCP | Cow | Almond | Coconut | Soy | Oat | Rice | Hemp | Cashew |
|---|---|---|---|---|---|---|---|---|
| Dicofol | 945.6 ± 27.4 | 948.4 ± 28.6 | 96.2 ± 1.4 | 948.4 ± 6.8 | 948.4 ± 6.6 | 522.7 ± 601.9 | 96.2 ± 1.4 | 945.6 ± 27.4 |
| Hexachlorobenzene | 371.5 ± 10.6 | 378.0 ± 11.1 | 38.1 ± 0.6 | 378.0 ± 8.2 | 378.0 ± 8.2 | 205.6 ± 236.8 | 38.1 ± 0.6 | 371.5 ± 10.6 |
| Mirex | 344.5 ± 9.9 | 345.5 ± 10.2 | 35.1 ± 0.5 | 345.5 ± 3.1 | 345.5 ± 3.1 | 190.2 ± 218.9 | 35.1 ± 0.5 | 344.5 ± 9.9 |
| Toxaphene | 237.0 ± 6.8 | 237.5 ± 7.1 | 24.2 ± 0.3 | 237.5 ± 2.1 | 237.5 ± 2.12 | 130.7 ± 150.4 | 24.2 ± 0.3 | 237.0 ± 6.8 |
| Kepone | 334.5 ± 9.9 | 340.5 ± 10.3 | 34.1 ± 0.5 | 340.5 ± 5.7 | 340.5 ± 7.7 | 185.2 ± 213.5 | 34.1 ± 0.5 | 334.5 ± 9.9 |
| 4,4-DDT | 68.1 ± 2.0 | 68.3 ± 2.1 | 7.06 ± 0.10 | 68.3 ± 0.5 | 68.3 ± 0.49 | 37.6 ± 43.3 | 7.06 ± 0.10 | 68.2 ± 1.9 |
The full Table 4 reports 24 OCPs; the six rows above are the highest-load compounds. The remaining 18 OCPs (α-Chlordane, γ-Chlordane, 4,4-DDD, 4,4-DDE, α-BHC, β-BHC, γ-BHC, Aldrin, Dieldrin, Endosulfan I/II/sulfate, Endrin, Endrin aldehyde, Endrin ketone, Heptachlor, Heptachlor epoxide, Methoxychlor) are reported in source Table 4 at µg/L concentrations ranging from approximately 1.5 (α-BHC in coconut) to ~81 (Methoxychlor in cow, almond, soy, oat, cashew). The authors group Σ24-OCP burden as approximately 6,000 µg/L for cow, almond, soy, oat, and cashew milks; approximately 3,600 µg/L for rice milk; and approximately 630 µg/L for coconut and hemp milks (Figure 4, source p. 8).
Exposure framing supplied by the authors (Discussion, source p. 5)
For a conservative daily intake assumption of 250 mL milk per day, the authors state that:
- At the upper observed range of As, Cd, and Cr in PBMAs, a single 250 mL serving would contribute a non-trivial fraction of the WHO inorganic arsenic provisional tolerable daily intake of 2.1 µg/kg body weight per day, and Cd contributions from a single serving “approach levels of concern for populations with high dietary intake.”
- For 250 mL servings of cow, almond, soy, and oat milks, the estimated Σ24-OCP daily intake is approximately 750 to 770 µg of total OCPs, compared with approximately 80 µg for coconut and hemp milks.
The authors do not compute formal hazard quotients or margin-of-exposure values for individual analytes and do not report body-weight assumptions for the consumer profile beyond the WHO PTDI reference.
Methods (brief)
Sample preparation followed microwave-assisted acid digestion. For each sample, 4 mL of well-homogenized milk was transferred into a Teflon digestion vessel with 10 mL of 70% nitric acid (HNO3); digestion conditions were 200 °C and 800 psi for 15 minutes. Digestates were diluted to a final 2% HNO3 concentration with ultrapure deionized water. Heavy metals (Cr, As, Pb, Cd) and macro/micronutrient minerals (Ca, Mg, Na, K, Fe, Cu, Zn, Mn) were quantified on an Agilent 7900 ICP-MS with calibration standards of 0.05 to 100 µg/L prepared from multi-element stock solutions; helium collision gas mode was used to minimize polyatomic interferences; internal standards (scandium, yttrium, terbium) corrected for matrix effects and instrumental drift. The Methods text notes “need to add reference #31 here” in a sentence regarding the ICP-MS conditions, an editorial placeholder that does not affect the reported data.
OCP extraction followed USEPA Method 8081B with liquid-liquid extraction in a 1:1 hexane-acetone mixture and silica gel cleanup to remove lipids. OCP quantification used an Agilent 6890 GC-ECD with dual Restek Rtx-CL Pesticides columns, nitrogen carrier gas at 4.3 mL/min, injector at 250 °C, ECD at 340 °C, oven program 120 °C (3-min hold) ramped to 310 °C (1-min hold). Calibration used EPA 500-series OCP standards spanning 0.5 to 500 µg/kg.
Sample handling: products were purchased in their original retail containers (HDPE bottles, aseptic cartons, glass bottles); container material was recorded and the authors report no statistically meaningful differences associated with packaging. Samples were transported under temperature-controlled conditions, stored at 4 °C in the dark, and analyzed within 72 hours of purchase. Quality control: triplicate injections of each sample; matrix spike samples fortified with known analyte concentrations; recoveries of 80 to 120% accepted per AOAC method-validation guidelines (AOAC Appendix F). No speciation was performed for arsenic, mercury, or chromium; reported values are total Cr, total As, total Cd, and total Pb.
Statistical analysis: all concentrations reported as mean ± standard deviation across brands per milk type. Each commercial brand was analyzed in triplicate; arithmetic mean of triplicate measurements represents each brand; brand-level means treated as independent observations for milk-type summary statistics. The standard deviation reflects between-brand variability rather than analytical precision. Per-category brand replication (n) is small (n = 2 to 4 per milk type), and no formal hypothesis testing was performed. The authors describe the study as exploratory.
Limitations explicitly named by the authors: small sample set with limited brand replication per category (not capturing full commercial variability); samples purchased in Houston but products originated from broader national or international supply chains (findings not specific to any production region); cross-sectional design (no seasonal or batch-to-batch variation captured); no chemical speciation, bioaccessibility, or cumulative dietary exposure assessment.
Implications
Certification: This is a US-market PBMA survey with very small per-category brand replication (n = 2 to 4 brands per milk type), peer-reviewed in Scientific Reports (Nature). It provides direct evidence for the comparative magnitude of Cr, total As, Cd, and Pb across cow milk and seven PBMA categories on US retail in 2025, with all measured heavy metal concentrations falling well below US, EU, and Codex drinking-water or applicable food regulatory thresholds. The strongest contamination signals — rice milk total As at 0.64 µg/L, hemp milk Cr at 0.68 µg/L, soy milk Cd at 0.17 µg/L — remain at sub-µg/L levels well below the regulatory frameworks the authors reference for drinking water or conventional dairy milk, and the authors explicitly state that no harmonized heavy-metal maximum limits currently apply to PBMAs. The small n per milk-type category limits the value of these reported means as population estimators.
App: Route to plant-milk, soy-milk, rice-milk, almond, coconut, oat, soy, rice, cashews, non-rice-grains (for hemp), and milk-and-dairy (for cow milk comparator) ingredient pages, and to plant-milks-non-soy-non-rice (almond, coconut, oat, hemp, cashew), plant-milks-soy-based, plant-milks-rice-based, and rice-beverages-rice-milk product pages, and to chromium, arsenic-total, cadmium, and lead metal pages. Per-milk-type brand replication is too small for these values to serve as percentile estimates; downstream pooling should treat each milk-type row as a small-n mean of brand-means rather than as a population-level central tendency.
Courses: Useful for illustrating (a) the systematic difference in trace metal burden between dairy milk and plant-based milk alternatives, reflecting fundamental production-pathway differences (regulated animal feed/water/veterinary inputs for cow milk versus direct soil/irrigation-water inheritance for plant matrices), (b) the role of crop hyperaccumulation in shaping PBMA contamination profiles (rice for inorganic arsenic, hemp for chromium and lead, soy for cadmium), (c) the persistence of legacy organochlorine pesticides in modern food products decades after regulatory bans, (d) the regulatory gap created by the absence of harmonized heavy-metal maximum limits for PBMAs despite their rapid market growth, and (e) the contrast between formulation-driven mineral fortification (Ca, Na, Mg in PBMAs) and intrinsic plant-matrix mineral composition.
Wiki pages this source may touch
- plant-milk
- almond
- coconut
- oat
- soy-milk
- soy
- rice-milk
- rice
- cashews
- non-rice-grains
- milk-and-dairy
- plant-milks-non-soy-non-rice
- plant-milks-rice-based
- plant-milks-soy-based
- rice-beverages-rice-milk
- chromium
- arsenic-total
- cadmium
- lead
Verification notes
The source paper is in English, open access under CC-BY 4.0, and provides four complete data tables (Tables 1-4) covering heavy metals, macronutrients, micronutrients, and 24 OCPs respectively. All numerical values on this page were extracted from those four tables; Discussion-text reported values were cross-checked against the table values and agree.
Internal inconsistency in the source’s brand-count narrative: the Materials and Methods section (p. 2, “Sample selection and classification”) states “four brands of cow’s milk and almond milk, three brands of soy and coconut milks; and two brands of oat, rice, hemp, and cashew milks” (which sums to 22 brands across eight categories, matching the stated study n = 22). The Statistical analysis subsection (p. 3) restates this as “four for cow, almond, and soy milks; three for coconut milk; and two for oat, rice, hemp, and cashew milks” (which sums to 23). This page uses the Materials and Methods version (4 cow + 4 almond + 3 soy + 3 coconut + 2 oat + 2 rice + 2 hemp + 2 cashew = 22) because it reconciles with the source’s headline n = 22 statement. Downstream synthesis using per-category brand counts should treat soy as n = 3 brands and coconut as n = 3 brands, not n = 4 / n = 4.
Arsenic speciation: the authors did not perform inorganic-arsenic speciation; the reported “As” values are total arsenic (tAs) per the Materials and Methods ICP-MS protocol. The Discussion contextualizes the rice and hemp milk arsenic values against the WHO inorganic arsenic provisional tolerable daily intake of 2.1 µg/kg body weight per day, which is an inorganic-As reference framework being applied to total-As measurements without an explicit iAs/tAs conversion factor; this introduces an interpretive limitation that future synthesis touching this paper should preserve.
Mercury (total or methyl) was not measured. Other CLAUDE.md Part 14 priority analytes that were not measured: Ni, Al, Cr-VI (only total Cr was measured), Sn, Sb, U. The metals: frontmatter array is therefore [Cr, tAs, Cd, Pb], reflecting only what the source quantified.
Hemp does not have a dedicated ingredient slug in the current taxonomy snapshot (no ingredients/hemp.md); the Wiki-pages-this-source-may-touch list routes hemp milk to [[ingredients/non-rice-grains]] as the closest umbrella slug for cereal/seed-derived plant beverages. If a hemp or hemp-seed ingredient page is created via Karen’s Step 0 Lock in the future, this source should be added to its inbound routing.
Cow milk is included in the source’s heavy-metal, macronutrient, micronutrient, and OCP tables as the comparator group. There is no dedicated products/milk-and-dairy.md page in the current product taxonomy, so the products: frontmatter array does not include a cow-milk product slug; the ingredient-level routing via [[ingredients/milk-and-dairy]] captures the cow-milk data. If a cow-milk product page is created via Karen’s Step 0 Lock in the future, this source should be added to its inbound routing.
The OCPs (24 compounds) are not part of HMI’s heavy-metals scope and are not surfaced in the metals: frontmatter array. They are retained in the Key numbers and methods sections of this page because they are a primary deliverable of the source paper and provide methodological context for the heavy-metals findings (the same 22 samples were measured for both heavy metals via ICP-MS and OCPs via GC-ECD). Downstream synthesis on this source should focus on the Cr/As/Cd/Pb rows.
Methods note: the source’s Materials and Methods section contains the editorial placeholder text “need to add reference #31 here” embedded mid-sentence in the ICP-MS instrumentation paragraph (source p. 2). This appears to be an unresolved author/editor note that survived final publication; it does not affect the reported numerical data or analytical methodology described. The placeholder is faithfully noted in the Methods (brief) section above.
Brand attribution: the source does not name individual brands in any of the four data tables; samples are reported only by milk-type category (cow, almond, soy, etc.) and brand replication count (n = 2 to 4). No brand-firewall (Part 12) translation was needed on this page because the source itself does not surface brand-level identifiers in its data. The Materials and Methods section notes only that samples were “selected based on market availability and consumer prevalence rather than geographic sourcing.”
License confirmed CC-BY 4.0 from source p. 11 (Additional information / Open Access statement). DOI 10.1038/s41598-026-44766-0 resolves to the Nature Scientific Reports article; received 14 August 2025, accepted 13 March 2026, published online 09 April 2026; volume 16, article 16730. Funding: U.S. National Science Foundation grant 2306877. Competing interests: none declared.
Audit subagent (2026-06-08, agent a4f698242d203b557) flagged that the Cashew Cd standard deviation was reported in this page as 0.03 ± 0.01 but source Table 1 (p. 3) reports 0.03 ± 0.02; verified independently against PDF Table 1 — source confirms 0.03 ± 0.02. Cashew Cd SD corrected to 0.03 ± 0.02. The Cashew Cd mean (0.03) is unchanged and the cross-milk-type “Cd 0.03 to 0.17 µg/L (lowest cow/cashew)” range statement remains correct. All other audit checks (slug vocabulary, speciation, methods, Part 12 brand-firewall, Part 2 wiki/HMTc firewall) returned ✅ clean; verdict REVISE with this single SD typo correction.
Page history
The five most recent substantive edits to this page. The full version history lives in git; when DOI minting comes online (see schema docs), each entry below will also link to a version-pinned DataCite DOI.
| Commit | Date | Description |
|---|---|---|
| c5d6794 | 2026-06-08 | frank-intake: re-dedup June 8 under space-free name |