91³Ô¹ÏÍø

Watch CBS News

Some Halloween candy still includes carcinogen Red Dye 3, Consumer Reports warns. Here's a list.

As people stock up on Halloween candy this month, they may be buying bags of treats that contain with Red Dye 3, a carcinogen that is banned in Europe and for use in cosmetics in the U.S., according to Consumer Reports. 

Some popular Halloween candy available in stores this year are manufactured using Red Dye 3, Consumer Reports said on Wednesday. The pigment, also known as Red Dye No. 3, has been shown to cause cancer in animals, and some studies have linked it and other artificial food dyes to hyperactivity and other neurobehavioral effects in children, the nonprofit consumer advocacy group said. 

To be sure, the immediate risks are unclear. The FDA says it allows the use of the dyes in foods because the "way that Red No. 3 causes cancer in animals, specifically rats, does not occur in humans so these animal results have limited relevance to humans."

The dye will be banned in California starting in 2027.

Halloween candy with Red Dye 3

The Halloween candy that Consumer Reports identified as containing Red Dye 3 as an ingredient include:

  • Brach's Candy Corn
  • Brach's Autumn Mix
  • Brach's Mellowcreme Pumpkins
  • Nerds Candy Corn
  • Double Bubble bubble gum
  • Pez Candy
  • Amos Lollipop Rings
  • Create-A-Treat Halloween House

"Parents should know that Brach's Candy Corn, Double Bubble bubble gum, Pez and other treats their kids may bring home on Halloween are made with an ingredient that is a known carcinogen," said Brian Ronholm, director of food policy at Consumer Reports, in a statement. "These manufacturers should stop making products with this dangerous chemical since less risky alternatives are readily available."

Ferrara, the owner of Brach's, said in an emailed statement to CBS MoneyWatch that its products are safe and are manufactured with ingredients approved by the U.S. Food & Drug Administration.

"Ferrara complies with all laws and regulations related to our products and will continue to do so in the future," the company said. 

What is Red Dye 3?

The red coloring, a synthetic dye made from petroleum, creates a bright cherry-red tint in food and drinks, to the FDA. It was banned from use in cosmetics in 1990 after evidence that it was associated with cancer in animals, the agency said. 

Ferrara added that it has been phasing out Red Dye 3 since early 2023, and that it's on track to eliminate the food coloring from its remaining products by the end of 2026. 

"In the current stage of our reformulation process, more than half of the Brach's portfolio does not include Red No. 3," it added.

Consumer Reports said it is urging the FDA to ban Red Dye 3 in food, dietary supplements and ingested drugs. 

"Companies are moving away from using Red Dye 3, but it's evident that we can't depend on all of them to do the right thing," Ronholm said. "It's been over 30 years since the FDA banned Red Dye 3 in cosmetics after it was found to cause cancer in animals, but it's still allowed in our food."

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });