WOFF to TTF Converter
Convert WOFF web fonts back to desktop TrueType (.ttf) fonts.
WOFF 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
WOFF is a wrapper, not an outline format
WOFF 1.0 does not change the font inside it. The W3C Recommendation defines a container: a 44-byte header, a table directory, the font tables themselves, then an optional extended metadata block and an optional private data block. Each font table may be compressed on its own with the zlib compress2() function, and a decoder reverses that table by table. The specification is explicit that a WOFF file holds the same set of tables as the input font and that a user agent decodes it so the font "will display identically to the input font".
So decoding is not an approximation. The outlines, the cmap, the GSUB and GPOS layout tables and the hinting all come back as the font maker left them. What you do not always get is a byte-identical file: the spec requires the table directory be rebuilt in ascending tag order, and any unreferenced padding between tables in the original is discarded during packaging. The table data matches; the file layout may not.
Why "WOFF to TTF" sometimes gives you an OTF
Because WOFF only wraps, what comes out is whatever went in. If the web font was built from a PostScript-outline family, the sfnt inside carries a CFF table and the OTTO version tag, and the honest extension for the decoded file is .otf. Renaming it to .ttf does not break it, since rasterisers dispatch on the tag in the file rather than the name, but it is mislabelled and a strict validator will say so. If you specifically need quadratic glyf outlines, that is a second and genuinely lossy step: see OTF to TTF.
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.
| 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 unwrapping is the right move
- Installing a face locally to proof a design against the exact file a site is serving.
- Opening the font in an editor or an inspector that cannot read WOFF containers.
- Feeding a build step, an engine or a PDF generator that only accepts sfnt input.
- Checking the
nameandOS/2tables to find out who made the font and what its embedding bits say.
What it is not good for is recovering a commercial font without paying for it. A subsetted, licence-bound web font is not a substitute for the retail family, and the licence travels with the bytes.
Related font conversions
- WOFF2 to TTF for the newer container.
- TTF to WOFF to package a font back up again.
- TTF to WOFF2 for the format worth serving today.
- OTF to TTF when the decoded file turns out to be CFF-flavoured.
- Format hubs: WOFF, TTF, WOFF2 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 woff 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 woff 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