How to Convert TTF to WOFF2 — Your Options Explained
- WOFF2 is a compressed web font format that can reduce font file sizes by 30% compared to WOFF.
- Browser-based converters that handle WOFF2 natively are rare because WOFF2 requires Brotli compression support.
- The most reliable WOFF2 converter is the fonttools Python library — free, offline, and widely used by web developers.
Table of Contents
WOFF2 is the most efficient web font format available. It uses Brotli compression — the same algorithm browsers use for HTTP responses — and typically shaves 20–30% off an already-compressed WOFF file. Most modern browsers support WOFF2 natively, which is why it's the preferred format for web font delivery today.
The challenge: generating WOFF2 files requires Brotli encoding, which is more complex than the simple zlib compression WOFF uses. Browser-based converters that produce WOFF2 are less common as a result.
The WildandFree Font Converter handles TTF, OTF, and WOFF conversions. For WOFF2 specifically, the standard tool is fonttools — a free, offline Python library. This guide covers both paths.
Why WOFF2 Is Worth the Extra Step
The web font format progression looks like this:
- TTF/OTF — desktop formats. Large files (50–300KB typical). Used in CSS for compatibility only.
- WOFF — compressed with zlib. Typically 40–60% smaller than the equivalent TTF. Supported everywhere.
- WOFF2 — compressed with Brotli. Typically 20–30% smaller than WOFF. Supported in all modern browsers (Chrome 36+, Firefox 39+, Safari 10+, Edge 14+).
For a project serving millions of page views, the WOFF2 reduction meaningfully impacts load times. For a small site, WOFF is fine and skips the conversion complexity.
If you need both formats for maximum compatibility, the standard pattern is:
@font-face {
font-family: 'MyFont';
src: url('font.woff2') format('woff2'),
url('font.woff') format('woff');
}
Browsers take the first format they support. Modern browsers use WOFF2; older ones fall back to WOFF.
Step 1: Convert Your Font to WOFF in the Browser
If you're starting from a TTF or OTF file and need WOFF first, the font converter handles this directly in your browser. No upload, no install:
- Drop your TTF or OTF file onto the converter
- Select WOFF as the output format
- Download the converted file
If you only need WOFF (not WOFF2), you're done. If you need WOFF2 as well, continue to the next step.
Sell Custom Apparel — We Handle Printing & Free ShippingStep 2: Convert to WOFF2 Using fonttools
fonttools is a free Python library maintained by the type engineering community. It's the reference implementation used by Google Fonts, Adobe, and font professionals worldwide.
Install it:
pip install fonttools brotli
The brotli package is required for WOFF2 output. Then convert:
# TTF to WOFF2 python3 -m fonttools ttLib.woff2 compress input.ttf # This produces input.woff2 in the same directory
For OTF input:
python3 -m fonttools ttLib.woff2 compress input.otf
For batch conversion of a directory:
for f in fonts/*.ttf; do python3 -m fonttools ttLib.woff2 compress "$f" done
fonttools is available on macOS, Windows, and Linux. On macOS, if you use Homebrew: brew install python then pip3 install fonttools brotli.
Verifying Your WOFF2 File
After conversion, compare file sizes:
ls -lh input.ttf input.woff input.woff2
A healthy conversion produces WOFF2 roughly 50–70% the size of the original TTF. If WOFF2 is larger than WOFF, something went wrong — usually a missing or incorrect Brotli installation.
To verify the WOFF2 is valid before deployment, open it in a browser using a local @font-face CSS rule and confirm the text renders correctly.
When to Use WOFF vs WOFF2 (Practical Decision)
Use WOFF only when: your target audience includes significant older browser usage, or you want the simplest possible setup with no Python tooling.
Use WOFF2 as primary, WOFF as fallback when: you care about page performance and your audience is primarily modern browsers (which covers 95%+ of traffic for most sites today).
Use WOFF2 only when: you've confirmed your audience analytics show negligible legacy browser usage and you want to minimize HTTP requests.
The two-format @font-face stack (WOFF2 + WOFF) covers essentially all browsers since 2013 and is the safest general-purpose approach.
Convert TTF and OTF to WOFF Free
Our browser-based converter handles TTF ↔ OTF ↔ WOFF. For WOFF2, follow the fonttools steps above — both tools are free and process files locally.
Open Font ConverterFrequently Asked Questions
Can I convert TTF to WOFF2 online without installing Python?
A few online tools offer WOFF2 conversion, but browser-based WOFF2 generators are rare because Brotli compression is computationally expensive in the browser. If you need WOFF2 regularly, installing fonttools (a one-time 2-minute setup) is the most reliable path.
Why is WOFF2 smaller than WOFF?
WOFF uses zlib compression (the same as gzip). WOFF2 uses Brotli, a newer algorithm developed by Google that achieves significantly better compression ratios on structured binary data like font outlines.
Do I need both WOFF and WOFF2?
For maximum compatibility, yes — the @font-face src stack lets modern browsers use WOFF2 while older ones fall back to WOFF. If your analytics show 95%+ modern browser usage, WOFF2-only is acceptable.

