Variable fonts in the library and the axes they use
Of the 1,899 measured families, 558 (29%) are variable fonts today: one file that holds a continuous range of weights or other styles. Among families added from 2022 on, 53% are variable, against 8% of those added in 2010 to 2012.
What an axis is
A variable font stores a design along one or more axes, and any position on an axis can be used, not only the named steps. The axis list sits in each family’s metadata with its minimum and maximum. Five axes are registered in the OpenType specification: weight (wght), width (wdth), optical size (opsz), italic (ital) and slant (slnt). Anything else is a custom axis named by the designer in four capital letters.
| Axis | Tag | Families | Share of variable families |
|---|---|---|---|
| Weight | wght | 545 | 98% |
| Width | wdth | 99 | 18% |
| Optical size | opsz | 29 | 5% |
| Slant | slnt | 16 | 3% |
| CRSV | CRSV | 8 | 1% |
| ELSH | ELSH | 8 | 1% |
| ELXP | ELXP | 6 | 1% |
| ROND | ROND | 5 | 1% |
Weight dominates: 545 variable families have it, and most have nothing else. Of the variable families, 419 have exactly one axis and 113 have two; only 26 have three or more.
Weight ranges
The most common weight range is 100 to 900, the full Thin to Black scale, used by 185 families. Next come 400 to 700 (82) and 100 to 400 (49). A short range is not a lesser font: many text faces were drawn for reading weights only and simply stop at Bold.
| Weight range | Families |
|---|---|
| 100 to 900 | 185 |
| 400 to 700 | 82 |
| 100 to 400 | 49 |
| 300 to 700 | 35 |
| 200 to 900 | 28 |
Which classes are variable
Monospace families are the most often variable (41%), display faces the least (14%). Display and handwriting designs are often drawn in a single weight, so there is nothing to interpolate.
| Class | Variable | All | Share |
|---|---|---|---|
| Sans-serif | 299 | 732 | 41% |
| Serif | 103 | 354 | 29% |
| Display | 67 | 472 | 14% |
| Handwriting | 71 | 297 | 24% |
| Monospace | 18 | 44 | 41% |
The most axes
Roboto Flex has 13 axes, more than any other family. After it come Bitcount, Bitcount Grid Double, Bitcount Grid Single and Bitcount Prop Double with 5 each or fewer. Their custom axes control details such as grade, stroke contrast or corner rounding. In all, 33 custom axes appear in the library; most of them belong to a single family. The page of less common axes lists each with its families.
Optical size
The optical size axis lets one family change its drawing with the size it is set at: thinner hairlines and tighter spacing for headlines, sturdier shapes and more open spacing for small text. It appears in 29 families, 13 of them serifs. The ranges differ widely: Playfair runs from 5 to 1200 points, while Google Sans covers only 17 to 18. The table shows the ten widest ranges.
| Family | Optical size range | Class |
|---|---|---|
| Playfair | 5 to 1200 | Display |
| Google Sans Flex | 1 to 144 | Sans-serif |
| Pathway Extreme | 8 to 144 | Display |
| Roboto Flex | 8 to 144 | Sans-serif |
| Roboto Serif | 8 to 144 | Serif |
| Fraunces | 9 to 144 | Serif |
| Montagu Slab | 16 to 144 | Serif |
| Merriweather | 18 to 144 | Serif |
| Bodoni Moda | 6 to 96 | Serif |
| Bodoni Moda SC | 6 to 96 | Serif |
Italics and slant
Most variable families keep their italic in a second file rather than on an axis: 191 of the 558 variable families list an italic style, against 171 of the 1,341 static families. A slant axis appears instead in 16 families, which tilts the upright design continuously, Afacad Flux, Bitcount and Bitcount Grid Double among them. The most common pairing of two axes is weight with width, found in 98 families.
Custom axes shared by several families
A custom axis usually belongs to one design, but 14 of them appear in two families or more; for five of these, all the families sharing the axis have a designer in common. The axis names below are the ones written into the font files.
| Tag | Name in the file | Families | Examples |
|---|---|---|---|
| CRSV | Cursive | 8 | Bitcount, Bitcount Grid Double and Bitcount Grid Single |
| ELSH | Element Shape | 8 | Bitcount, Bitcount Grid Double and Bitcount Grid Single |
| ELXP | Element Expansion | 6 | Bitcount, Bitcount Grid Double and Bitcount Grid Single |
| ROND | Roundness | 5 | Doto, Google Sans Flex and Kode Mono |
| BLED | Bleed | 4 | Sixtyfour, Tiny5 and Tiny5 Duo |
| GRAD | Grade | 4 | Google Sans, Roboto Flex and Roboto Serif |
| XROT | Rotation in X | 3 | Tilt Neon, Tilt Prism and Tilt Warp |
| YROT | Rotation in Y | 3 | Tilt Neon, Tilt Prism and Tilt Warp |
| CTRS | Contrast | 2 | Akshar and Science Gothic |
| JITT | Jitter | 2 | Tiny5 and Tiny5 Duo |
Where the default sits
Every axis has a default position, the style a program shows when nothing else is asked for. Of the 545 weight axes whose default we could read from the file, 365 (67%) default to 400, the regular weight; of the others, 152 start at the lightest weight of their range. A browser that loads such a file without a weight setting shows that default, which is why this site always measures at 400 rather than at the default.
Beyond 100 and 900
The weight scale is nominally 1 to 1000, and a few families use its edges. In 18 families the weight axis runs past 900, among them Afacad Flux, Ancizar Sans and Cairo; ten start below 100, such as Google Sans Flex and Hepta Slab. For these families, too, every measurement on this site is taken at weight 400, so their extremes do not move their figures.
Measuring a variable font
A variable family has no single regular file to measure, so this site reads its outlines at weight 400 (or the nearest weight its axis allows) with every other axis at its default. That keeps variable and static families comparable. The type finder can filter by any axis held by three or more families.
Sources
Family metadata (METADATA.pb) and font files from the google/fonts repository as of 28 October 2026; all measurements computed by this site as described in How we measure.