BumpyRide

Map road roughness with your iPhone

BumpyRide turns a cycling commute into data. Your phone records vertical acceleration alongside GPS, detects hard brakes post-hoc, and lets you tap to log near-misses while you ride. Three public maps — pavement bumpiness, hard brakes, and close calls — aggregate across consenting riders at 20 ft resolution.

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.

When you finish a ride, the app sweeps the points for sustained decelerations and tags them as hard brakes. During the ride you can also tap Log Close Call to flag a near-miss on the spot — minimal interaction so it works one-handed.

Over many rides those signals accumulate into 20-foot grid cells. Useful for finding the smoother route to work, flagging streets for repair, mapping intersections that consistently force hard brakes, or simply understanding what your commute is actually like.

On your iPhone

Now available on the App Store. Free download for iPhone — record rides, see your personal bump map, and sync with your account here.

Download on the App Store
  • 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.

  • Hard-brake detection

    Post-ride sweep of GPS-derived deceleration plus horizontal user-acceleration, picking out sustained brakes above 2.5 m/s² (0.25 g) lasting 0.8 s or more. Rides re-run through the detector on app launch so legacy rides get backfilled.

  • Log Close Call

    One-handed button you can tap mid-ride to mark a near-miss in place. Five-second undo. No severity slider or notes — just id + time + location, intentionally minimal so the interaction stays safe.

  • 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, red dots for the ride's hard brakes, violet diamonds for any close calls you logged, 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 maps

    Anonymous, no account needed. Three layers on the same 20 ft cell grid — pavement bumpiness, hard brakes, and close calls — switchable via tabs. Each cell appears only after at least three distinct riders have contributed, so a single rider's data never publishes on its own. Only mounted-mode rides contribute (matching the iOS Bump Map's default filter). No timestamps, no routes, no per-user attribution. See the live maps →

  • 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 maps is off by default — you turn it on at /settings/privacy. Even when on, only aggregated cells leave your account: never your route, never your timestamps, never anything that traces back to you individually. The same threshold applies per-feature, so a single brake event or close call on a quiet corner is held back from the public map until at least three distinct riders have hit that cell. Pocket-mode rides stay in your personal view and never reach the public aggregate.

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.