91³Ô¹ÏÍø

Watch CBS News

Air quality has been horrible this year — and it's not just because of wildfire smoke

Much of the United States has experienced horrible air quality this year due to the Canadian wildfires. It's not only particles from smoke creating pollution, but new research shows there's also an invisible pollution problem causing health concerns: Ozone.  

When ozone is up in the atmosphere, it filters out the sun's harmful ultraviolet rays. When it reaches the ground, it's not healthy for humans.  

According to the U.S. Environmental Protection Agency, can cause coughing and a sore throat, make it more difficult to breathe deeply, and make the lungs more susceptible to infection.  

"It's the things that affect your bronchial lungs and asthma attacks is a key one, particularly in young children." said Dan Jaffe, an environmental chemistry professor at the University of Washington. 

Jaffe has been studying ozone pollution for 30 years. He said most of the time it comes from a chemical reaction when the exhaust from our cars or factories gets baked by the sun.  

"Ozone is the major ingredient in smog," said Jaffe. "Ozone tends to be a summertime problem and we associate it more with cities that get a lot of sunshine."  

Los Angeles skyline shrouded in smog
Smog, also known as ground-level ozone, hangs over Los Angeles on a day rated as having "moderate" air quality, June 11, 2019.  / Getty Images

In addition to cars and factories, wildfires can release similar chemicals that also react with the sun and create ground-level ozone pollution, according to a research paper released last year by Jaffe.  

 that with fewer people driving in 2020 because of the pandemic, ozone levels went down in the eastern United States. However, the West saw massive wildfires that year and ozone pollution there went up.   

"So that was the first sort of clue as to the role of fires," said Jaffe. "And as those pollutants moved downstream, they contributed to very high levels of ozone in a number of cities, including in California, in Denver, and other places."  

"So those cities had some of their worst ozone levels in a decade in 2020," continued Jaffe.  

Jaffe said this year ozone pollution has increased in cities in the Midwest and East because of the fires in Canada.   

The fires, which began in early June, are still burning and affecting air quality in parts of the United States, as far south as Florida.  

"What these fires are doing is they're emitting a similar type of pollutants as cars and factories do," said Jaffe. "They're emitting hydrocarbons, they're emitting nitrogen oxides, and as these pollutants move downwind and interact in the urban area, then we get really high levels of both particulate matter, the stuff we see, as well as ozone, which is the stuff that's damaging to our lungs." 

Jaffe said ozone levels will continue to be elevated in parts of the Midwest and East for as long as the fires burn. You can check to see if you're affected by ozone pollution.  

Jaffe recommends using an air filter for bad ozone days and staying indoors when conditions are poor.  

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=fd53910ecf4604072044ab7c46d9b028'; 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(); } }); }); }); });