91³Ô¹ÏÍø

Watch CBS News

City Council committee backs Mayor Brandon Johnson's plan for Chicago's first taxi fare hike in 10 years

After a one-month delay, the City Council is moving forward with plans to increase taxi fares in Chicago for the first time since 2016.

By a voice vote on Monday, the Committee on License and Consumer Protection advanced a measure proposed by Mayor Brandon Johnson's administration to increase taxi fares by approximately 20% to help the struggling taxicab industry, which has struggled to compete with ridesharing services like Uber and Lyft, which face far fewer regulations from the city.

The committee originally was scheduled to discuss the fare hike last month, but that vote was delayed.   

Business Affairs and Consumer Protection Commissioner Ivan Capifali said the fare hike would help cab drivers offset costs for gas and maintenance, which have risen steadily over the past decade, while their fares have remain unchanged.

The proposal would not increase the so-called "flag pull" of $3.25 for the first 1/9th of a mile of a cab trip, but the price for each additional 1/9th of a mile would go up from 25 cents to 31 cents.

Another 25 cents would be added for every 45 seconds of the trip, up from 20 cents for every 36 seconds.

The fee for cleaning up vomit or other messes left behind by passengers would go up from $50 to $100.

A $2.50 rush hour fee would be added for rides between 3:30 p.m. and 7 p.m., and a $1 overnight fee would be charged for rides between 8 p.m. and 6 a.m. 

The flat charge for a ride from cab stands at O'Hare International Airport to downtown (defined as an area bounded by Cermak Road, Fullerton Avenue, Ashland Avenue, and Lake Michigan) or to McCormick Place would go from $24 to $30 per person. The charge for a ride from cab stands at Midway International Airport to downtown or to McCormick Place would go from $18 to $22 per person. The cost of a ride between the two airports would go from $37 to $45 per person.

The city would also increase the fine for a cab driver's failure to activate the flag at the start of a trip to $1000. Currently, that fine ranges from $100 to $1,000.

Ald. Brendan Reilly (42nd), who was the only member of the License Committee to oppose the fare hike, said some cab drivers have resorted to illegally charging passengers a flat fee for riding in their taxis, rather than pulling the flag to calculate the cost of the trip based on time and distance. Taxis in Chicago can only charge flat fees for trips to or from the city's airports or to and from McCormick Place.

The full City Council could hold a final vote on the taxi fare hike on Wednesday.

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