91³Ô¹ÏÍø

Watch CBS News

Tourism on the rise, crime down in downtown Baltimore, State of Downtown report shows

Tourism is on the rise as crime declines in downtown Baltimore, according to the Downtown Partnership of Baltimore's that was released on Thursday.

"The data tells a story of real and measurable progress," said Shelonda Stokes, the President of Downtown Partnership of Baltimore. "Downtown Baltimore is not waiting for its next renaissance; it's in the making through increased public and private investment, a growing residential community, steady tourism, and improved quality of life. While challenges remain, we have a clear roadmap as detailed in the  and are fully confident that we will continue the momentum underway through shared focus and relentless execution of the priorities we continue to pursue."

Tourism and economic development

The report shows the city welcomed 28.5 million visitors, generating a $4.3 billion in visitor spending, which is a 7.5% increase year over year. The CIAA tournaments have generated nearly $110 million in economic impact since coming to Baltimore in 2022.

"Downtown is the place for entertainment, culture, activity," Stokes said.

Stokes notes that multiple projects down the line will help to transform downtown Baltimore.

"We just finished signing a 10-year ," she said. "Within 10 years, you will not know this place. Harborplace is on the docket. UMB's project. We're connecting the dots in a way that you think you know what you're seeing, just wait."

Baltimore Mayor Brandon Scott said at Thursday's State of Downtown Breakfast that city leaders continue to build on this success through several current and future improvement projects.

Mayor Scott also noted the passing of the "Payment in Lieu of Taxes" bill, which is a tax break program if an economic development project in the Downtown RISE District enters a payment instead of taxes agreement, will benefit Downtown Baltimore. Maryland Gov. Wes Moore signed the bill earlier this week.

"We will negotiate opportunities to help you and your business to develop properties in a way that will help all of us and save you some money," Mayor Scott said.

Crime decline in downtown Baltimore

The reports states crime is down 14% year-over-year.

Homicides are down 47%. Larceny dropped 4% and auto theft fell 32%.

Downtown challenges

The downtown report notes hotel occupancy dropped roughly 3% compared to 2024.

Office and retail occupancy slightly declined too.

Within Downtown Baltimore's one-mile radius, the population dropped from more than 41,500  in 2024 to just under 41,000 in 2025.

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