OTF to WOFF2
An .otf font usually carries PostScript-flavoured CFF outlines, and WOFF2 can wrap those directly. No conversion to TrueType is needed or wanted: the CFF table is Brotli-compressed as it stands and comes back unchanged when the browser decodes it. This page runs the reference Google WOFF2 encoder on your file locally, then decodes the result and checks it against the original before you can download it.
Drop OpenType (.otf) 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.
Why this does not touch your outlines
Some converters turn an OpenType font into TrueType on the way to WOFF2. That redraws every curve and throws away the PostScript hinting, and it is never necessary: WOFF2 was designed to carry CFF fonts unchanged, and every browser that supports WOFF2 renders them.
The WOFF2 transform that rewrites outline tables applies only to TrueType "glyf" and "loca" data. For a CFF font, the outline table is compressed as-is, which is why the decoded font matches yours exactly.
How much smaller to expect
CFF outlines are already compact, so an .otf usually shrinks a little less under WOFF2 than a comparable .ttf does. The download is still the smallest web format for that font, and the result row shows the exact saving on your file.
If the file is still too large, compression is not the lever: subsetting is. The subsetter removes the glyphs you will never render and keeps the CFF outlines of the rest.
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. |
| Outline hinting (PostScript hints in CFF, or TrueType bytecode) kept | Preserved unchanged. CFF outlines are not converted to TrueType, so their hints stay with them. |
| 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 WOFF2 is a different layout. |
When it does not work
- The inspector says your .otf has TrueType outlines.
Why: The .otf extension is often used for any OpenType font, whichever outline model it holds, so some .otf files contain "glyf" outlines.
Fix: Nothing to fix: the WOFF2 keeps whatever outlines the font has. TrueType outlines get WOFF2's reversible glyf transform and usually compress further.
- "WOFF2 encoding failed" on an OpenType font that installs fine.
Why: The font's table directory is inconsistent, for example two tables overlapping in the file or a length running past the end, which desktop systems often tolerate.
Fix: Run it through the inspector to see which table is damaged, then re-export the font from its source.
- Text looks different in the browser than in your design app.
Why: Usually a weight or style mismatch in CSS: the browser synthesises bold or italic when font-weight or font-style does not match the face, which the WOFF2 file itself cannot cause.
Fix: Compare the font in the previewer, and give each face its own @font-face rule with the matching font-weight and font-style.
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 WOFF2OTF to WOFF
Wrap OpenType (.otf) fonts as WOFF 1.0 in your browser. CFF outlines, hinting and licence strings are kept unchanged, the output is verified, and no file is uploaded.
Open: OTF to WOFFSubsetter
Subset fonts in your browser with HarfBuzz hb-subset. Keep pasted text, whole Unicode blocks or standard web ranges. Layout closure is preserved and licence strings are kept.
Open: SubsetterOTF to TTF
Convert OpenType/CFF fonts to real TrueType in your browser. Outlines are genuinely redrawn from cubic to quadratic curves to a stated tolerance, not renamed. Nothing is uploaded.
Open: OTF to TTF