How to woff vs woff2: when to ship both, when to pick one
- Step 1Check your analytics — In Google Analytics or Plausible, segment by browser. If IE11 is under 0.1% of sessions, drop WOFF entirely — the bandwidth saving from a single-format src list outweighs the loss of legacy support.
- Step 2Ship WOFF2-first src lists — When you do ship multiple formats, order is critical: WOFF2 first (modern browsers stop here), WOFF second (IE11), TTF last (truly ancient). The browser walks the list in order — wrong order means modern browsers download the largest format unnecessarily.
- Step 3Drop TTF entirely — TTF in @font-face src is almost always cargo-culting. No browser that lacks WOFF support is still in active use. If you need a desktop fallback, ship a system font stack — don't pay the bandwidth tax of a 200 KB TTF.
Frequently asked questions
Will Safari pick the right format?+
Yes. Every browser checks the format() hint in the src declaration and skips formats it doesn't understand. The first supported format in the list wins.
What happens if I omit format() hints?+
The browser tries each src in order, downloading and parsing each one until it finds one it can render. This wastes bandwidth — always include format() hints (woff2, woff, truetype, opentype).
Are there any browsers that need WOFF but not WOFF2?+
IE11 (still ~0.1% globally), Edge Legacy (deprecated 2021), and some custom embedded WebKit views. For 99% of consumer audiences, WOFF2-only is the right answer.
Should I ship WOFF for older Android browsers?+
Android Browser is essentially dead — Chrome on Android has 99% share and supports WOFF2. The remaining tail is Samsung Internet (supports WOFF2) and pre-2015 stock browsers (negligible traffic).
Privacy first
Every JAD Font tool runs entirely in your browser using opentype.js and the wawoff2 WASM Brotli encoder. Your fonts never leave your device — verified by zero outbound network requests during processing.