Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

2025 Municipal Election Results: Oakland County

5 November 2025 at 00:20

In Oakland County, we’re tracking key mayoral races, as well as a proposal for a Novi school bond and a Troy millage.  We’ll provide updates as votes are counted below.

Listed alphabetically.

Last updated: Nov. 4, 2025 at 11:10 p.m. ET

Precincts reporting: 234/284

Clawson

Farmington Hills

Hazel Park

Madison Heights

Pontiac

Royal Oak

Southfield

Walled Lake

Also on the ballot 

Novi Community School District bond proposal ballot language: “Shall Novi Community School District borrow the sum of not to exceed $425,000,000?”

Troy bond proposal ballot language: “Shall the City of Troy borrow the principal amount of not to exceed $137,000,000?”

More election coverage

The post 2025 Municipal Election Results: Oakland County appeared first on WDET 101.9 FM.

2025 Municipal Election Results: Macomb County

5 November 2025 at 00:20

In Macomb County, we’re tracking key mayoral races and proposed charter amendment that would allow the mayor to make interim appointments in Warren. We’ll provide updates as votes are counted below.

Listed alphabetically.

Last updated: Nov. 5, 2025 at 9:01 a.m. ET

Precincts reporting: 153/153

Mount Clemons

New Baltimore

 

Sterling Heights

Also on the ballot 

If this proposal passes, Warren’s mayor would be able to make appointments or extend appointments of existing city staff for up to six months with city council approval. 

More election coverage

The post 2025 Municipal Election Results: Macomb County appeared first on WDET 101.9 FM.

2025 Municipal Election Results: Wayne County

5 November 2025 at 00:20

In Wayne County, we’re tracking mayoral races and a Dearborn proposal to create wards to elect city council members from certain district boundaries, which may provide more representation. We’ll provide updates as votes are counted below.

Listed alphabetically. 

Last updated: Nov. 5, 2025 at 10:02 a.m. ET

Precincts reporting: 587/587

Dearborn


Dearborn Prop 1: “Proposed charter amendments to provide for a wards system of government for the legislative body”

Dearborn Heights

Detroit 

More Detroit election results »

Flat Rock

Grosse Pointe

Grosse Pointe Farms

HamtramckTaylor

More election coverage

The post 2025 Municipal Election Results: Wayne County appeared first on WDET 101.9 FM.

2025 Municipal Election Results: Detroit

5 November 2025 at 00:19

Detroiters are voting for mayor, city council, city council at-large seats, city clerk and board of police commissioners.

Many eyes are on the Detroit mayoral race after Mayor Mike Duggan announced he would not be seeking reelection. He has since launched an independent bid for governor.

Last updated: Nov. 5, 2025 at 10:03 a.m. ET

Precincts reporting: 430/430

Other Detroit races

Board of Police Commissioners

The Detroit Board of Police Commissioners is an 11-member civilian oversight organization broken into 7 districts. Most candidates are running unopposed in their district or did not make the primary.

City Clerk

Incumbent Janice Winfrey is running unopposed in the November general election.

Community Advisory Councils

Only three of Detroit’s seven City Council districts have Community Advisory Councils: District 4, District 5 and District 7. No candidates met the deadline to submit signatures to get on the Aug. 5 primary ballot.

Trusted, accurate, up-to-date.

WDET strives to make our journalism accessible to everyone. As a public media institution, we maintain our journalistic integrity through independent support from readers like you. If you value WDET as your source of news, music and conversation, please make a gift today.

Donate today »

More election coverage

The post 2025 Municipal Election Results: Detroit appeared first on WDET 101.9 FM.

Support WDET: the fall fundraiser is here

11 September 2025 at 15:45

WDET’s on-air fundraising starts Thursday, September 11.

After a tough summer for public media, we’re working hard to close the gap in our budget and keep your trusted news, music, and conversation strong.

Listener support has already helped us make progress, and now this fundraiser will play a critical role in reaching our fiscal year-end goal.

Now more than ever, members matter. You can make a difference with a one-time gift or by becoming a monthly sustaining member.

Join us on air and streaming as we come together to keep WDET strong.

Perks of being a WDET member

WDET members enjoy benefits throughout the year, including invitations to member-only events, early ticket access, special discounts, and opportunities to take part in unique experiences.

As a way of saying “thank you,” members can choose from exclusive WDET swag. Each time you make a qualifying gift, you’ll have the option to select a thank-you gift

