How it works
Every formula, constant and assumption behind the numbers on screen, with what each one gets right and what it cannot see. Each section is tagged solid (textbook geometry or published data), estimate (calibrated model with known error) or rough (ranks options sensibly, do not quote as fact).
- The rider model
- Fit angles and how they are measured
- The fit guide
- The BikeViewer Score
- Weight distribution and centre of mass
- Aerodynamics and watts
- The wind tunnel
- Gearing, climbing and fixed gear
- Tyre pressure
- The muscle map
- The frame database
- Offset seat tubes and the real seat angle
- Components and contact points
- Reading the numbers
The rider modelestimate
BikeViewer poses a skeleton of rigid segments on the bike. It is a geometry model, not a biomechanics simulation.
Every segment of the skeleton runs from joint centre to joint centre: hip to knee, knee to ankle, shoulder to elbow, and elbow to the middle of the grip. The body you see is drawn around it. Four measurements decide almost everything about how that skeleton sits on a bike, and the rest follow from them in proportions taken from large body measurement surveys. Move the sliders: both views are the app itself, with the same rider standing and on the bike.
- 01
Inseam
Sets the length of the legs. Hip to knee and knee to ankle are shared out from it in survey proportions, so it decides the saddle height and the knee angle more than anything else.
- 02
Hip joint centre
Where the leg pivots, a set height above the saddle top. The knee and hip angles, and how far forward you sit, are all measured from this point, so it matters most once the rider is on the bike.
- 03
Shoulder height
Floor to the top of the shoulder. With the legs set by the inseam, it fixes the torso, so it decides how far you reach and how low you can go. Measuring it takes your own head and neck out of the picture.
- 04
Wingspan
Fingertip to fingertip. It sets the arms, which decide how much your elbows bend at the bars and, with the torso, how upright you sit.
Height holds the skeleton together: inseam, torso, neck and a standard allowance for the head and feet always add up to it, so shoulder height can only move as far as the neck allows. Head size and hands are fixed on purpose. The forearm already runs to the middle of the grip, and a longer or shorter hand is insignificant next to everything else. These four are where to start, not the limit. In the app every segment can be set on its own, femur, lower leg, torso, neck, upper arm, forearm and foot, along with shoulder and sit-bone width and differences between left and right, in the rider's Body settings and the Rider skeleton window. In this demo the saddle is solved for a 145° knee at the bottom of the stroke, as the fit guide does.
From height alone, segment lengths come from Drillis and Contini body proportions (femur 24.5%, lower leg 24.6%, torso 28.1%, arm 34%) with small female offsets from the ANSUR II survey; inseam is 47.6% (47.3% for women), the median crotch height in the US Army anthropometric survey. Every segment can be overridden with a tape measure, and measured values always beat the estimate: individual limb lengths routinely differ from the proportional average by 20 to 40mm.
The hip joint centre is placed 65mm above the saddle top and 8mm behind the saddle's reference point. Seated, the femoral head sits somewhere in a 60 to 90mm range depending on pelvic tilt and glute size, and you can adjust it. Saddle tilt rotates that offset and slides the pelvis about 4mm toward the nose per degree of downward tilt. Hip joints sit at sit-bone width plus 22mm each side.
Legs are solved as two links (hip to knee to ankle) by inverse kinematics to a foot whose ball sits on the pedal spindle plus pedal and shoe stack. The ankle hangs a fixed distance behind and above the ball, scaled from foot length, then rotated by the foot angle slider. The torso and arm are a second two-link chain from the pelvis to the midpoint of the hands; spine rounding shortens the pelvis to shoulder chord by cos(rounding/2) and bows the mid-back outward.
The shoulder is not pinned to the trunk. It rides on the clavicle and scapula and travels forward on the ribcage as the arm reaches, which is how a rider gains reach before straightening the elbow or dropping the torso. The model moves each shoulder joint toward the hands by an amount that grows from nothing at a comfortably bent elbow to a set maximum, 35mm by default, at a near-straight one; on aerobars it is mostly forward regardless. The size is an estimate from clavicle length and normal girdle range, not a cycling measurement, and it is adjustable under Body.
Two more anatomical details, adjustable under the rider's Body and Pedalling groups. The foot sits 18 degrees toe-down at the top and bottom of the stroke by default, the middle of the 5 to 20 degrees fitters see at the bottom, and rocks from there through the stroke, heel down through the power stroke and toe down on the way back, 8 degrees by default. The fit angles are read at the top and bottom, so ankling shapes the pedalling without moving the fit numbers; the foot angle itself does move them, because a toe-down foot lets the leg reach further. The pelvis rolls forward about the sit bones as the torso drops, 0.3 degrees per degree below 45 by default, and the rider slides toward the nose with it; this is a change of position, a few millimetres at the hip, not something that moves while pedalling. And knee angles are read where the thigh and shin lines meet, the same way a goniometer on the hip, knee and ankle landmarks reads them. Both defaults are estimates from published anatomy rather than cycling measurements.
- Segments are rigid: no soft tissue, no spinal flexibility. The pelvis rolls with torso angle but not with hand position, so a rider who rolls further forward on the drops is not modelled.
- The pose is static: no knee tracking under load, and no change in saddle pressure or sit-bone position as effort rises. Ankling is drawn but does not feed the fit angles.
- Left and right are identical unless you turn on asymmetry. Leg-length differences, scoliosis and shoulder drop are inputs, not detections.
- Where your hands actually sit on a hood or grip is a fixed offset per hand position, not a hand model.
Fit angles and how they are measuredsolid
Every angle is a side projection of joint centres, the convention a fitter's video software uses. The dials on the model and the fit guide read the same numbers, so they can never disagree.
Knee angle is the interior angle hip, knee, ankle. It is evaluated with the crank at 6 o'clock (bottom of the stroke) and 12 o'clock (top), independent of where the animation happens to be. Hip angle is mid-spine, hip, knee at the top of the stroke, which is where the hip is most closed. Torso angle is the pelvis to shoulder line against horizontal. Shoulder angle is mid-spine, shoulder, elbow. Elbow angle is shoulder, elbow, hand.
KOPS (knee over pedal spindle) is measured with the crank at 3 o'clock: the horizontal distance from the knee joint centre to the pedal spindle, in the bike's level frame. Positive is knee ahead of the spindle. The plumb line drawn on the model hangs world-vertical so it still reads correctly on a gradient; the number itself does not change with slope.
The target windows are commonly cited fit guidance, not lab results. Road on the hoods: torso 35 to 45 degrees, hip 55 to 70, knee 140 to 150 at the bottom, KOPS within 10mm. Drops, tops and flat bars each have their own torso and hip windows. Choosing an upright or aggressive fit style shifts the torso and hip windows by 4 degrees. Time trial and triathlon use FIST and Retul style windows and KOPS is not judged at all, because a steep seat angle deliberately puts the knee ahead of the spindle. Track has its own windows for the same reason (KOPS is allowed to run to 25mm forward).
- The model knows the joint centre exactly; a fitter marks skin over the joint. Expect a real-world difference of 3 to 5 degrees between what BikeViewer reports and what a video fit would measure, mostly from marker placement and soft tissue.
- Knee angle depends heavily on where the ankle is at the bottom of the stroke. The model fixes ankle geometry from foot length and the foot angle slider; a rider who drops the heel more will read a more open knee in real life.
- Fitters disagree about the windows themselves, and KOPS in particular is contested as a fitting rule. Treat every window as a sensible starting point, not a verdict.
The fit guideestimate
The guide works through the same five stages a fitter does, and each stage may only move its own adjustments.
Saddle height is solved by bisection until the knee reads 145 degrees at the bottom of the stroke (the middle of the 140 to 150 window). Fore-aft is then moved so KOPS reads zero on road bikes, and height is re-solved, twice. The tri and track paths skip the KOPS step.
Reach and drop search every combination of stem length (60 to 140mm), stem angle (minus 17 to plus 17) and spacer stack that the available steerer allows. Each candidate is scored on how far torso, shoulder (target 88 degrees) and elbow (target 157 degrees) sit from their targets. Stems shorter than 90 or longer than 120 and steep positive angles carry a penalty, so the solver reaches for ordinary hardware first and only recommends unusual parts when the frame forces it.
Component sizing is rule of thumb: bar width is shoulder width minus 20mm rounded to the nearest 10; saddle width is sit-bone width plus 20mm; crank length comes from an inseam table (160mm under 720, 165 under 760, 167.5 under 800, 170 under 840, 172.5 under 880, then 175). The recommended frame size probes every size in the manufacturer's chart with this same model and scores torso and shoulder angle.
- It cannot see you. It does not know your flexibility, core strength, injury history or what hurts. Those are exactly the things a professional fit is for, and they outrank any number here.
- Bar and saddle width rules are population averages. Hand position preference and saddle shape matter more than 10mm of width.
- Any solved position is a static snapshot on the hoods with the cranks level. It is a place to start, not a prescription.
The BikeViewer Scoreestimate
One number out of 300 for how well this bike fits this rider and how efficiently it is set up. Higher means a better-matched, faster setup.
It adds up seven parts: fit (the joint angles), sizing, balance (how weight splits between the wheels), aero, rolling, gearing and handling. Each part compares your numbers with a target window and loses points the further outside it they sit. Fit and sizing act as a gate: a fast bike that does not fit cannot score high, and neither can a perfect fit on a slow setup.
It scores the setup, not the moment. Hand position, how low you are leaning, cadence, gear, gradient, surface and tyre pressure are left out, so the same bike and body always give the same number. The bike is checked on the hoods and in the drops (or wherever its bars put your hands) at several postures, and judged against endurance, performance and race fits, taking whichever one your setup reads as. A relaxed endurance fit is not marked down for not being a race fit.
It is calibrated against real bikes. The app's default setup scores in the high 230s, a well set-up bike in the mid 260s, and published pro race bikes in the high 260s to mid 270s. A saddle 60mm too low drops it to around 140. The last points are the hardest to find: every part would have to sit at its best at once.
- It is built on the same estimates as everything else here: the rider model, the fit windows, the drag and rolling models. It ranks setups well; the absolute number is not a measurement.
- It cannot see comfort, flexibility or injuries. A lower score that feels right on the road beats a higher one that hurts.
- A pro's setup scores well because it is efficient, not because it will suit you. Use the score to compare changes to your own bike.
Weight distribution and centre of massestimate
Rider mass is spread over the posed segments using published body segment fractions, then combined with the bike.
Segment masses follow Dempster and Winter: trunk 49.7% of body mass, head 8.1%, each thigh 10%, shank 4.65%, foot 1.45%, upper arm 2.8%, forearm 1.6%, hand 0.6%. Each segment's mass sits at its published centre of mass fraction along the segment (thigh at 43.3% from the hip, for example). The trunk's mass is bowed through the mid-spine point so a rounded back shifts weight correctly.
The rider COM is combined with the bike COM (weighted by the bike weight slider) to give the combined COM. Front and rear wheel loads follow from statics: the combined COM's horizontal position along the wheelbase sets the level split, and on a gradient the COM height times the slope's tangent shifts load toward the downhill wheel.
The saddle, hands and pedals support split is a heuristic: pedals carry a fixed 8%, and the hands' share grows with how far the COM has moved from the saddle contact toward the bars, capped at 55%.
- The bike COM is built from estimated component masses at their drawn positions, not from the parts you actually own. Bike weight is whatever you type.
- Braking, cornering, standing, and the large dynamic pedal forces of a hard effort are not modelled. The support split especially is a ranking tool, not a measurement.
- Body segment fractions are population means. Body composition changes them by a few percent.
Aerodynamics and wattsrough
Power to hold a speed is the standard road cycling equation. The uncertain part is the drag area (CdA), which is estimated from the pose, not measured.
Power at the tyre = Crr x M x g x cos(slope) x v + M x g x sin(slope) x v + 0.5 x rho x CdA x v cubed. Wheel bearings (Martin et al. 1998) and a gear-specific chain loss fitted to CeramicSpeed's drivetrain tests (small sprockets and crossed chains cost more; about 96-98% efficient at 250 W) are added to give the power at the pedals. Air density rho is 1.225 kg per cubic metre (sea level, 15 degrees C), or 1.184 on indoor velodrome boards, which are kept at about 25 degrees C. Speed for a given power inverts the same equation.
CdA = 0.8 x frontal area x position factor + wheel build deltas. Frontal area is computed from the posed trunk (shoulder width x (torso vertical height + 0.1m) x 0.85) over a fixed legs, frame and arms baseline of 0.263 square metres, calibrated so a typical rider on the hoods reads about 0.39 square metres and a low tuck about 0.29. It is computed from parameters rather than pixel-measured off the animation, so the same setup always gives the same watts.
The posed rider already lowers the trunk when the hands go to the drops or into a tuck, and the frontal area reads that, so the hand-position factor covers only the arms: drops 1.0, hoods tuck 0.95, aerobars 0.80, flat bars and tops 1.05. QEF's simulation of one rider at 50 km/h put the drops 4% above the hoods with the trunk held still, the arms opening at the elbow and shedding a vortex off each hand; drops at 1.0 lets that penalty cancel the extra pelvic roll the pose does not model. Net, the drops read about 4.5% under the hoods and the tuck about 10%. Elbow flare adds 0.18% per degree out and takes the same per degree in (QEF measured 2.7% less drag with the elbows drawn in on the hoods). Wheel build deltas are referenced to a 35mm rim, 24 spokes and a 28mm tyre on a 28mm rim so a stock bike starts at zero: rim depth follows an exponential curve fitted to published data (a 20 to 50mm step saves roughly 4 W at 45 km/h, zero yaw, diminishing past 60mm), each spoke adds 0.00012 square metres, each millimetre of tyre width adds 0.00035, and a tyre wider than the rim pays a penalty under the 105% rule.
A shorter crank opens the hip at the top of the stroke, and the crank length control can compare lengths: for each one the saddle is re-solved to today's knee angle, and the front end is then lowered until the hip at the top is back to today's angle, which shows the lower torso a shorter crank buys and its drag. Cadence at the same power rises about 0.35% per mm shorter, from QEF's study of seven elite riders moving to 165mm cranks (+3.1% at 240 W, with less hip and knee range and a lower trunk); QEF's simulation of the same change found 3.4% less drag, half from frontal area and half from flow staying attached to the back.
Rolling resistance Crr is 0.004 for a 28mm tyre, rising gently with width, multiplied by a tube factor (butyl 1.0, TPU 0.95, latex 0.90, tubeless 0.86). Those factors reproduce roughly 5 W across a pair at 40 km/h between butyl and tubeless, in line with published roller tests.
- No wind and no yaw. Real world gains from deep rims and aero positions are larger at yaw; the numbers here are the conservative zero-yaw end. The wind tunnel below adds yaw, drafting, temperature and altitude to its own figures.
- No helmet, clothing, hair, bottles, bags, drafting, altitude, temperature or road surface. Each of those can move real power by more than a wheel choice.
- Two riders with identical measurements can differ in true CdA by 10 to 15% because bodies are not cylinders. Absolute watts are indicative; the difference between two setups on the same rider is far more trustworthy than either number alone.
- Tyre and rim data are population curves, not the specific products you own.
- The QEF figures behind the arm, elbow and crank numbers are simulations of a single rider at one speed in still air, with no tunnel check published. They set the direction and rough size of an effect, not exact watts.
The wind tunnelrough
The Air layer draws the wind around the rider and bike as you ride. The picture is a fast approximation of how air moves, not a fluid simulation. The drag numbers start from the same drag area as the watts above.
The stick figure is too thin to push air aside like a person, so the air flows round an invisible body built on the same joints and sized like a real rider. It is scaled by height over 1780mm, clamped between 0.8 and 1.2. The helmeted head is a 116mm radius sphere and the trunk is about 190mm from chest to back. The limbs taper joint to joint, the thigh from 70mm radius at the hip to 49 at the knee, for example. The bike gets the same treatment: frame tubes at their drawn diameters, fork, cranks, pedals, levers, rims and every spoke. Lean and steering move it, and the Slim, Average and Broad builds scale it by 0.92, 1 and 1.1.
Each part bends the air the way a cylinder or sphere does in ideal flow: the air parts in front, speeds up past the sides and closes behind. That is damped downstream and replaced by a wake, a slower core with a little turbulence. A pair of counter-rotating vortices trails from the hips, each with a 105mm core, widening and weakening downstream. The pair strengthens on the side of the raised thigh, so it beats with the pedal stroke. That pair is the main structure in the wake of a real cyclist (Crouch et al. 2014). A streak's length is set by the wind speed, so slow motion slows the air without shortening it.
Pressure colouring is 1 minus (local air speed / wind speed) squared along each streak: red where the air slows against the rider, blue where it speeds up, and a steady suction colour in the wake. Pressure on the rider, off by default, shades each surface by how squarely it faces the wind. It follows the shape of the textbook pressure on a sphere, softened so it reads at a glance: red where it faces the air, blue where the air runs along it, a faint suction colour on the lee side. Neither is a measured pressure.
Frontal area is measured by projecting the air's body along the wind onto a 5mm grid, so it reads about 0.48 square metres for a typical rider on the hoods. That is higher than the estimate above because every part of the bike and wheels counts in full. Drag area starts from the CdA above, never from this area, so with the Average build the tunnel and the watts agree at zero yaw. The breakdown by part weights each part's area by a typical drag coefficient (head 0.75, torso 0.72, arms 1.0, legs 0.95, frame and bar 0.9, wheels 0.55), scaled to that total.
Yaw multiplies the drag area by (1 + 0.00032 x yaw squared), about 7% at 15 degrees, as the body turns side-on. A deeper rim takes some back as it starts to work like a sail, up to 15 degrees, and stalls over the next 10. Air density comes from temperature and altitude through the standard atmosphere: pressure = 101325 x (1 - 0.0000225577 x altitude) to the power 5.25588, and density = pressure / (287.05 x (temperature + 273.15)). Wind speed matches the ride speed at your gear and cadence, or a fixed fan speed from 10 to 70 km/h.
Two small parts the body model cannot see are added from QEF's simulations at 50 km/h: a ventilated front disc rotor, 0.135 N at 20 degrees of yaw (about 2 W, scaled with the rotor's area, and applied at every yaw), and, if ticked, BOA dials on the shoes, two a shoe, 0.1 N in all (about 1.4 W). The drag area also changes through the pedal stroke, about 15% peak to peak, least with the cranks near level and most near vertical (Crouch et al. 2014); the window's number is the average, and the Stroke chart draws the swing.
Drafting puts a second rider ahead. The saving for the rider behind is 0.33 x e to the power of (-(gap - 0.15m) / 2.6m), times e to the power of (-(offset across / 380mm) squared). That is about 29% at half a metre, 24% at one metre and 17% at two, and it falls away quickly as the wheels stop overlapping. It is a fit to the wind tunnel and simulation work of Olds (1998) and Blocken et al. (2013, 2018).
- It is not CFD. No boundary layer, separation or viscosity is solved; the wake and vortices follow rules shaped by published studies. Read the picture for where the air goes, not for exact speeds.
- The air's body is an average shape placed on your joints. Clothing, skinsuit fabric, helmet shape, hair, bottles and bags are not in it.
- The yaw and rim curves are generic, not your wheels. Real deep rims differ by brand at yaw by more than the curve shows.
- Drafting assumes a rider like you in front and calm air, and only the rider behind gains. The small saving for the leader is not modelled.
Gearing, climbing and fixed gearsolid
Gear tables are arithmetic; the only assumption is the wheel's rolling diameter.
Rolling diameter is ISO rim diameter plus twice the tyre width (622 + 2 x 28 for a 700x28). Development, ratio and speed at cadence follow directly. Two ratios on different chainrings within 3% of each other are counted as duplicates.
The climbing figure is the steepest gradient your power can hold in the lowest gear at your set cadence, solved iteratively with the rolling resistance above and a nominal hoods CdA of 0.36 (aero is a small term at climbing speed).
On a fixed gear the chain must be a whole even number of links, so the rear wheel slides in the track ends to take up the slack. That axle solve is done on the frame, not fudged on the chain, which is why a fixed-gear rear wheel visibly moves when you change the gear.
- Inflated tyre diameter varies several millimetres with pressure, casing and rim width, which shifts speed at cadence by about 1%.
- The climb figure assumes you can sustain the power at the set cadence indefinitely. It is a gearing check, not a physiology one.
Tyre pressurerough
A starting pressure from the 15% tyre drop guideline, scaled by the load on each wheel.
The recommendation is a power-law fit through published 15% drop guidance for 700c tyres (38kg of wheel load gives about 78 psi on a 25mm tyre, 65 on a 28, 52 on a 32), scaled by the actual front and rear load from the weight model and multiplied by a tube factor (tubeless 0.87, latex 0.95, TPU 0.98). Results are clamped between 12 and 110 psi.
Wheel diameter is accounted for separately. For a given tyre drop, a larger wheel lays down a longer contact patch, so it carries the same load at lower pressure. Pressure scales with the square root of the wheel radius, applied relative to a 700c wheel of the same width: 700c numbers are unchanged, a 32 inch wheel comes out about 8% lower and a 650b about 3% higher.
- Hookless rims, rim and tyre manufacturer maximums, surface, temperature and personal preference all override this. Check your rim's stated limit before pumping to any number from software.
- The 15% drop rule itself is a heuristic for comfort and grip, not an optimum for speed on every surface.
The muscle maprough
Muscle map estimates how hard each muscle works on your solved position, from the loads the watts put through the leg. It is a model of the muscles, not a reading of yours.
Thirteen muscles in each leg are modelled as lines of action between their attachments on the pelvis, femur, tibia and foot of your solved pose, scaled by height over 1780mm. Strengths and paths follow published lower-limb musculoskeletal models in the line of Delp and colleagues. The quads and hamstrings wrap the knee on a pulley of fixed radius, and the iliopsoas wraps the front of the hip, so their leverage holds up when the joint is deeply bent.
The pedal force comes from the watts and cadence: a push through the downstroke shaped like measured crank torque, close to zero at the dead spots with a small drag on the way up, plus the weight of the leg resting on the pedal. Moments at the hip, knee and ankle follow from that force and the weight of each segment, at 36 crank positions 10 degrees apart.
Each moment is shared between the muscles that cross the joint in the way that takes the least total effort: the sum of squared activations, each between 0 and 1. Effort is that activation, the share of a muscle's strength in use at that moment. Share of the stroke is each muscle's part of the positive work.
Length is measured against a reference posture with the hip and knee both at 60 degrees, tendon included. At full stretch and folded short mean longer or shorter than a muscle usually works on a bike, not a strain.
Nine upper-body groups (back, abdominals, lats, trapezius, neck, shoulders, triceps, biceps and forearms) come from a hold model: the trunk's weight is carried partly by the back and partly through the arms to the bars, more on the bars the lower and longer the front end, with the hand force tilted 20 degrees back. The neck holds the head against its tilt.
The flags read the knee at the bottom of the stroke and the hip at the top against the ranges the Fit check uses, and the neck and hand loads against fixed limits.
- It is not EMG. Riders recruit muscles by habit, training and fatigue, and two riders in the same position can fire differently. Least total effort is a well-tested approximation for steady pedalling, not a rule the body follows.
- There is no co-contraction, so a muscle that braces a joint without moving it reads as resting.
- The body is average: no individual muscle size, flexibility or injury history. It does not predict pain.
- The upper body is held, not simulated. Pulling on the bars to climb or sprint is not in it.
The frame databaseestimate
Real frames are transcribed from manufacturer geometry charts. Where a chart is incomplete, the missing value is derived and the frame is flagged provisional.
Every size carries stack, reach, head and seat angles, top and head tube lengths, chainstay, bottom bracket drop, fork rake and wheelbase where published. The parametric frame is rebuilt from those numbers, so what you see is the chart, not a photograph.
When a manufacturer publishes stack and reach but not head tube length, it is derived as (stack minus BB drop) divided by sin(head angle), minus the axle to crown length, using the category's median fork (road 366mm, gravel 381, flat bar 380, track 358). Checked against a chart that publishes both, the method lands within 3mm. Frames with any derived value are marked provisional in the picker.
- Charts change between model years and occasionally contain errors. Confirm with the manufacturer before you buy a size on the strength of this app.
- Fork rake and offset, headset stack and effective seat tube angle are sometimes assumed from the category when the chart omits them. On an offset or Y-shaped seat tube the effective seat angle depends on saddle height; the next section shows how BikeViewer handles it.
- Most flat bar and track frames are still provisional.
Offset seat tubes and the real seat angleestimate
A geometry chart prints one seat angle. On a bent, offset or Y-shaped seat tube, no tube on the bike runs at that angle: it is an effective angle, true at one saddle height only. BikeViewer draws the real tube, so the saddle lands where it really would at any height.
Pick a style and move the saddle. The view is the app itself: it draws the chart's angle as a dashed line from the bottom bracket, the post's real angle where its own line crosses bottom bracket height, and the angle the saddle actually sits at, from the bottom bracket to the top of the saddle.
The chart's seat angle is the line from the centre of the bottom bracket to the saddle. On a straight seat tube the seatpost runs along that line, so the angle holds at every saddle height. On an offset tube the post runs on its own line, which crosses bottom bracket height somewhere else, so the line from the bottom bracket to the saddle swings as the saddle goes up or down.
Offset back, as on the Cervélo S5: the post's line passes behind the bottom bracket and runs steeper than the chart, 77.5° against 73°. Every 100mm of saddle height moves the saddle about 8mm further forward than the chart's line, so the angle to the saddle is 72.3° at 600mm and 73.6° at 800mm. Offset forward and Y frames, such as the Colnago Y1Rs, go the other way: the post is slacker, 65°, and its line passes ahead of the bottom bracket, so the saddle moves back about 16mm for every 100mm it rises. On a size with a 73° chart angle that is 74.4° at 600mm and 72.0° at 800mm.
BikeViewer keeps the maker's figure where it is meant to hold. For every size, the post's line is placed to cross that size's published seat angle line 700mm above the bottom bracket, roughly where a saddle sits, and the real tube is drawn underneath it. Where the post's line crosses bottom bracket height follows from the two angles: 700 × (cot real angle − cot chart angle), which is 59mm behind the bottom bracket on the S5 and 112mm ahead on a 73° Y1Rs.
Makers don't publish the real angle, so it is measured once per frame from the maker's own side-on photo of a complete bike: scaled from the 622mm rim, checked against the published wheelbase, and read along both edges of the post to the nearest 0.5°. On the frame pages it is the row marked with an asterisk, Seat tube angle, real, set in the bike's own colour. It never changes the published table: the maker's figures stay exactly as printed.
- The real angle comes from a photo, to the nearest 0.5°. Half a degree out moves the saddle about 1mm for every 100mm it sits above or below 700mm.
- A library frame is drawn straight until its seat tube has been measured. Frames are being measured now.
- A frame whose seat tube changes design between sizes is left straight rather than drawn wrong.
- This is the frame only. Where the saddle sits on its rails, and a seatpost's own setback, are separate settings.
Components and contact pointssolid
Stems, spacers, bars and saddles are parametric, positioned by the same trigonometry a fitter uses with a tape measure.
Stem height and reach come from stem length, stem angle relative to the steerer, headset and spacer stack. Bar reach and drop are measured centre to centre; hand positions are fixed offsets from the bar (the hoods, for example, sit 48mm forward of and 46mm above the bar's centre at 88% of the bar reach). The saddle top sits 50mm above the rail clamp, a typical value; real saddles range from about 35 to 60mm.
Crank length, pedal stack, shoe stack and cleat fore-aft all move the foot exactly as they would on the bike, which is why the fit angles respond to a cleat change.
- Saddle shape and where you actually sit on it are not modelled; a 20mm difference in effective sitting position is common between saddles of the same width.
- Lever reach, hood shape and bar flare vary between brands. The hand offsets are a representative shape, not your specific bar.
Reading the numbers
Four rules for reading the numbers without being misled by them.
Compare, don't quote. A 10mm stem change on the same rider is modelled well. An absolute torso angle or watt figure carries all the error above and should be read to about plus or minus 3 degrees and plus or minus 10 to 15%.
Measure yourself. The proportional rider is a fallback. Measuring inseam, torso and arm properly improves accuracy more than any other input.
Use it before a fit, not instead of one. BikeViewer is good at exploring what a frame size, stem or bar will do to your position before you spend money, and at making sense of the numbers a fitter gave you. It cannot feel pain, watch you pedal or see how you sit on a saddle. If you ride in discomfort, see a qualified fitter or physiotherapist.
If you find a formula, constant or frame that is wrong, please say so. This page is meant to be checkable.
Questions
How are watts calculated? Do they include rolling resistance and environmental factors?
Power is the sum of three physical terms, divided by a 97.5% drivetrain efficiency: rolling resistance (a coefficient scaled from your tyre width), the gradient term (your total mass climbing or descending the slope you set), and aerodynamic drag. Drag uses a CdA estimated from the rider's actual posed frontal area, so tucking into the drops genuinely lowers the number. Hand position is applied as a published wind-tunnel factor rather than read off the silhouette, because a rider moving to the drops also bends the elbows and flattens the back, which the posed figure does not do: the drops sit about 7 percent below the hoods and aerobars about 20 percent below. The wheel build is modelled on top of that, because the rider's silhouette does not contain it either: rim depth (a deeper section fairs the wheel, worth roughly four watts at 45km/h between a shallow box rim and a 50mm section, with diminishing returns past 60mm), spoke count, tyre width, and whether the tyre bulges past the rim (the 105 percent rule). Tube choice changes rolling resistance rather than drag: latex and tubeless casings lose less energy than butyl, worth around five watts across a pair at 40km/h. What is not modelled: wind, altitude, and temperature (air density is fixed at sea level), yaw angle (so the rim figures are the conservative zero-yaw case), and CdA overall is an estimate rather than a wind-tunnel measurement. In practice the differences between positions are more trustworthy than any single absolute figure, which we would place within roughly 5 to 8 percent.
What fitting standards does the tool use, and how accurate are they?
The defaults follow mainstream road-fitting conventions: saddle height is solved for a 145 degree knee at the bottom of the stroke (measured at the joint, the same way a goniometer reads it), KOPS is drawn as a reference plumb line rather than enforced as a rule, and the hip joint centre sits 65mm above the saddle by default, within the anatomical seated range. Joint angles update live so you can check them against whichever school of fitting you follow. It is a planning and visualisation tool. A professional bike fit assesses your flexibility, injury history and asymmetries on a real bike. Use it to prepare for that fit, not instead of it.
How is the recommended tyre pressure calculated?
It is anchored to measured reference points (for a 38kg wheel load: about 78psi at 25mm, 65psi at 28mm, 52psi at 32mm) and then scaled by the wheel load the weight model actually computes for your setup and by your tyre width. Because front and rear loads differ, the recommendations differ per wheel. Casing suppleness and rim inner width are not modelled. Treat the numbers as a starting pressure and adjust from there.
Where do the geometry numbers come from?
From the same definitions manufacturers use in their published charts. Stack and reach are measured from the bottom bracket to the top of the head tube; trail is derived as (wheel radius times cosine of the head angle, minus rake) divided by sine of the head angle; wheelbase, front-centre, effective top tube and standover all follow from the solved frame. Because the whole frame is parametric, every derived value updates the moment you move a slider, and you can check the tool against any brand's chart by entering their numbers.
BikeViewer models static geometry, not pedalling, and complements a professional fit rather than replacing one. Spotted an error or have a better source? Get in touch.