WOFF2 to TTF

A WOFF2 file is a complete font wrapped in a Brotli-compressed container with a reversible transform applied to its outline tables. Decoding it gives you back the installable font that was compressed in the first place — the same glyphs, the same kerning, the same licence strings. This page does that decoding locally, using the reference Google WOFF2 decoder compiled to WebAssembly, and then re-parses the result before handing it to you.

Drop WOFF2 files 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.

You may get an .otf rather than a .ttf

WOFF2 can wrap either TrueType outlines or CFF/PostScript outlines. If the font inside yours is CFF, the honest decoded result is an OpenType .otf file, and that is what you will get — clearly labelled. Renaming it to .ttf would produce a file whose extension lies about its contents, which is the single most common defect in the converters this one is meant to replace.

Both extensions install on macOS, Windows and Linux, and both load in every current browser.

When this is the right tool

You have a web font on a site and need the installable original for a mock-up in a design tool.

You need to inspect what is actually inside a WOFF2 file — its family name, its licence text, its embedding permissions — before deciding whether you may use it.

You are auditing a font pipeline and want to confirm that a WOFF2 build round-trips to the same coverage as the source.

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.

Conversion compatibility for WOFF2 to TTF
PropertyOutcome
Glyph outlines keptByte-identical. The outline tables are copied, not redrawn.
Character map (cmap) keptEvery code point keeps the same glyph id. Verified after every conversion.
Family, version, copyright and licence strings keptPreserved exactly and re-checked against the input.
OS/2 embedding permissions (fsType) keptPreserved. Glyph Batch never clears a vendor restriction bit.
OpenType layout (GSUB, GPOS, GDEF, kern) keptPreserved unchanged, so ligatures and kerning behave identically.
TrueType hinting (fpgm, prep, cvt, gasp) keptPreserved unchanged.
Variable font tables (fvar, gvar, avar, HVAR, STAT) keptPreserved unchanged; the output stays variable.
Colour tables (COLR, CPAL, sbix, CBDT, SVG) keptPreserved unchanged.
DSIG digital signature partialKept in the file but no longer valid: the signature covers the original byte layout, and the decoded sfnt is a different layout.

When it does not work

"Not a WOFF2 file: missing the wOF2 signature."

Why: The file is named .woff2 but its first four bytes are something else — often a plain WOFF 1.0 file, or an HTML error page saved by a download that failed.

Fix: Open the file in the inspector, which reports the container it really is, then use the matching route.

"WOFF2 decoding failed" on a file that works in a browser.

Why: Browsers accept some WOFF2 files that the reference decoder rejects, usually because a table length in the header does not match the transformed data.

Fix: The file is malformed even though it happens to render. Re-export it from the original font rather than shipping it.

The decoded file will not install on your operating system.

Why: Some web fonts are heavily subsetted and no longer contain the tables a desktop installer requires, or their OS/2 fsType forbids installation.

Fix: Check the inspector's embedding permissions panel. A subsetted web font is not a substitute for the licensed desktop font.

Related

  • Inspector

    Read everything inside a font file in your browser: family and PostScript names, version, copyright and licence text, OS/2 embedding permissions, variation axes, colour tables and the full table directory.

    Open
  • Glyph coverage

    See exactly which characters a font covers, grouped by Unicode block. Paste text to find missing characters before they render as tofu, and export a CSS unicode-range.

    Open
  • 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