Be sure to check out the 101.9 Collection, which features the Everyday Cuff Beanie, Team Scarf, Burgundy Cap, and Zip Tote.

During this fall fundraiser, new members who make their very first gift of $10.19 per month or more will receive the WDET Everyday Beanie from our 101.9 Collection.

The WDET Collection

Your donation could unlock exclusive prizes

During the fall fundraiser, donations made during select shows and times are automatically entered into special prize drawings. Tune in, check your email, follow @wdetdetroit on Instagram, or visit wdet.org to see when your gift could put you in the running.

  • Majestic Golden Tickets
  • Found Sound package featuring hand-picked albums from Jon Moshier
  • $100 gift card to Bowlero
  • Bonnie Raitt tickets
  • Tickets to see Raphael Saadiq at the Detroit Opera House on 10.11.25
  • And so much more!

Thank you to our sponsors!

The post Support WDET: the fall fundraiser is here appeared first on WDET 101.9 FM.

The Metro Events Guide: Tacos, tunes and the Back-to-School JAM! this weekend

21 August 2025 at 17:36

Looking for something fun to do this week? Metro Detroit is packed with free festivals, family activities, and cultural events — from art fairs and workshops to live music and delicious food. 

Drop-In Workshop: Doodle Art

📍Detroit Institute of Arts

🗓 Wednesday 8/20 – Sunday 8/24

🎟 Free with general admission

*General museum admission is FREE for residents of Wayne, Oakland, and Macomb counties.

Many people doodle as a fun, spontaneous way to express ideas. Grab some drawing materials and see where your creativity takes you! Event time varies; check the website for details. 

Novi Taco Fest

📍44275 W 12 Mile Rd d134, Novi, MI 48377

🗓 Friday 8/22, Saturday 8/23 and Sunday 8/24

🎟 Tickets start at $7 online. Military free with proper ID.

Get ready for a weekend of flavor and fun at the Novi Taco Fest! Enjoy authentic Mexican-American dishes, sip refreshing margaritas, and celebrate Hispanic culture with live music and entertainment all around.

Back-to-School JAM!

📍Motown Museum on Rocket Plaza

🗓 Saturday 8/23

🎟 Free

The Motown Museum and Enjoy Detroit are hosting a Back to School Jam with free school supplies, live performances by local artists and Lyric Project singer-songwriters, giveaways, and family fun. Supplies are limited, so come early to enjoy the music, treats, and positive vibes to kick off the school year.

SIP and Beyond: 2025 Summer Alumni Performance

📍Detroit Public Theatre, 3960 3rd Ave, Detroit, MI 48201

🗓 Saturday 8/23 – Sunday 8/24

🎟 Free with RSVP.

This weekend, celebrate the powerful work of Shakespeare in Prison at the Alumni Performance at Detroit Public Theatre. Experience stories of resilience, creativity, and community as former ensemble members share their voices on stage.

Hazel Park Art Fair

📍Green Acres Park – Hazel Park, MI

🗓 Saturday 8/23 and Sunday 8/24

🎟 Free

The Hazel Park Art Fair is back! Free and family-friendly in Green Acres Park with local art, live performances, tasty eats, and a craft beer tent. Don’t miss this celebration of creativity in Hazel Park!

The post The Metro Events Guide: Tacos, tunes and the Back-to-School JAM! this weekend appeared first on WDET 101.9 FM.

Detroit voters narrow the field for November election

6 August 2025 at 01:53

Detroiters cast their ballots during early voting and on August 5 to choose which candidates will move on to the general election in November. The primary results help shape the races for mayor, City Council, and other key local offices.

100% PRECINCTS REPORTING 
Last updated Aug. 6 at 8:52 a.m. 

Detroit Mayoral Race

Primary results (100% precincts reporting)

The top two vote-getters will advance to the general election in November.

No Data Found

