Reference
The detail that used to sit on the front page: what gets measured from each view, how the bike type changes the targets, and what is doing the tracking.
Any bike
What gets measured is your body, not the bike. Pick what you ride — road, MTB, gravel, TT, hybrid or e-bike — and the target angles shift to suit it.
The measurements
Measured at the bottom of every pedal stroke and summarised by median, so one blurry frame cannot skew the result. Graded against the Holmes method and dynamic-fit research.
The side view is the most accurate, especially for setting saddle height. The reach-related angles are still useful, but they need more careful interpretation because they come from 2D video.
| What it measures | Target | Reliability |
|---|---|---|
| Knee at bottom of strokeSaddle height. Too bent = saddle low; nearly straight = saddle high. You get a specific mm adjustment. | 30–40° | High |
| Torso from horizontalHow aggressive your position is — front-end height and stack. | 40–50° | Medium |
| Elbow bendLocked-out vs. softened arms — comfort and shock absorption. | 15–30° | Medium |
| Shoulder angle (reach)How stretched-out you are to the bars. Treated cautiously — don't swap a stem on one clip. | 80–95° | Soft |
| Hip at top of strokeInformational reference — depends heavily on flexibility and reach, so it's shown but not graded. | 85–110° | Info |
Treat the front and rear readings as extra hints. For adjustments that really matter, the side view is still the one to rely on.
| What it measures | Tells you | Reliability |
|---|---|---|
| Knee tracking (FPPA)Frontal-plane projection angle — whether your knee dives in or bows out through the stroke. | Cleat / stability cues | Beta |
| Pelvic rockPeak-to-peak tilt of your hip line across the stroke — often a saddle-too-high sign. | Saddle height / stability | Beta |
| Left/right symmetryWhether the two sides move evenly. | Imbalance cues | Beta |
More features
All the analysis happens directly in your browser, with no upload step.
Uses your GPU via WebGPU when available and automatically falls back to CPU/WASM on older browsers, so it works widely.
If your clip isn't square-on — which stretches or squashes the angles, especially reach — it warns you to re-film instead of trusting a skewed reading.
Technology
What actually runs when you drop in a clip, and why.
Google's on-device pose model finds 33 body landmarks per frame. It's browser-native and Apache-2.0 licensed — no server, no install.
Runs on your GPU where supported for speed, and automatically drops to CPU/WASM elsewhere so it still works.
Instead of playing the video, it seeks frame-by-frame so every frame is sampled — no undersampling on slow hardware, no stalls in a background tab.
Angles are measured at the bottom of every pedal stroke, then the median is taken. One blurry frame or a bad stroke can't move the result.
It locks onto the leg closest to the camera using confidence over the whole clip, and ignores joints the model isn't sure it can see — so an occluded far leg never poisons the numbers.
Green/amber/red thresholds come from the Holmes method and dynamic-fit research, not arbitrary guesses.
The knee angle is the most consistent measurement, because it's the easiest to read from a side-on video. Torso and elbow are fairly stable too, while the reach-related angles are less precise, because 2D video can't capture depth properly. This is still a proof of concept and it can't replace a 3D bike fitting system. But for finding the clearly visible problems, like a saddle that's too high or too low, it's genuinely useful. If you do adjust something, change one thing at a time and re-film.
This tool exists to help more people run a basic bike fit check for free. The result is a starting point — something to work from before you adjust things yourself, or before you book a session with a professional fitter. Because it only uses 2D video analysis, it has real limits and it can't replace an in-person bike fitting. If you're a bike fitter, or you have feedback from actually fitting people, I'd be very glad to hear it on GitHub.
Made by
I ride, and I was curious whether basic bike fitting could be made easier to get to. This project came out of that curiosity and turned into something anyone can use for free.
Follow on StravaAlso by the creator
Deeper cycling data and performance analytics to turn your rides into insight. If this fit tool is useful, you'll want to check out Ascent.
Explore Ascent Analytics