91³Ô¹ÏÍø

Watch CBS News

Tornado watch, warnings issued in multiple Michigan counties through Wednesday morning

The National Weather Service Storm Prediction Center has placed all of Southeast Michigan into the "enhanced risk" (level 3/5) for severe weather on Tuesday.

List of watches and warnings in Michigan

Tornado warning issued through 2:45 a.m. for Monroe and Lenawee counties.

Tornado warning issued through 2:15 a.m. on Wednesday for Washtenaw County.

Tornado watch issued through 4 a.m. on Wednesday for the following counties: Wayne, Oakland, Macomb, Kent, St. Joseph, Genesee, Washtenaw, Ingham, Kalamazoo, Elkhart, Ottawa, Livingston, Monroe, Jackson, Saginaw, Muskegon, Berrien, St. Clair, La Porte, Calhoun, Bay, Eaton, Lenawee, Lapeer, Allegan, Midland, Van Buren, Montcalm, Clinton, Shiawassee, Barry, Ionia, St. Joseph, Isabella, Tuscola, Cass, Gratiot, Hillsdale, Newaygo, Mecosta, Branch, Sanilac, Lagrange, Huron, Mason, Steuben, Oceana, Clare, Osceola, Lake counties.

Flood watch issued

Because of excessive rainfall in the forecast, the National Weather Service in Detroit issued a flood watch for all of Southeast Michigan, with the flood watch in effect from 8 p.m. Tuesday through late Thursday night. 

"Wet pavement can turn roads into a slip and slide in seconds," said Adrienne Woodland, spokeswoman for AAA-The Auto Club Group. "Make sure your vehicle is ready for changing weather, and when the rain starts falling, adjust immediately. Slow down, give yourself space, and stay alert because conditions can turn bad fast." 

Watch vs warning 

The National Weather Service  means "be prepared." It is possible that the weather will reach severe levels during the time frame specified. 

A severe weather warning means "take action," that severe weather conditions have been reported by spotters or can be detected on radar. People are asked to take shelter indoors, away from windows. 

watch-vs-warning.jpg
Explanation of a severe weather watch and a severe weather warning when issued by the National Weather Service. CBS News Detroit

Tornado season 

Michigan saw one of its most-active tornado seasons on record during 2025, with 33 tornadoes confirmed in the state throughout the year. 

The first tornadoes of 2026 in Michigan happened on March 6, 2026. 

Taking shelter during a tornado 

The best place to take shelter during a tornado, according to the NWS is a room on the lowest level of your house that is away from windows. The recommended sites include a basement or storm cellar, hallway or interior room. 

tornado-safety-house-031026.png
Where to seek shelter at home should a tornado threaten the area. CBS News Detroit

Stay informed with CBS News Detroit 

Should circumstances warrant, the CBS News Detroit weather team will livetrack the storm. You can follow the reports on air, online, on our mobile app and on our social media accounts such as . 

If you wish to share photos or videos after a storm passes through, please join our Weather Watcher Network

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