` } return seriesName } }, tooltip: { enabled: 'yes', theme: 'light', shared: '' === "yes", intersect:!('' === "yes"), style: { fontSize: '12px', fontFamily: 'Poppins' }, y:{ } }, responsive: [{ breakpoint: 1024, options: { chart: { height: parseInt('350') }, } }, { breakpoint: 674, options: { chart: { height: parseInt('350') }, } } ] }; if('1'){ columnOptions.tooltip.y.formatter = function(val){ if(''){ let decimal = parseInt('0') || 0; if(""){ val = graphinNumberWithCommas(val,',',decimal) } else if("" && typeof graphinaAbbrNum !== "undefined"){ val = graphinaAbbrNum(val , parseInt("") || 0 ); }else{ val = parseFloat(val).toFixed(decimal) } return '' + val + ''; } return val; } } if ("" === "yes") { columnOptions.yaxis.labels.formatter = function (val) { if('1'){ val = '' + val + ''; if(val){ val = val.split(',') } return val; } let stackCondition = !('') if(stackCondition ){ let decimal = parseInt('0') || 0; if(""){ val = graphinNumberWithCommas(val,',',decimal) } else if("" && typeof graphinaAbbrNum !== "undefined"){ val = graphinaAbbrNum(val , parseInt("") || 0 ); }else{ val = parseFloat(val).toFixed(decimal) } } return '' + val + ''; } } if("1"){ columnOptions.yaxis.tickAmount = parseInt("6"); columnOptions.dataLabels.formatter = function (val) { if(Number.isNaN(val)){ return ''; } if(""){ val = graphinNumberWithCommas(val,',') } else if("" && typeof graphinaAbbrNum !== "undefined"){ val = graphinaAbbrNum(val , parseInt("") || 0 ); } return '' + val + ''; }; }else{ columnOptions.dataLabels.formatter = function (val) { if(Number.isNaN(val)){ return val; } val = parseFloat(val).toFixed(parseInt("0") || 0 ) ; if(""){ val = graphinNumberWithCommas(val,',') } val = '' + val + ''; return val; }; } if ("" ) { columnOptions.tooltip['enabledOnSeries'] = []; } if ("") { columnOptions['annotations'] = { yaxis: [ { y: 0, strokeDashArray: parseInt("0"), borderColor: '#000000' } ] }; } if("1"){ let style ={ color:'#000000', fontSize: '12px', fontFamily: 'Poppins', fontWeight: '', } let title = ''; let xaxisYoffset ='bottom' === 'top' ? -95 : 0; if(typeof axisTitle !== "undefined"){ axisTitle(columnOptions, 'xaxis' ,title, style ,xaxisYoffset); } } if(""){ let style ={ color:'', colors:'#000000', fontSize: '12px', fontFamily: 'Poppins', fontWeight: '', } let title = ''; if(typeof axisTitle !== "undefined"){ axisTitle(columnOptions, 'yaxis' ,title, style ); } } if(''){ columnOptions.xaxis.tickAmount = parseInt("6") || 6; columnOptions.xaxis.min = parseFloat('0') || 0; columnOptions.xaxis.max = parseFloat('0') || 200; } if(''){ columnOptions.yaxis.tickAmount = parseInt("6") || 6; columnOptions.yaxis.min = parseFloat('0') || 0; columnOptions.yaxis.max = parseFloat('0') || 200; } if(""){ let style = { color:'', colors:'#000000', fontSize: '12px', fontFamily: 'Poppins', fontWeight: '', } columnOptions['yaxis'] = [columnOptions.yaxis] let columnYaxisTemp ={ opposite: '1', labels: { show: '', formatter: function (val) { if("" ){ val = graphinNumberWithCommas(val,',') } return '' + val + '' }, style }, tickAmount: parseInt(''), title: { text: '', style } } if(''){ columnYaxisTemp.tickAmount = parseInt('') || 6; columnYaxisTemp.min = parseFloat('0') || 0; columnYaxisTemp.max = parseFloat('0') || 200; } columnOptions.yaxis.push(columnYaxisTemp) } if (typeof initNowGraphina !== "undefined") { initNowGraphina( myElement, { ele: document.querySelector(".column-chart-78e2beb"), options: columnOptions, series: [{name: '', data: []}], animation: true, setting_date:{"iq_column_chart_filter_enable":null,"iq_column_interval_data_refresh":null,"iq_column_can_chart_reload_ajax":null} }, '78e2beb' ); } if (window.ajaxIntervalGraphina_78e2beb !== undefined) { clearInterval(window.ajaxIntervalGraphina_78e2beb) }

Detroit City Council

Detroit City Council at-large - Primary results (100% precincts reporting)

The top four vote-getters will advance to the general election in November.

No Data Found

` } return seriesName } }, tooltip: { enabled: '', theme: '', shared: '' === "yes", intersect:!('' === "yes"), style: { fontSize: '12px', fontFamily: 'Poppins' }, y:{ } }, responsive: [{ breakpoint: 1024, options: { chart: { height: parseInt('350') }, } }, { breakpoint: 674, options: { chart: { height: parseInt('350') }, } } ] }; if('1'){ columnOptions.tooltip.y.formatter = function(val){ if(''){ let decimal = parseInt('0') || 0; if(""){ val = graphinNumberWithCommas(val,',',decimal) } else if("" && typeof graphinaAbbrNum !== "undefined"){ val = graphinaAbbrNum(val , parseInt("") || 0 ); }else{ val = parseFloat(val).toFixed(decimal) } return '' + val + ''; } return val; } } if ("" === "yes") { columnOptions.yaxis.labels.formatter = function (val) { if('1'){ val = '' + val + ''; if(val){ val = val.split(',') } return val; } let stackCondition = !('') if(stackCondition ){ let decimal = parseInt('0') || 0; if(""){ val = graphinNumberWithCommas(val,',',decimal) } else if("" && typeof graphinaAbbrNum !== "undefined"){ val = graphinaAbbrNum(val , parseInt("") || 0 ); }else{ val = parseFloat(val).toFixed(decimal) } } return '' + val + ''; } } if("1"){ columnOptions.yaxis.tickAmount = parseInt("6"); columnOptions.dataLabels.formatter = function (val) { if(Number.isNaN(val)){ return ''; } if(""){ val = graphinNumberWithCommas(val,',') } else if("" && typeof graphinaAbbrNum !== "undefined"){ val = graphinaAbbrNum(val , parseInt("") || 0 ); } return '' + val + ''; }; }else{ columnOptions.dataLabels.formatter = function (val) { if(Number.isNaN(val)){ return val; } val = parseFloat(val).toFixed(parseInt("0") || 0 ) ; if(""){ val = graphinNumberWithCommas(val,',') } val = '' + val + ''; return val; }; } if ("" ) { columnOptions.tooltip['enabledOnSeries'] = []; } if ("") { columnOptions['annotations'] = { yaxis: [ { y: 0, strokeDashArray: parseInt("0"), borderColor: '#000000' } ] }; } if(""){ let style ={ color:'#000000', fontSize: '12px', fontFamily: 'Poppins', fontWeight: '', } let title = ''; let xaxisYoffset ='' === 'top' ? -95 : 0; if(typeof axisTitle !== "undefined"){ axisTitle(columnOptions, 'xaxis' ,title, style ,xaxisYoffset); } } if(""){ let style ={ color:'', colors:'#000000', fontSize: '12px', fontFamily: 'Poppins', fontWeight: '', } let title = ''; if(typeof axisTitle !== "undefined"){ axisTitle(columnOptions, 'yaxis' ,title, style ); } } if(''){ columnOptions.xaxis.tickAmount = parseInt("") || 6; columnOptions.xaxis.min = parseFloat('0') || 0; columnOptions.xaxis.max = parseFloat('0') || 200; } if(''){ columnOptions.yaxis.tickAmount = parseInt("6") || 6; columnOptions.yaxis.min = parseFloat('0') || 0; columnOptions.yaxis.max = parseFloat('0') || 200; } if(""){ let style = { color:'', colors:'#000000', fontSize: '12px', fontFamily: 'Poppins', fontWeight: '', } columnOptions['yaxis'] = [columnOptions.yaxis] let columnYaxisTemp ={ opposite: '1', labels: { show: '', formatter: function (val) { if("" ){ val = graphinNumberWithCommas(val,',') } return '' + val + '' }, style }, tickAmount: parseInt(''), title: { text: '', style } } if(''){ columnYaxisTemp.tickAmount = parseInt('') || 6; columnYaxisTemp.min = parseFloat('0') || 0; columnYaxisTemp.max = parseFloat('0') || 200; } columnOptions.yaxis.push(columnYaxisTemp) } if (typeof initNowGraphina !== "undefined") { initNowGraphina( myElement, { ele: document.querySelector(".column-chart-370a50b"), options: columnOptions, series: [{name: '', data: []}], animation: true, setting_date:{"iq_column_chart_filter_enable":null,"iq_column_interval_data_refresh":null,"iq_column_can_chart_reload_ajax":null} }, '370a50b' ); } if (window.ajaxIntervalGraphina_370a50b !== undefined) { clearInterval(window.ajaxIntervalGraphina_370a50b) }

❌
❌