WOFF to TTF

WOFF 1.0 is the simplest of the web font formats: every table from the original font is stored individually, either raw or zlib-deflated, and nothing about the table contents changes. Unwrapping one is genuinely lossless — the tables that come out are the tables that went in, byte for byte. This page does that in your browser and proves it by re-reading the result.

Drop WOFF 1.0 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.

WOFF 1.0 also carries metadata most tools throw away

The WOFF specification defines an optional extended-metadata block, an XML document where a foundry can record the vendor, the licence and the credits. Glyph Batch decodes it, shows it in the inspector, and carries it forward when you re-encode to WOFF rather than silently dropping it.

If you actually wanted WOFF2

WOFF 1.0 uses zlib; WOFF2 uses Brotli plus a transform on the outline tables, and is typically 25-30% smaller again. Every browser released in the last eight years supports WOFF2. Unless you are supporting something genuinely ancient, WOFF 1.0 is a fallback you probably do not need.

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 WOFF 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

"WOFF table could not be decompressed."

Why: A table's stored bytes are not valid zlib data. The file was truncated in transit or edited by a tool that miscalculated a length.

Fix: Re-download the file. If it fails again, the file on the server is corrupt.

The output is an .otf, not a .ttf.

Why: The WOFF wrapped CFF/PostScript outlines. That makes the correct unwrapped file an OpenType .otf.

Fix: Nothing to fix — use the .otf. It installs and loads everywhere a .ttf does.

Checksum warnings appear after decoding.

Why: Whatever produced the WOFF stored table checksums that do not match its own table data.

Fix: Usually harmless, but it tells you the pipeline that made this file is not writing correct fonts. Glyph Batch writes correct checksums on output.

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