91³Ô¹ÏÍø

Watch CBS News

NYC Mayor Zohran Mamdani has 48% approval citywide as he approaches 100 days in office, poll says

New York City Mayor Zohran Mamdani is approaching his 100th day in office, and almost half of New Yorkers say they approve of his job performance, according to a new poll.

A published Wednesday revealed 48% of city residents think the mayor is doing a good job. Meanwhile, 30% disapprove, and 23% are unsure how to rate his performance.

"Mamdani is also perceived as being likeable, hard working, caring, a good leader, representing all New York City residents, and a unifying force in the Big Apple," researchers wrote.

The poll notes that Mamdani is underperforming against his predecessor, Eric Adams. The former mayor had 61% of residents approving of his performance in the months leading up to his first 100 days. 

Residents have positive perceptions about Mamdani

A majority of adults, at 55%, have either a very favorable or somewhat favorable view, and 33% have either a somewhat unfavorable or very unfavorable opinion. 

Most adults also say things in the city are moving in the right direction.  

The majority of Democrats, at 63%, approve of Mamdani, while the same percentage of Republicans disapprove of him. Among those not enrolled in a party, 41% disapprove, 27% approve and 31% are unsure. 

"He is also perceived by many to be fulfilling campaign promises," the poll states. "When it comes to whether city residents trust Mamdani to make decisions that are in the best interest of the five boroughs, a majority of adults have that confidence in him."

Most residents also think he is changing the city for the better. 

Approval by borough

The mayor does best in Brooklyn and Manhattan, where majorities approve of him. A little less than half of the residents in the Bronx and Queens approve of his performance. In Staten Island, 57% disapprove of Mamdani.

The mayor recently came under scrutiny when his rollout of the free 2-K program didn't include the borough. 

In February, he was also criticized after Staten Island residents waited days for snow plows to clear parts of the community after a historic blizzard. 

The poll said 65% of residents citywide approved of how Mamdani handled the snowstorms this winter. In Staten Island, only 30% of residents approved. 

Mamdani collaborates well with Gov. Hochul, President Trump

A majority of 59% also think he has the "right balance" of collaboration with President Trump. The two had a meeting in the Oval Office in February.

He said he proposed working with Mr. Trump on a housing project and called the meeting productive.  

On the state level, 60% of residents think the mayor has a good working relationship with Gov. Kathy Hochul. The two often collaborate on initiatives, with free child care being a main one. Hochul said the state will fund the 2-K program for the first two years. She has said she wants to help Mamdani implement universal child care across the five boroughs. 

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