Esc

bikemap.nyc

About

bikemap.nyc is a visualization of the entire history of Citi Bike, the largest bike-sharing system in the US.

Each moving arrow represents a real bike ride, based on anonymized historical system data published by Lyft. The animation plays at 150x normal speed and covers 200M+ trips in New York City since 2013.

If you have ever used Citi Bike, your ride is likely here. Use your Citi Bike receipt to search for your ride.


Limitations

The data only contains the start and end station for each trip, but does not contain the exact route. Thus, route geometries are computed using the shortest path from OSRM.

This means that the calculated routes are directionally correct but inexact. Trips that start and end at the same station are filtered out since the route geometry is ambiguous.


Technical Details

  • No backend — Processed data is stored in Apache Parquet files and queried by DuckDB WASM directly in the browser.
  • GPU rendering — Deck.gl is cracked and makes it possible to render thousands of concurrent bikes with the GPU.
  • Worker threads — Heavy precomputation is done on Web Workers to offload CPU load from the JS main thread.
  • Continuous streaming — Trips load incrementally and invisibly in 30-minute batches.

Why

There is no economic value for this project except that I think it is cool and beautiful :)

I'm open-sourcing the entire data processing pipeline and rendering code at freeman-jiang/bikemap.nyc.

I hope to keep this project running indefinitely, but I'm paying for Mapbox and hosting costs out of pocket. If you'd like to support me, please consider buying me a coffee!


freeman-jiang·@freemanjiangg