Your files never leave this device — 100% in-browser

TTF to WOFF2 Converter

Compress desktop fonts into WOFF2 for the web using Google's own encoder — running as WebAssembly on your device, so licensed fonts never leave it.

Google's reference woff2 encoder — compiled to WebAssembly — compresses your TTF/OTF by 50–60% right in this tab, and every output is test-loaded with the FontFace API before download. Your licensed font never touches a server, which is exactly how converting licensed software should work.

Last verified 2026-08-15 — this tool passed 85 automated end-to-end checks

→ WOFF
Drop .ttf / .otf fonts here, or click to browse
converts to WOFF2 · TTF & OTF accepted · verified output
01 — LICENSE-SAFE
Commercial fonts are licensed files. Converting locally means your purchased fonts are never transmitted to anyone's server.
02 — REAL ENCODER
This is google/woff2 — the reference Brotli encoder — compiled to WebAssembly, not an approximation. Same bytes you'd get from the CLI.
03 — VERIFIED
Each converted font is test-loaded with the FontFace API in your browser before you download it — you see "verified loadable" on the file.

How to use

  1. Drop your file(s) into the box above — or click it to browse.
  2. Conversion starts immediately; the tabs switch to a different output format.
  3. Click Download on each finished file — or Download all (.zip) for a batch. Nothing was uploaded at any point.

Why WOFF2 is the only web font format you need

WOFF2 wraps your font's tables in Brotli compression, cutting a typical TTF by 50–60% — this page shows the exact saving per file. Every browser that matters has supported it since 2018 (Chrome 36, Firefox 39, Safari 10, Edge 14), which is why modern best practice is a single @font-face source:

@font-face { font-family: 'YourFont'; src: url('yourfont.woff2') format('woff2'); font-display: swap; }

No TTF fallback chain, no EOT relics — one line, one file, fastest possible font load.

Web font container formats
TTF/OTFWOFFWOFF2
CompressionNonezlib (per table)Brotli + transforms
Size vs TTF100%~60–70%~40–50%
Browser supportWorks but wastefulIE9+ era universalAll modern (2018+)
Use todayDesktop installsLegacy-only fallbackThe standard choice

The licensing question nobody skips twice

A font is software with a license. Most commercial desktop licenses (MyFonts, foundry direct) do not include web embedding — that's typically a separate webfont license. Converting the file is trivial; the right to serve it from your site is a legal question only your license answers. Google Fonts and other open-licensed fonts (OFL) are explicitly fine to convert and self-host — in fact self-hosting them via WOFF2 is the current performance recommendation.

This converter runs entirely on your device partly for that reason: your font files are licensed goods, and they shouldn't be uploaded to a random server just to change container format.

When NOT to convert TTF to WOFF2

  • Fonts for desktop app bundles or documents — installers, Office and design tools want TTF/OTF; WOFF2 is web-only.
  • When your license forbids web embedding — the conversion works; serving it may not be legal. Check first.
  • Hoping for subsetting — this tool converts the complete glyph set. Stripping unused glyphs (a separate, bigger optimization for CJK fonts) needs a subsetting tool like pyftsubset.

Frequently asked questions

Does this work with OTF fonts?

Yes — both TrueType-flavored (.ttf) and CFF-flavored (.otf) fonts convert; WOFF2 is a container around either.

How is the font "verified"?

After conversion, the file is loaded through your browser's FontFace API — the same code path that renders web fonts. If it parses and loads, you'll see the verified mark.

Is my commercial font uploaded anywhere?

No — the Brotli encoder runs as WebAssembly inside your browser. That matters for licensed fonts: they never leave your machine.

Why is my Korean font still large after conversion?

CJK fonts carry thousands of glyphs; compression alone only goes so far. The next step is subsetting to the characters you actually use — a different tool's job.