TTF to WOFF
WOFF 1.0 wraps a desktop font for the web by compressing each of its tables individually with zlib. Nothing inside the tables changes, which is why the format is so dependable: the browser inflates the tables and gets back exactly the font you started with. This page builds that wrapper locally, then unwraps its own output and checks the glyphs, character map, names and embedding flags against your original before offering the download.
Drop TrueType or OpenType files or folders here, or choose them.
Everything runs in this tab. Detecting device capabilities…
Files are read and processed in this browser tab. Nothing is uploaded — the page’s Content-Security-Policy blocks connections to any other origin.
WOFF or WOFF2?
For a site you are building today, WOFF2 is normally the better file: it uses Brotli plus a transform on the outline tables, and every current browser supports it. The TTF to WOFF2 page builds that instead.
WOFF 1.0 still earns its place as the second source in an @font-face rule for older browsers and embedded web views that predate WOFF2, and in toolchains, email builders and CMS themes that accept .woff but not .woff2. The web-font pack generator writes both formats and the CSS that lists them in the right order.
What the conversion does to your font
Each table is deflated at the highest zlib level and stored next to its original length and checksum, so a decoder can prove it got the same bytes back. Tables that do not shrink are stored uncompressed, as the WOFF specification allows.
Outlines are not touched. A TrueType font stays TrueType and an OpenType/CFF font stays CFF, so hinting, kerning, ligatures, variation axes and colour glyphs behave exactly as they did in the desktop file.
What survives this conversion
Every row below is checked automatically against your own file after conversion. If any check fails the output is discarded rather than offered for download.
| Property | Outcome |
|---|---|
| Glyph outlines kept | Byte-identical. The outline tables are copied, not redrawn. |
| Character map (cmap) kept | Every code point keeps the same glyph id. Verified after every conversion. |
| Family, version, copyright and licence strings kept | Preserved exactly and re-checked against the input. |
| OS/2 embedding permissions (fsType) kept | Preserved. Glyph Batch never clears a vendor restriction bit. |
| OpenType layout (GSUB, GPOS, GDEF, kern) kept | Preserved unchanged, so ligatures and kerning behave identically. |
| TrueType hinting (fpgm, prep, cvt, gasp) kept | Preserved unchanged. |
| Variable font tables (fvar, gvar, avar, HVAR, STAT) kept | Preserved unchanged; the output stays variable. |
| Colour tables (COLR, CPAL, sbix, CBDT, SVG) kept | Preserved unchanged. |
| DSIG digital signature partial | Kept in the file but no longer valid: the signature covers the original byte layout, and WOFF is a different layout. |
When it does not work
- The .woff is only slightly smaller than the .ttf.
Why: zlib is a general-purpose compressor, and some fonts are dominated by data that is already compact, such as embedded bitmaps or colour images.
Fix: Try WOFF2, which compresses outlines far better. If most of the size is glyphs you do not use, subset the font first.
- The browser still downloads the .ttf instead of the .woff.
Why: The @font-face rule lists the TrueType source first, or names the WOFF source without format("woff"), so the browser takes the first entry it understands.
Fix: List WOFF2 first, then WOFF, each with its format() keyword. The web-font pack generator writes that rule for you.
- "This is a TrueType/OpenType Collection" for a file named .ttf.
Why: The file bundles several fonts in one collection and was given a single-font extension. Collections cannot be wrapped as one WOFF.
Fix: Split it into single fonts on the TTC to TTF page, then convert the face you want here.
Related
TTF to WOFF2
Compress TTF or OTF fonts to WOFF2 in your browser using the reference Google encoder. Batch queue, @font-face CSS, preload snippet and ZIP. No upload, no server.
Open: TTF to WOFF2Web-font pack
Turn a font into a deployable web-font pack in your browser: WOFF2 and WOFF files, a correct @font-face rule with unicode-range, a preload snippet and a manifest, all in one ZIP.
Open: Web-font packWOFF to TTF
Unwrap WOFF 1.0 web fonts back to TTF/OTF in your browser. WOFF 1 is a pure container, so the result is table-for-table identical. Nothing is uploaded.
Open: WOFF to TTFFormats
A precise guide to the four font formats: what a container is, what an outline model is, why OTF to TTF is a real conversion and TTF to WOFF2 is not, and which format to ship.
Open: Formats