Map road roughness with your iPhone
BumpyRide turns a cycling commute into data. Your phone records vertical acceleration alongside GPS, your rides build into a heat map at 20 ft resolution, and consenting riders contribute to a public map of pavement quality across the city.
How it works
As you ride, your iPhone samples accelerometer data at 50 Hz and projects it onto gravity — so the math works whether the phone is in your jersey pocket, your handlebar mount, or anywhere in between. The vertical component, windowed to a one-second RMS, becomes a bumpiness score in g. Every few feet of road gets one.
Over many rides those samples accumulate into 20-foot grid cells. Useful for finding the smoother route to work, flagging streets for repair, or simply understanding what your commute is actually like.
On your iPhone
The iOS app is in private preview. Watch the repository for release news. Sync, accounts, and the public map on this site are open today.
- Live recording
GPS path plus 50 Hz accelerometer, sampled every 10 ft of travel. Vertical-only filtering via gravity projection so pedaling and braking don't read as bumps.
- Pocket Mode
Optional 3 Hz Butterworth high-pass that cancels body cadence when the phone rides on you instead of the frame. Each ride is tagged with its sensing mode for later analysis.
- Seismograph + bumpiness readout
Real-time vertical-acceleration waveform with a one-second RMS score, alongside a color-coded route polyline that turns red (then purple) as the pavement gets worse.
- Saved rides
Editable titles, scrubbable playback with the chart and zoom, trim and split, plus export-to-Photos for a clean shareable image of the route.
- Bump map tab
Aggregates everything you've recorded into a 20 ft grid, rendered as colored cells with a purple-glow halo so sparse data stays visible at any zoom level.
- Background recording
Keeps recording when the screen locks or the app is in the background, with the iOS location indicator on for the whole ride so you always know it's working.
On the web — bumpyride.me
- Mirror of your rides
Every ride synced from your phone shows up here with the same colored route, a bumpiness-over-time chart, and inline title editing. Web edits and iOS edits both go through the same schema, so renames stay in sync.
- Your bump map
Same 20 ft grid as the phone, same purple-glow halo, but in your browser. Built from a per-user aggregate so it only ever shows your own rides.
- Public aggregated map
Anonymous, no account needed. Cells appear only after they have at least 3 samples — so a single rider's solo route never publishes on its own. No timestamps, no routes, no per-user attribution. See the live map →
- iOS sync
Two pairing paths: paste an API token from /settings/tokens, or tap Sign in with bumpyride.me in the iOS app for a one-tap browser round-trip that mints a token automatically.
- Theme
Light, dark, or follow your OS — including a matching dark basemap so the public map fits whichever theme you're in.
Privacy by default
Your rides are yours. Contributing to the public map is off by default — you turn it on at /settings/privacy. Even when on, only the aggregated cells leave your account: never your route, never your timestamps, never anything that traces back to you individually. Toggling sharing off subtracts your contributions; we maintain the invariant public cells = sum of points from opted-in users at all times.
API tokens for the iOS app are hashed at rest with sha256; the plaintext is shown exactly once at creation and never retrievable afterwards. Revoke any token at any time from /settings/tokens.