91³Ô¹ÏÍø

Watch CBS News

Mayor touts Baltimore as a changed city despite Trump's criticisms: "The greatest comeback story in the country"

Baltimore — Walk a few blocks in Baltimore with Mayor Brandon Scott, and there's no missing the problem: The city has thousands of broken-down, boarded-up row houses, the result of a long civic spiral, with people and businesses leaving and blight and crime moving in.

"When it looks like someone doesn't care, right, people who want to do bad things are going to come," Scott told CBS News when asked about the relationship between building vacancies and crime.

Scott, who has served as mayor since 2020, counters, though, that despite the view on the ground in certain areas, Baltimore is a changed city that is showing major improvement.

Since 2019, when Baltimore's murder rate hit an all-time high, according to city data — and had one of the highest homicide rates in the nation — something has indeed changed. The number of vacant buildings is down 25%, the population grew in 2024, and murders have hit a nearly 50-year low, per city data.

"It's a 15-year, $3 billion strategy of how we're going to deal with vacants in Baltimore, block by block," Scott said.

President Trump, however, has held onto a far grimmer picture, declining Democratic Maryland Gov. Wes Moore's invitation last year to walk Baltimore's streets.

"I'm not walking in Baltimore right now," Mr. Trump said in August of 2025. "Baltimore is a hellhole."

The president even floated the idea of sending in the National Guard, as he has elsewhere. In his State of the Union address Tuesday night, Mr. Trump took credit for the reduction in the murder rate nationwide.

"Baltimore's responsible for Baltimore," Scott said when asked about Mr. Trump's remarks. "We have a strategy."

That strategy includes targeting those most likely to commit gun violence.

Scott also showed CBS News areas that are seeing new housing construction. And as blighted buildings come down, piles of illegally dumped trash are getting picked up. In one case, the pickup occurred just minutes after the mayor spotted the trash while walking with a CBS News crew.  

"They're coming to pick it up right now," Scott told CBS News.

It's all part of a reversal the mayor hopes means an update to his city's reputation.

"We are doing all of this together because Baltimoreans believe that we are the greatest comeback story in the country," Scott said. 

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