Use cases for this Bike Geometry Calculator web app:
- Calculate frame geometry of an existing bike through simple XY measurements.
- Calculate a full chart from the often sparse geometry chart
provided by the manufacturer.
- Compare and/or match fit of two bikes.
- Test size and fit of a frame before buying.
- Test how fit is affected by adjusting or changing components.
The app is made for recording and comparing bike fits and frame
geometries, it's not designed to make bike fits based on body
measurements (which is a bad idea anyway, as good bike fits are made
using dynamic evaluations).
How to use
- Toggle different sets of measurements by pressing
the buttons on the top row.
- Edit a measurement by tapping on its number. When
editing, all other measurements will automatically
adapt to match.
- When making a measurement or comparing, carefully note exactly
where the measurement start and end in the chart (for example if
it's the top, back or center of a tube).
- Tap on the title to change name of the chart.
- Shadow bike: press the button to enable the shadow
bike (=an extra bike) to make visual comparisons. No measurements
are shown for the shadow bike, but you can swap it to the
front any time by pressing "Swap Bikes".
- The current state is stored in the browser URL (link) so to
share the chart just copy and share the URL.
- Use the Undo button for reverting edits (or
imports). There are unlimited amount of undo steps.
- Have this help column visible while working to make it easy to
follow the documented workflows for measuring a bike or copying a
- While the app works on small mobile phone screens, it's best
experienced on a tablet or desktop. On small screens you need to
use page zoom.
The measurement buttons are toggle buttons, red = off, green =
on. Each button enables a set of measurements, and several can be
combined although the chart can become a bit crowded.
- Measure: shows measurements to enter to make a complete
measurement of an existing bike. How to do this is described in
the "measuring a bike" section.
- Frame Geometry: measurements related to frame and fork.
- Components: measurements related to the components added
to the frame.
- Bike Fit: measurements that are interesting in a bike fit
- Quick Fit: a few measurements to quickly compare the fit
of two similar bikes. Assumes that bottom bracket drop and
handlebar diameter is the same between compared bikes. Head tube
angle and fork rake should also be reasonably similar.
- Fit Delta: only enabled if the shadow bike is active, and
then it shows the fit difference between the two bikes.
- Extra: a special button that toggles related extra
measurements for the currently active measurements.
Geometry control buttons
- Fork: choose if changes to fork should rotate the whole
frame (as it would in reality), or if the head tube angle should be
fixed (which is the default as it's generally more practical).
- Head Tube: choose if changes to head tube length should
expand/shrink up (fixed bottom) or down (fixed top). Fixed top is
the default and most practical while measuring a bike.
- Anchor: when the shadow bike is enabled choose which
point to use as reference (that is where the bike should be
aligned), default is the bottom bracket.
- Shadow Bike: enable the shadow bike (an extra bike to
compare with), which will show up as dashed chart. If there is no
shadow bike already, a copy of the current is made.
- Swap Bikes: swap the main bike and the shadow bike. If
there is no shadow bike already, a copy of the current is made.
- Undo: undo the last measurement edit (or import). The
full history of edits is kept so you can undo until the starting
- Export|Import: bring up a dialog to export/import/edit
measurements as text, or import measurements from an URL.
- Text dialog: key measurements of the main bike is shown as
text (in JSON format). This can be saved to file (Save
button), or copied to the clipboard (Copy button). The
measurements in the dialog will be applied on the chart when
the dialog is closed, so if the measurements are changed (by
hand edit, or Load from file, or Clear and
pasted from the clipboard) before closing the dialog
(Close button) the chart is updated accordingly. Any
missing measurement is derived automatically. If a measurement
cannot be derived a default value is used. If the dialog
contents is invalid, no changes are made.
- Import from URL dialog: paste a bike geometry calculator URL
into the dialog and choose to import the main or shadow bike
(if available) from it. The imported bike is stored as the
main bike, so to import shadow to shadow swap bikes before
- Reset: choose between resetting all measurements (to a
default example bike) or removing the shadow bike (if
any). As both the main and the shadow bike is stored in the
URL, removing the shadow bike will make it much shorter.
- Fullscreen: toggle full screen mode. Note that it
typically disables the ability to zoom the page, so on very small
screens it may be better to not run fullscreen.
- Help: toggle side panel with this documentation.
- Only intended for drop bar bikes.
- Seat stays and down tube are not editable as they are not
relevant for fit or handling.
- Front and rear wheel is assumed to be of the same diameter.
- The handlebar shape has been excluded and thus the position in
the drops cannot be specified.
Measuring a bike
To measure an existing bike, take it inside and put the rear wheel to
a wall and hold it exactly upright with a bike stand, trainer or just
some furniture. The floor and rear wall will serve as
perpendicular reference planes when measuring.
For measuring tools get a measuring stick or a stiff folding rule, and
a bubble level (see the measuring technique section for additional
Enable only the Measure button to show the XY measurements with
the wall and floor, and start measuring. It will be easier if you do
things in a certain order:
- Inflate the tires and make sure that the vertical height of the
front and rear hub is exactly the same. Add spacing under the
tire of the lower hub if necessary. Enter the resulting hub Y.
- Measure back hub X and offset X (that is how much
the tire is off the wall, if any).
- This will indirectly set the wheel radius, which is defined
as the outer radius of the wheel including the inflated tire,
without any compression from the weight of the bike.
- As the tire is compressed a little from the bike weight, hub
Y is typically a few mm less than back hub X if
the tire touches the floor and wall.
- Measure/estimate offset Y, which represents the ground level.
- Offset Y is only used to calculate how high the pedal
axle and bottom bracket is off the ground when riding. If the
bike is mounted on a trainer the tires float above the ground
and needs compensation. Hub Y minus offset
Y should be the hub height when the bike is ridden. If you
want conservative numbers for that, estimate how much extra
the tires are compressed when riding and add the corresponding
to the offset.
- As the wheel is drawn as a perfect circle in the chart it's
normal that the tire can drop a few mm below offset Y
(or the floor line).
- Measure saddle length, saddle front to center,
and measure/estimate saddle angle.
- Measure/estimate stem angle (often printed on the
- Measure handlebar diameter (31.8mm on most bikes).
- Measure crank length (often printed on the cranks).
- Measure bottom bracket X/Y.
- Measure seat tube top center X/Y.
- Measure head tube top center X/Y.
- The head tube and fork is tricky. Here's why: while you
can measure head tube bottom X/Y, the distance is too short to
safely get an accurate head tube angle. Wheel base is easy to
measure accurately though, but we need fork rake, which is hard to
measure. Here's a couple of methods to go forward:
- Method A: if you can get the fork rake in advance:
- Measure head tube length.
- Measure headset bottom stack, headset is often
invisible on modern bikes, but there's usually a 1mm gap
- Enter fork rake.
- Measure front hub X.
- Method B: measure head tube bottom center but use it
only as a guide and adapt to other known data.
- Measure head tube bottom center X/Y. Sanity check
that head tube length matches.
- Measure headset bottom stack.
- Adapt fork rake with trial and error
until front hub X matches the measured
value. Sanity check the resulting fork rake, for most road
bikes it should be in the range 40 to 50mm.
- Measure handlebar back X and handlebar top Y.
- Now with handlebar position established, we want to check that
stem length, stem angle, stem
stack, headset spacers stack and headset top
stack all match up.
- The stacks can easily be measured. If you don't have the
stem angle, you can adjust it until all matches up.
- In the chart the stem will is anchored in the middle of the
stem stack. Some real stems are not, so you may need to use a
fake stem stack to get the stem aligned properly.
- Note that when you change the stack and stem angle values
the handlebar position will move, so when finished check that
it is where it should be.
- Measure hoods rest top X/Y.
- Measure saddle back X and saddle top Y.
- Measure saddle stack and measure/estimate seatpost
- Adjust top tube position to match the real frame with seat
tube top to top tube center and head tube top to top tube
The bike is now fully measured, and you can enjoy all automatically
derived measurements. It's a good idea to go over some derived
measurements, like top tube length, and see that they match to
double-check the accuarcy of the measurements.
The measured chart usually does not exactly match a geometry chart
from the manufacturer. While this can be due to measurement errors,
it's also likely that the manufacturer has rounded some values (like
tube angles) or measured with slightly different anchor
points. A different headset or fork can also affect frame rotation
and thus yield different angles.
Below follows a few tips on how to make accurate measurements.
Use a bubble level
If the ruler cannot be held directly against the point measured, use a
bubble level to make sure you get the measurement exactly at the
accurate height. In the image the measurement cannot be seen until the
bubble level is removed, so we place and hold a fingernail exactly
where the bubble level and ruler meet. Of course, we also take care to
avoid bending the ruler and make sure to hold it perfectly vertical
(using a bubble level for that is generally overkill though, just use
The three images above show what can happen if a bubble level is
not used, here when measuring saddle top Y. The ruler is placed the
same way in all three images, but in the first two we look by eye from
the side, and due to the ruler is some distance away from the saddle
(as there's no room to put it directly against while still having it
vertical) and the saddle top is rounded, the result depends on
from which height we look at the ruler. The first looks like 998mm,
the second 996. In the third image we use a bubble level and put a
fingernail where it meets the ruler, and there we get an accurate
Sometimes deriving a measurement is more accurate than trying to
measure directly. The example above shows when there is a hollow crank
axle so there is no clear center point of the bottom bracket. We then
measure to the edge of the hole, which the ruler can be put directly
against, to get an accurate measurement. Then we measure the diameter
of the hole using a vernier caliper or a ruler, and add the radius to
get the bottom bracket center measurement.
It can be helpful to put some masking tape on the tube ends and make a
pen mark at the center to have something to aim at when
measuring. Looking from above the head tube / seat tube centers can be
seen by eye, a vernier caliper can be used to get additional visual
guidance where to put the pen mark.
If you measure a complete bike you normally measure hoods reach just
by measuring the hoods XY coordinate. However if you want to measure
it separately, here's how: the image shows a technique with two
rulers, one is put over the hoods where the purlicue rests, and the
other is used for measuring the distance to the front of the
handlebar. A fingernail is placed and held exactly where they meet so
we can remove the ruler and see the result. Then radius of the
handlebar is added (usually 16mm) to get the final measurement.
Copying a geometry chart
Manufacturers' geometry charts often lack crucial measurements, and
many times the charts are poorly or incorrectly drawn so it's not
clear between which points the measurements are made. Sometimes
you need additional information to be able to make a complete chart,
or you have to live with that some measurements are not known.
Due to the large variability in chart quality and content a
step-by-step guide how to copy a chart will not work for all. However
if the chart indeed is detailed, here's a suggested order to copy the
- Seat tube angle
- Head tube angle
- Bottom bracket drop
- Chainstay length
- Fork rake
- Head tube length
As the bike needs to stay connected when changing a measurement some
related measurements will automatically change, but if you use the
order above all those measurements will stay at the value
entered. If you need to use a different order or other measurements
you may need to revisit old measurements to see that they are still
When copying or editing geometry charts it's often useful to change
the geometry control "Head Tube: Fixed Top" to "Head Tube: Fixed
Here follows some general tips how to deal with charts that are less detailed:
- Even if many measurements are missing you can often derive some
or all of them. It can be fruitful to search the web for additional
- If your purpose of making the chart is just to compare bike
sizing before buying, you can skip measurements which is not
important for that purpose, like fork rake. Measurements you do
need for bike sizing:
- Seat tube angle, as that will affect how far back the saddle
moves with height adjustment.
- Head tube angle, as that will affect how close the handlebar
comes with height adjustment. It's less important to have the
correct value that the seat tube angle though, as the effect
is much smaller. So if you don't have it, guess it.
- A way to know where the head tube top center is in relation
to the bottom bracket. Stack and reach measurements are
excellent, but it may also be derived from seat tube length
and horizontal top tube length or similar.
- Rough measurements to sanity check standover height and
- If the fork is pre-cut to a length, you need to know how
much stack above the headtube you get. In this case making an
estimate from a photo is often the only option.
- If you don't plan to change stem and handlebar you need to
get data on those (length, angle, reach).
- Sanity-check crank length. Usually it has no effect on
sizing, but if you buy some odd bike the crank length may not
be what you expect.
- While fork is usually not included in the chart, it is important
as the length of it decides where the head tube starts. Often you
can derive it though, for example by having stack and head tube
- In traditional sizing head tube length was what decided the
stack height, as forks always had (almost) the same
length. Today fork lengths can differ widely, especially with
endurance/cross/gravel bikes so you need to know more than
just the head tube length.
- Horizontal/effective top tube can be measured in different ways,
and it's not always clear how the manufacturer have measured
it. If seat tube and head tube angles differ significantly, then exactly
where horizontal top tube is measured will affect its length. If
there is a reach measurement it's usually better to rely on that.
- Stack and reach are modern measurements, and if available they
are usually measured at the expected places and are correct.
- Stack and reach is the modern counterpart to top tube and
head tube length for bike sizing. Note that you still need
seat tube angle and preferably head tube angle as well to be
able to make a chart for reliable sizing.