Font Converter & Subsetter
Runs in your browserConvert between TTF, OTF, WOFF, and WOFF2, and subset fonts to cut web font weight by up to 95%. Runs entirely in your browser.
How It Works
Upload a font
Drop a .ttf, .otf, .woff, or .woff2. The file stays in your browser — nothing is uploaded.
Pick format & subset
Choose WOFF2 for web or TTF/OTF for desktop. Optionally keep only the Unicode ranges or exact characters you need.
Download
Get your converted font with a before/after size comparison. Ready to self-host with @font-face.
Frequently Asked Questions
What's the difference between TTF, OTF, WOFF, and WOFF2?
TTF and OTF are uncompressed desktop font formats (TrueType and OpenType/CFF). WOFF is a compressed web wrapper around those tables. WOFF2 uses Brotli compression — roughly 30% smaller than WOFF and ~50% smaller than raw TTF. For web, WOFF2 is what you want.
Why would I subset a font?
Most fonts ship 500–20,000 glyphs. A single language site needs maybe 100–300. Subsetting to just the characters you use often cuts font file size by 70–95% — one of the biggest wins for page load performance.
Which Unicode ranges should I include?
For English-only sites, Basic Latin is enough. For most European languages, add Latin-1 Supplement and Latin Extended-A. Use the custom characters field to include specific punctuation (em dash, curly quotes) or a headline string exactly.
Does subsetting break font features like ligatures or kerning?
Basic ligatures (fi, fl) only work if the glyphs for both input characters are kept. Kerning pairs are automatically preserved. Advanced OpenType features (small caps, alternates) survive as long as you keep the contextual glyphs.
Is my font uploaded anywhere?
No. Parsing, subsetting, and WOFF2 compression all run in your browser via opentype.js and a WebAssembly build of Google's woff2 encoder. Your font never leaves your device.
What's a good self-host @font-face setup?
Convert to WOFF2 only (~97% browser support as of 2026), use `font-display: swap;` for fast fallback rendering, and subset to the characters you actually render for the biggest speed win.