Convert WOFF2 to TTF (Unpacking a Browser Font for Desktop Use)
What a WOFF2 decoder can restore exactly, when a TTF result is the wrong format, and why a web font is often smaller than the desktop font inside it.
- Add a file Choose or drop it here
- Pick the format Change it whenever needed
- Download the result After conversion completes
A WOFF2 File Is a Browser Delivery Package, Not a Desktop Font Folder
WOFF2 means Web Open Font Format 2.0, a format made to send fonts through a CSS @font-face rule. It became a W3C Recommendation in March 2018, after browsers had already begun using it. A file begins with the four-byte signature wOF2, then carries a directory describing the font tables and one compressed data stream. The tables are the familiar parts of an OpenType-style font: names, character mapping, layout rules, metrics, and usually the outlines that draw each glyph. A browser decodes those pieces temporarily so it can paint text for the page that requested them. The WOFF specifications say these linked fonts are not meant to be exposed as installable system fonts, which explains why double-clicking a .woff2 file normally does not add it to a desktop font menu.
A TTF is different in purpose. It is a normal sfnt font file with TrueType outlines in its glyf table and the matching locations in loca; operating-system font APIs and many desktop programs know that structure directly. The conversion is useful when a legitimately obtained web-font file must be inspected, installed where its licence allows, or supplied to software that accepts TTF but not web-font wrappers. It does not grant a licence to use a font that the designer licensed only for web delivery. Also, a web file can be deliberately subsetted: it may contain Latin letters used by one site but omit other languages, alternate glyphs, or full font-family members. Converting that subset into TTF preserves what is actually in the file; it cannot restore characters that were removed before WOFF2 packaging.
When Unpacking WOFF2 Really Is a Lossless TrueType Reconstruction
The key fact is the font's flavor, stored in the WOFF2 header. A TrueType-flavored web font represents its outlines as the usual quadratic curves and table set used by a TTF. In that case, a proper decoder first expands the Brotli-compressed stream, then reverses any WOFF2 table transforms, and finally writes a normal sfnt table directory. WOFF2 may specially transform glyf, loca, and hmtx tables before compression because their structure contains repeated patterns. The specification requires a transformed loca entry to sit immediately after its paired glyf entry; the loca data itself takes zero bytes in that transformed stream because the decoder rebuilds it from the reconstructed glyph data.
That is unpacking, not type design. Glyph outlines, Unicode mappings, kerning and OpenType layout tables can survive unchanged when the source is a sound TrueType-flavored WOFF2 and the conversion tool only performs the specified reverse steps. The result does become much larger because the compact Brotli stream has been expanded into separately addressable sfnt tables, usually with four-byte alignment between them. It may not be byte-for-byte identical to the original desktop font that was used before web packaging. The WOFF2 specification explicitly notes that several valid representations of glyph outline points can render identically, so reconstructed glyf bytes can differ even though the letters look the same. That difference is not proof of a damaged conversion; visual and table validation matter more than comparing file hashes with an unavailable original.
Specific Things a TTF Export Adds, Preserves, or Cannot Bring Back
- Gain — desktop-facing packaging: a TrueType-flavored result can be handed to software that reads raw sfnt/TTF files, whereas WOFF2 was defined for linked web documents rather than system installation.
- Preserve — the existing glyph set: decompression does not invent or redraw letters; a web subset remains a subset, including any missing accented characters or weights.
- Lose — WOFF2's transfer-size advantage: Brotli compression and optional table transforms are removed when a raw TTF is reconstructed, so a larger file is the expected outcome.
- Risk — a CFF source is not secretly TTF: if the WOFF2 header identifies CFF outlines rather than TrueType outlines, making a TTF requires cubic-to-quadratic outline conversion; extracting an OTF is the faithful route.
- Lose — web-wrapper-only material: WOFF2 can contain separate metadata and private-data blocks; a plain TTF does not use the WOFF2 wrapper, so those wrapper blocks are not part of the installed font.
- Gain — direct validation options: a raw TTF can be checked by font tools for its
cmap,name,glyf, and layout tables instead of being tested only through a browser.
The Compatibility Split Between Browser Support and TTF-Aware Programs
WOFF2 support is excellent in current browsers, but its age boundaries still matter for an old embedded browser or an archived application. The W3C implementation report lists Chrome and Chrome for Android 36 and later, Firefox 39 and later, Edge 14 and later, Safari 10 on macOS Sierra or later, and iOS Safari 10.2 and later. WOFF2 was therefore a sensible primary format for current websites, not a promise that every program which handles fonts would recognize a .woff2 filename. A TTF is useful for programs built around desktop font tables, such as font inspectors or older layout and machine-control software, but it should not replace WOFF2 on a modern website merely to make the source easier to install.
There is another compatibility boundary inside the file. WOFF2 can package both TrueType-flavored and CFF/OpenType-flavored fonts; the header flavor tells a decoder which kind of sfnt data lies inside. The common TrueType flavor value is 0x00010000; a CFF-flavored OpenType font uses the tag OTTO. Sending an OTTO font through a “WOFF2 to TTF” tool can force a more invasive conversion than users expect, because CFF uses cubic curves while TTF uses quadratic curves. If the goal is simply to recover a CFF web font for desktop use, choose WOFF2 to OTF when available. A correctly chosen target is more compatible than a target selected only because “TTF” is a familiar extension.
Why a Converted TTF Can Install but Still Fail to Solve the Actual Problem
A frequent problem is an installed TTF that appears under its family name but lacks the character a document needs. This is usually not an installation failure. Web publishers often subset fonts to reduce downloads, and the converted TTF can only contain the cmap character mappings that were sent to the browser. Check the missing character in a font viewer or a font-inspection tool; if it is absent there, obtain the complete licensed desktop font rather than trying another converter. A second issue is a file that a converter rejects as malformed even though a website appeared to use it. The WOFF2 specification says that a failed compressed-data decode, an unknown table transform, or inconsistent declared data lengths makes the font invalid and it must not be loaded; a permissive browser cache or a different font fallback can make the original symptom confusing.
A third source of confusion is font collections. A WOFF2 header can use the flavor ttcf for a collection containing several nested fonts, with shared tables stored only once. The specification requires the decoder to restore the collection with the same number and order of fonts. That output is conceptually a collection, not one single TTF face, so a converter that offers only one TTF download may select one face or may not support the input. Use a tool that reports the collection members or obtain individual family files. Finally, if a document displays the wrong weight after installation, compare the name and style fields rather than judging by the filename: websites commonly use separate subset files for 400, 500, 700, italic, and other style instances, and installing only one of them does not create the missing faces.
WOFF2 Wrapper and Reconstructed TTF Compared by Their Actual Parts
| Check | WOFF2 source | TTF result |
|---|---|---|
| File signature | wOF2 (0x774F4632) | Usually TrueType sfnt flavor 0x00010000 |
| Web compression | One Brotli-compressed font-data stream | None; readable sfnt tables and padding |
| Glyph-table handling | glyf/loca may use a WOFF2 transform | Normal reconstructed glyf and loca tables |
| Normal destination | CSS @font-face in a browser | Desktop font APIs and TTF-aware software |
| Subset recovery | May already omit unused glyphs | Same subset; conversion adds no characters |
| Collection marker | ttcf flavor can hold multiple fonts | Should restore a collection, not one arbitrary face |
Questions Readers Ask Before Unwrapping a WOFF2 Font Into TTF
Will WOFF2 to TTF make the font look different?
Not when the WOFF2 contains TrueType outlines and the tool is only decoding the wrapper. The normal reverse process restores font tables; it does not redesign letters. A CFF-flavored source is the exception because producing TTF then requires outline conversion.
Why is the TTF much bigger than the WOFF2 file?
WOFF2 stores its font data in a Brotli-compressed stream and can use special transforms for TrueType glyph, location, and metrics data. A TTF exposes the rebuilt tables in raw sfnt form, so it gives up that delivery compression.
Can conversion restore all languages from a small web font?
No. A subset web font may have been created with only the characters a site uses. The converted TTF preserves those mappings but cannot recover glyphs that were not included in the downloaded WOFF2.
My converter says the WOFF2 is invalid. Should I rename it to .ttf?
No. Renaming changes only the filename, not the wOF2 container. A standards-compliant decoder must reject failed decompression, unknown transforms, and inconsistent data lengths; obtain the file again or use the original licensed source.
Should a CFF-flavored WOFF2 become TTF or OTF?
Use OTF for faithful extraction where possible. Its OTTO flavor describes CFF outlines already; TTF requires those cubic outlines to be approximated as quadratic ones.