Bike maintenance log
A wear and service log for your bikes: parts with install date and distance, rides typed in or imported from GPX, FIT or CSV, reminders by distance and time, chain-stretch checks against the 0.5% / 0.75% rule, service history and costs — kept in your browser, with JSON backup.
Added
How to use it
Add your bikes (with the odometer reading you start from), then their parts — chain, cassette, chainrings, tyres, brake pads, rotors, cables, bar tape, tubeless sealant, brake fluid, a yearly service — each with the date it was fitted and any distance it already had. Log rides as you go, or import them, and every part’s distance follows from the rides on its bike since its install date.
-
Overview — the parts that need attention across all bikes, then each bike’s odometer, costs and parts with a bar showing how much of its reminder interval is used (amber from 85%, red when due). Replaced retires a part (keeping its distance and cost) and fits a new one; Log service records work and can restart the reminder (sealant topped up, cables done).
-
Chains are judged by measurement, not distance: the reminder is to check every 1000 km, and each check records the reading. Park Tool’s wear limits are 0.5% for 11- and 12-speed chains (or with aluminium or titanium cogs) and 0.75% for 10-speed and fewer; replacing on time usually saves the cassette and chainrings. Without a checker, measure 12 links: a new chain is 304.8 mm (12 in) pin to pin, 306.3 mm is 0.5% and 307.1 mm is 0.75%.
-
Rides — add one by hand, or import files: GPX tracks (the distance is summed point to point along each track segment with the haversine formula), FIT files from a bike computer or watch (the session’s total distance), or a CSV with a date column and a distance column — the
activities.csvin a Strava bulk export works as it is. The distance unit is taken from the header (Distance (mi),metres…) or else your chosen unit. Rides already logged on the same day with the same distance are unticked. -
Service & costs — a history of work done, costs per bike and per 1000 km, and every part you have replaced with the distance it lasted.
-
Bikes & data — rename or remove bikes, and Export JSON / Import JSON to back up or move your log.
The default intervals are rules of thumb (rear tyre 4000 km, front 6000, cassette 15,000, chainrings 25,000, pads inspected every 2000 km or six months, sealant every 90 days, cables and a full service yearly or every 5000 km). Ride conditions change them a lot — edit each part’s interval to suit. Load example data fills in two example bikes to look around with.
Limits
-
The log is stored only in this browser (localStorage). Clearing site data, private windows, or another browser or device start empty: export a backup now and then. It is never sent anywhere and never goes into a link.
-
Imported GPX distance is the straight-line sum between points; with sparse points it reads a little short of a bike computer’s wheel-sensor distance. FIT import reads only the summary distance and date. Elevation is not used.
-
A part counts every ride on its bike from its install date; swap a part between bikes with Replaced on one and Add a part (with its distance so far) on the other.
Related: gearing calculator, tyre pressure, spoke length, power and climbing.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.