WOFF2 to TTF Converter
Decompress WOFF2 fonts back to TTF format.
WOFF2 to TTF Converter converts font files between TTF, OTF, WOFF, WOFF2, and Base64 CSS definitions locally in your web browser. Font data processing runs entirely on your device without transmitting files over the network.
Runs in your browser- Privacy
- Runs entirely in your browser — nothing is uploaded
- Cost
- Free, unlimited, no sign-up
What WOFF2 does to a font
WOFF 2.0 packages an sfnt font for delivery, and it does two things WOFF 1.0 does not. It compresses the whole font with Brotli rather than compressing each table separately with zlib, and it applies a reversible preprocessing transform to the glyf, loca and hmtx tables before compression. The transform re-encodes point coordinates, flags and bounding boxes into separate streams that the entropy coder models far better than the raw table does. The W3C describes the goal as "improved compression and thus lower use of network bandwidth, while still allowing fast decompression even on mobile devices".
Every one of those steps is defined to run backwards. Decoding reconstructs the original tables, so unwrapping a WOFF2 gives you the same font data that was packaged, not a re-rendered approximation of it.
The glyf transform only applies to TrueType outlines. A CFF-flavoured font is stored with the null transform and simply Brotli-compressed, which means decoding a PostScript-outline web font hands you an OTF. That is the usual reason a "WOFF2 to TTF" result does not look like a TTF: nothing went wrong, the source was never TrueType. Converting it properly is an OTF to TTF job, and unlike this step it is lossy.
What you get back is the subset, not the family
One thing no decoder can undo is subsetting. Web fonts are usually cut down before they are packaged: the build strips glyphs the site never renders, often drops GSUB and GPOS layout features it does not use, and sometimes removes hinting to save bytes. Decoding the web font returns exactly that subset. If the file you pulled off a site carries 240 glyphs, the family it came from may have had two thousand, and the missing ones are not recoverable from the file you have.
WOFF2 also has a collection directory, so a single .woff2 can wrap several faces that share tables, the same arrangement a .ttc uses on the desktop. Decoding one of those yields a collection rather than a single font, and tools that assume one face per file will take only the first.
| Format | Outline data | Compression | Where it belongs |
|---|---|---|---|
.ttf TrueType | Quadratic curves in the glyf and loca tables | None | Desktop installation, Android build pipelines, tools that only read glyf |
.otf OpenType with PostScript outlines | Cubic curves in a CFF or CFF2 table | None | Desktop installation, print and design applications |
.woff WOFF 1.0 | Whichever of the two the wrapped font already used | zlib, applied to each table separately | A fallback source for browsers too old for WOFF2 |
.woff2 WOFF 2.0 | Whichever of the two the wrapped font already used | Brotli over the whole font, after a reversible transform of glyf, loca and hmtx | The format to actually serve on the web |
.eot Embedded OpenType | Either, wrapped in a Microsoft-specific container | Optional MicroType Express | Internet Explorer 8 and earlier. A W3C Member Submission that never became a standard |
.ttc / .otc collection | Either, with tables shared between several faces | None on its own, though WOFF2 can wrap a collection | Shipping a whole family in one file, common for CJK fonts |
When you need the TTF at all
- Installing the face locally so a mockup matches what the browser renders.
- Opening it in a font editor or inspector with no WOFF2 support.
- Feeding a renderer, PDF library or build step that only reads sfnt files.
- Reading the
name,headandOS/2tables to identify the font and its embedding permissions.
If the goal is the opposite direction, packaging a desktop font for the web, start at TTF to WOFF2 instead. Round-tripping a font through WOFF2 and back gains nothing.
Related font conversions
- WOFF to TTF for the older zlib-based container.
- TTF to WOFF2 to package a font for delivery.
- OTF to TTF when the decoded file is CFF-flavoured.
- Font to Base64 to inline a small face into a stylesheet.
- Format hubs: WOFF2, TTF, WOFF and OTF.
Frequently asked questions
Is my font file uploaded anywhere?
What is the difference between OTF and TTF?
Is converting a font lossless?
Am I allowed to convert a commercial font?
Can I convert an EOT or TTC file here?
How to use the woff2 to ttf converter
- 1Select your font file — the file stays on your device and is never uploaded.
- 2Press Run, then download the result when it is ready.
Sources & specifications
Embed this tool
Put the working woff2 to ttf converter on your own site. It runs in your visitors' browsers exactly as it does here — free, no account, nothing uploaded.
Share this tool
Related tools
Last updated
More developer tools