Upload WOFF files and pick an output format — WOFF2 is selected by default. Batch supported, free up to 400 MB per file.
For the most common job, use the dedicated WOFF to WOFF2 converter.
.woff onto the page. This is usually a file you self-host, or one you pulled from a site's /fonts directory after finding it in a @font-face rule.If you have the original desktop file instead, the TTF converter and OTF converter go the other way and produce cleaner web fonts, because they start from the foundry's own bytes.
WOFF (Web Open Font Format) became a W3C Recommendation on 13 December 2012, edited by Jonathan Kew of Mozilla, Tal Leming of Type Supply and Erik van Blokland of LettError. It is deliberately not a new way of describing letterforms — the specification calls it "a container format or 'wrapper' for font data in already-existing formats rather than an actual font format in its own right." A WOFF takes an ordinary TrueType or OpenType font, compresses its tables with zlib, and optionally attaches a block of XML metadata for licence and vendor information. In our testing a 203,588-byte OpenType font wrapped down to 94,032 bytes as WOFF — a little over half the original size.
That web-first design is exactly why people convert away from it. A WOFF is excellent inside a browser and awkward everywhere else:
| Format | Standard / origin | Compression | Native browser support | Installs on a desktop | Best for |
|---|---|---|---|---|---|
| WOFF | W3C Recommendation, 13 December 2012 | zlib, plus an optional XML metadata block | ~97% of global traffic (Chrome 5+, Firefox 3.6+, Safari 5.1+, IE 9+) | No — the spec forbids it | A conservative fallback src entry |
| WOFF2 | W3C Recommendation, 1 March 2018 (revised 8 August 2024) | Brotli, plus a font-aware transform | ~96% of global traffic (Chrome 36+, Firefox 39+, Safari 12+, Edge 14+) | No | The primary web font for anything built today |
| TTF | Apple TrueType, shipped 1991; folded into OpenType | None | Works via @font-face but is not the documented path |
Yes | Installing on an operating system; broad app support |
| OTF | Microsoft + Adobe OpenType; ISO/IEC 14496-22 | None | Same as TTF — desktop-oriented | Yes | Design and print work; font editing |
| EOT | Microsoft, 1997; W3C Member Submission 2008, never ratified | Optional MicroType Express | Internet Explorer 6–11 only (~0.3%) | No | Legacy IE intranets and kiosks |
| Property | WOFF 1.0 | WOFF 2.0 |
|---|---|---|
| Compression | zlib (Deflate) applied per table | Brotli, with a MicroType Express-style transform applied first |
| Measured size, same source font | 94,124 bytes | 71,748 bytes — about 24% smaller |
| Published corpus result | Baseline | Median gain of 23.94% over WOFF 1.0 on the Google Fonts corpus, per the W3C WOFF 2.0 Evaluation Report |
| Gain on CFF-flavoured fonts | Baseline | Smaller — a median of 13.51%, because CFF outlines do not benefit from the preprocessing step |
| Global browser support | ~97% | ~96% — the gap is under a percentage point |
| Oldest clients covered | IE 9+, Chrome 5+, Firefox 3.6+ | Chrome 36+, Firefox 39+, Safari 12+, Edge 14+ |
CSS format() keyword |
format("woff") |
format("woff2") |
| Optional metadata block | Yes | Yes |
| Installs as a system font | No | No |
No, and it is worth understanding why. The WOFF specification requires that WOFF files "must not be treated as an installable font format in desktop operating systems," so Windows Font Viewer, macOS Font Book and Linux font managers all refuse them by design rather than by oversight. Convert to TTF or OTF first with WOFF to TTF, then install the resulting file the normal way. Whether you are licensed to do that is a separate question — see the licensing answer below.
About a quarter, in both our measurements and the published data. Converting a 94,032-byte WOFF to WOFF2 produced a 71,660-byte file here — roughly 24% smaller. The W3C's WOFF 2.0 Evaluation Report found a median gain of 23.94% over WOFF 1.0 across 1,654 TrueType-flavoured files in the Google Fonts corpus. Fonts with CFF (PostScript) outlines gain less — a median of 13.51% — because the font-aware preprocessing step that WOFF2 applies does not help CFF data.
The letterforms yes, the whole font no. Outlines are vector data and are never rasterised or resampled, so the glyph shapes are intact. But the converter parses the font and writes a fresh file rather than repackaging the original bytes, so the output carries cmap, the outline table, head, hhea, hmtx, maxp, name, OS/2, post, GSUB and any variable-font or colour tables — while GPOS kerning, GDEF and TrueType hinting instructions are not written out. If you need a byte-faithful desktop copy, obtain the original TTF/OTF from the foundry rather than reconstructing it from a web font.
Not as a metadata block. WOFF can carry an optional XML section describing the vendor, licence and credits; that section is a container feature with no equivalent slot in a bare TTF or OTF, so it does not come across. Licensing strings stored inside the font's own name table — copyright, trademark, licence URL — are part of the font data and are preserved. Keep your original licence documentation regardless; converting a font never grants a right you did not already hold.
Usually yes. WOFF2 is a quarter smaller for the same face and covers roughly 96% of global traffic, so for most audiences one WOFF2 file per weight and style is the whole story. Keep the WOFF only as a second entry in the src list if your analytics show clients older than Chrome 36, Firefox 39 or Safari 12 — the browser picks the first format it understands, so a two-line src costs nothing to visitors that support WOFF2.
.woff2 in by mistake and it failed — why?Because WOFF2 uses Brotli, and the OpenType parser this tool loads reads plain sfnt and zlib-compressed WOFF 1.0 data only; handed a wOF2 signature it stops rather than guessing. That is a parser boundary, not a corrupt file. Use the WOFF2 converter, which is set up for that input, or keep a WOFF or TTF copy of the face for round trips.
A WOFF header, a directory of table records, and the same sfnt tables the source TTF or OTF contained — each compressed independently with zlib, or stored raw when compression would not help. The header records the wrapped font's original flavour (0x00010000 for TrueType outlines, OTTO for CFF), the total uncompressed size, and offsets to the optional metadata and private-data blocks. Because compression is per table, a WOFF can be decoded back to a functionally identical sfnt font without any lossy step.
Technically it is trivial; legally it depends entirely on the licence, and this is the question worth pausing on. A large share of commercial web fonts are licensed for web embedding only — the licence lets a site serve the font to visitors, not install it, redistribute it, or use it for print and design work. The WOFF specification reinforces that boundary in the format itself by prohibiting desktop installation. Open-licence families are the clear exception: anything under the SIL Open Font License or Apache 2.0, which covers most of Google Fonts, is free to convert and install, and for those you are better off downloading the original TTF or OTF from source anyway.
No. WOFF conversion runs in your browser using opentype.js and the matching wrapper libraries — the file is read, decompressed, rebuilt and written back out as a download on your own machine, with no account, no queue and no watermark. That is a real advantage for licensed or unreleased typefaces, where sending the file to a third party may itself breach the EULA.