I didn’t have to go far: from the Meatpacking District to the ferry stop at the eastern end of 34th Street. Less than three miles. On a standard pedal bike, Google Maps said it would take 20 minutes, but with an electric Citi Bike, it could be done in half that. A breezy crosstown ride during the evening rush.
The e-bike had 35 miles left of charge, although that didn’t account for the flat front tire I noticed upon taking off. After waddling it to a nearby dock, I grabbed another e-bike, but it turned out to have no juice. The clock was ticking, so I maneuvered the dead weight until I stumbled upon a station with multiple e-bikes: a rare evening sighting downtown. There, I swapped again and finally got a functional one. I made the ferry within minutes of departure. It only took three tries.
For the regular Citi Bike user, none of this is surprising. A station might be filled with electric bikes, all flashing red, the bike-share equivalent of ‘out of order.’ And a green light might not mean much; a dead battery, as I found out, or a broken seat.
These struggles underscore Citi Bike’s huge success. It celebrated its tenth anniversary this last May by breaking ridership records. It has drastically changed how scores of New Yorkers travel with over half of its riders coming from communities of color. All in all, bike-share has become one of the fastest, most affordable ways to navigate our congested streets.
But the surging demand has meant that Lyft, the rideshare company that operates Citi Bike, has had a tough time ensuring that its 30,000-strong fleet is, well … usable. It’s particularly aggravating for anyone who wants to ride the program’s limited stock of e-bikes, which include the new, pale gray models (I call them the ‘silver stallions’) and the battery-outfitted blue analogs. Why can’t Citi Bike keep its e-bikes running?
If you had asked my local Reddit forum — as I did — you might come away thinking teens are the reason. My neighbors are wholly convinced that high schoolers flying down Steinway Street in Astoria on electric Citi Bikes with a friend in the front basket are to blame — they’re playing rough with the inventory. “If you ask me, kids under 18 shouldn’t even be allowed on e-bikes,” one user wrote. (For what it’s worth, anyone 16 or older can ride a Citi Bike.) Reddit users also blamed teens for a recent trend of riders keying the QR code, so those lacking a rare key fob can’t take a bike out.
Sure, Citi Bike parkour is a thing, as anyone who follows @citibikeboyz knows. But the bikes were tested for this sort of intensity; as someone on Reddit said, the silver stallions were built “like brick shithouses.” Are teens really behind all of the malfunctioning bikes?
According to Lyft, vandalism only accounts for a small portion of the issues downing the fleet. Instead, it says it’s the system in place that’s struggling to keep up.
When Lyft acquired Motivate, the parent company of Citi Bike, for $250 million in 2018, the city mandated that its e-bikes could only compose 20 percent of the fleet to ensure that affordable rides were always available. (E-bikes cost 26 cents more a minute or 17 cents with an annual membership). The problem is that most people want to ride the 5,000-plus e-bikes — this year, e-bikes are being ridden 50 percent of the time, triple the rate of pedal bike rentals. That number is only increasing; the six highest e-bike ridership days ever have been since late June, a 54 percent jump from 2022, and a new record was set on July 20, with nearly 70,000 rides.
The new silvers now see up to 15 riders per day. But they were designed for about a third of that: A life-cycle assessment from Lyft last year showed that at five rides a day, the silvers can last five years. But at the current rate, they’ll last for just two years. Thus, parts meant to last the bikes’ lifespan are starting to fail one year in, which raises questions about their long-term durability.
Then there is the matter of how to keep the bike batteries charged. Every day, nearly 250 workers in vans zoom around the city (except Staten Island), to move Citi Bikes where they’re needed and swap batteries. But the heavy usage of the e-bikes means that batteries die every one to two days, especially the ones on older models, which only get 30 miles on a charge. (Silvers get 60.) When that happens, workers have to swap in a fresh battery and bring the dead ones to outer-borough depots for juice. There, Citi Bike takes additional steps for safety, like not charging too many at once, to prevent fires.
With other maintenance issues, if a rider reports one, mechanics try to address it at the dock — they can touch about 30 bikes a day that way. But if a warehouse inspection is needed, that drops to ten. Travel, a spokesperson said, is a major time suck; as post-pandemic traffic increases and the network reaches deeper into the outer boroughs, swaps and “complicated repairs” involving software or vandalism are taking longer to pull off.
For years, Citi Bike reps have publicly floated the idea of charging e-bikes directly at docks, like Paris’ Vélib’ system. It estimates that electrifying some 20 percent of stations would reduce battery swaps by 90 percent. But hooking up the stations to energy grids with enough electricity to power multiple bikes at once is complex, requiring city support. Any electrified Citi Bike station would need an entirely new hookup, unlike, for example, the LinkNYC kiosks, which connect to the power that’s feeding telephone booths. So far, talks with NYCDOT and utility companies have made little headway.
But these operational hurdles can hurt the system’s image. Having bikes that are reliable, well-maintained, and distributed is integral to bike-share’s success, said Alex Engel, the director of communications at the National Association of City Transportation Officials, which shares best bike-share practices nationwide. Engel worked at the city’s Department of Transportation, which regulates Citi Bike, when the first fleet launched. He saw firsthand how a small team worked together with Motivate to get what was then a seemingly impossible pilot off the ground. And that may need to happen again. “You want to ensure that the city and the operator are working hand-in-hand,” he told me.
And recently, Lyft has shown signs of financial trouble. In April, the company laid off 26 percent of its workforce, or almost 1,100 people. The month before, it left Minneapolis’s bike-share market. And on Monday, The Wall Street Journal reported that the company was“exploring strategic alternatives for its bikes division.” Options on the table include selling its fleet or finding a new investor. The company has maintained that it’s committedto the bike-share program, though — according to the source, Lyft is hoping to keep the bikes on its app “so riders don’t experience significant changes.”
Its recent hiring wave also signals that the company is trying to meet the growing demand for its e-bikes. In May, the company brought on 200 additional mechanics, bringing the total to a seasonal high of 600. The company also increased battery swapping labor by 20 percent in June, and it’s set to increase again this month with 24/7 shifts at all maintenance depots when road traffic is lighter. Up to 3,000 new e-bikes are also rolling out this summer as part of an expansion into neighborhoods like Flatbush. (Lyft has not announced plans past 2024.)
Those efforts produced more available e-bikes in June, the company says. The QR code issues have also been halved, a spokesperson said, with measures like displaying the bike number on the console, which allows people to manually take out bikes on the app. Citi Bike is also working with local nonprofits to create a hiring pipeline to address the shortage of skilled mechanics.
But are the staffing numbers enough? Anecdotally, it’s a mixed bag. One recent morning, my local station in Queens had seven silvers available — a rarity. But as I rode, I spotted countless red lights flashing at others. An impromptu Twitter poll and texts to avid riders yielded mostly positive responses; it seems like the outer boroughs are okay, while Manhattan is still a sore spot. Many riders also said they came across too many broken bikes.
For now, maintaining the Citi Bike system remains a Herculean logistics game involving an army of hundreds scouring the streets of New York City 24/7 to visit some 1,800 stations.Until alternatives arise, that’s the system we’ve got. I guess we’ll have to take it.
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]