CometWebResearch pack

WOFF2 vs TTF: how I measured 13 fonts

Maciej Zmitrukiewicz · Research pack

This is the material behind the article WOFF2 vs TTF: which file belongs on your site. I took 13 fonts from the macOS system font folder in September 2026 and converted each one to WOFF2 to see how much smaller it gets.

What I looked at

For every font I recorded the original file size, the size of a full WOFF2 made with fontTools, and the size of the same original compressed with plain Brotli at quality 11. The WOFF2 is a straight conversion: no subsetting, no hint removal and no pinned axes, so the only change is the format.

The plain Brotli file lets you split the compression gain from the format gain. Each record also notes the outline type (TrueType glyf or CFF), whether the font is static or variable, the glyph count and whether it had a DSIG table.

I then loaded Georgia as TTF and as its own WOFF2 in Chrome on macOS, drew two test strings on a canvas and compared the width and the pixels.

Every reduction uses the same formula: (baseline bytes − output bytes) / baseline bytes × 100, where the baseline is either the original or the plain Brotli file.

Results

FontOutlinesOriginal (B)WOFF2 (B)ReductionWOFF2 vs Brotli
Arial Unicodeglyf23,278,00811,357,64851.2%+12.1%
SF Pro (variable)glyf8,333,9642,757,52466.9%+0.8%
Georgiaglyf379,588110,84070.8%+15.0%
Verdanaglyf186,18878,64857.8%+13.2%
Times New Romanglyf824,920361,81656.1%+10.4%
Courier Newglyf684,624310,38454.7%+11.7%
Noto Sans Lycianglyf4,5562,20051.7%+14.1%
Noto Sans Phoenicianglyf6,2523,47644.4%+7.8%
Noto Sans Thaanaglyf18,7928,20056.4%+9.8%
Noto Sans JavaneseCFF86,94438,82855.3%−0.0%
Noto Sans TifinaghCFF24,95613,30446.7%−0.7%
Noto Sans Canadian AboriginalCFF41,46823,78842.6%+0.9%
Noto Sans SiddhamCFF94,40850,09246.9%+0.9%

A positive value in the last column means the WOFF2 is smaller than plain Brotli of the same original. Across all 13 fonts WOFF2 cut the file by 42.6–70.8%, with a median of 54.7%.

In the browser check Georgia drew identically in both formats: 429.805 px wide at 28 px and 328.633 px wide at 16 px, with 0 differing canvas pixels in both strings. The strings covered Polish diacritics, the euro sign, an en dash, an ellipsis, ligatures and kerning pairs.

One mistake I removed

My first run also included Athelas.ttc and showed a 94.5% reduction. A .ttc file is a collection of four faces, and the WOFF2 held only one of them, so I was comparing a 2.3 MB collection with a 127 KB single face. I dropped it from the set, because a collection has no single face to compare against. The article opens with this mistake for that reason.

What this data can't tell you

Files

The font files themselves are licensed by their suppliers, so they aren't in the pack.

To run it again on a Mac, install fonttools[woff] (I used fontTools 4.65.0, Brotli 1.2.0 and Python 3.14; the browser check ran in Chrome 152) and run python3 measure.py. Another macOS release ships other font versions, so your byte counts will differ slightly.

Back to the article