Cookies for analytics and advertising
We use cookies for analytics and advertising, both sent to Google. Refusing changes nothing you can see.Read the privacy page
Converting WOFF2 to WOFF re-wraps the same font tables with zlib instead of Brotli, which produces an identical typeface in a file about thirty per cent larger. It is the one font conversion here that costs bytes rather than saving them, and it is worth doing only when something downstream refuses to accept a WOFF2 at all.
Up to 100 files at once. Mixed formats are fine.
They convert one after another and download together as a ZIP.
WOFF2 to WOFF
Every other conversion in this family either shrinks the font or leaves it the same size. This one reliably inflates it, because it moves from the better compressor to the worse one. Nothing about the typeface degrades — the outlines are copied verbatim — but the file that comes out is around a third larger than the one that went in.
That is the whole trade, and it means the question to answer first is not how but whether. If nothing is enforcing the older container, do not produce it. If something is, the cost is a few kilobytes on a file that is cached for months, which is a perfectly acceptable price for making a system work.
A WOFF2 is decompressed back to the plain sfnt tables it was built from, and those tables are then written into a WOFF container and deflated with zlib. The glyph outlines, the character map, the horizontal metrics, the kerning and the OpenType feature definitions all pass through untouched.
Because both containers are lossless, the round trip is exact: converting the result back to WOFF2 gives a file that renders identically to the one you started with. There is no generational loss here of the kind that image formats suffer, and no setting that can be got wrong.
Three sources account for nearly all of it. Upload validators with allow-lists written years ago and never revisited. Build configurations inherited with a project. And managed corporate desktops running a browser version chosen by an IT policy rather than by the person using it.
The first two are worth pushing back on once, briefly, because the fix is a one-line change and the alternative is a permanently larger asset. The third is not — nobody on the receiving end of a locked-down browser has the authority to change it, and supplying the WOFF is simply the job.
Fonts prepared for a website are normally reduced to the characters that site actually sets, because that is where nearly all of the page-weight saving comes from. A WOFF2 lifted out of a theme or a build output therefore often contains basic Latin and very little else.
The conversion cannot restore what is absent. If the resulting WOFF renders a name with a Polish ł or a Turkish ğ as a blank box, the glyph was never in the file, and no amount of re-wrapping will produce it. The complete character set exists only in the desktop original, which is the argument for finding that original rather than working from the web copy.
Every font carries its own name table, and web fonts are frequently renamed during preparation — a subsetting or kit-building step will happily write "brandsans-webfont" into a file whose typeface has a quite different name. The @font-face rule you write can call it anything, so the mismatch usually goes unnoticed.
It stops being harmless when the same name collides with something installed locally, or when two files prepared at different times both claim one family name and the browser has to choose. If type is switching unpredictably between weights, opening the fonts and reading their internal names is the fastest way to find out why.
A web font is a downloadable file by construction — that is how a browser renders it — so having a copy is not evidence of anything. The licence attached to the typeface is what governs use, and commercial web licences are commonly issued for one named domain and a band of monthly page views.
If the file came out of a project you are maintaining, the licence exists somewhere in the paperwork and is worth locating before the font moves to a second site. If it came off somebody else’s site, treat it as a font you have not licensed. Open-licensed families are identifiable: the SIL Open Font License permits conversion, subsetting and redistribution provided the font is not sold on its own and reserved names are not reused.
The desktop original is a better source in every respect. It has the full character set, the complete feature tables and no earlier subsetting decision baked into it, and a WOFF produced from it will be exactly as compatible as one produced from the WOFF2.
Look for it in the font purchase, the brand package, the repository history or the designer’s handover before accepting the web copy as the master. Working forward from the original is the difference between a font asset you can re-cut for a new project and one that is frozen at whatever somebody decided in 2019.
Unwrapping a web font to a bare desktop file forces a decision: a font holding TrueType curves becomes a TTF and one holding PostScript curves becomes an OTF, and asking for the other is refused rather than answered with a file whose extension lies about its contents.
WOFF and WOFF2 both carry either kind, so this conversion never has to make that choice. Whatever outlines the WOFF2 holds go into the WOFF unexamined, which is why it is the one direction in this family that cannot fail for a reason to do with the font itself.
The conversion is done by fontTools on our server rather than in the browser, since there is no browser build of it. The file travels over an encrypted connection, is converted in an isolated environment and the working directory is deleted when the job finishes.
The free tier allows 100 server conversions a day and 25 MB per file, and a batch of up to 100 fonts comes back as a single ZIP. A whole web font directory therefore converts in one pass, which is usually what this job actually is — the validator rejecting one file is rejecting all of them.
| WOFF2 | WOFF | |
|---|---|---|
| Full name | Web Open Font Format 2 | Web Open Font Format |
| File extension | .woff2 | .woff |
| Media type | font/woff2 | font/woff |
| First published | 2018 | 2009 |
| Published by | W3C | W3C |
| Specification | WOFF 2.0 | WOFF 1.0 |
| Licensing | Open standard | Open standard |
| Standing today | Current | Legacy, still read everywhere |
| Opens in a browser | Every browser | Every browser |
| Considered instead | TTF | TTF |
Nothing is discarded. WOFF2 and WOFF both store their content losslessly, so the conversion is a change of packaging rather than a change of quality, and it can be repeated without accumulating damage.
fonttools and FontForge read both WOFF2 and WOFF, so there is a way to check the result against the original without a second tool.
WOFF2 is W3C's format, published in 2018. The specification is WOFF 2.0, and it is worth reading if the file has to outlive the tool that wrote it.
WOFF comes from W3C and dates from 2009, specified as WOFF 1.0. FontForge and fonttools all read it.
Yes — this conversion needs software that cannot run in a browser, so the file is uploaded over an encrypted connection. It is deleted as soon as the job finishes, and the result is sent straight back to you without being stored. The work is done by fontTools, the font manipulation library used to build web fonts.
No. Both are lossless containers around the same font tables, so the outlines, metrics, kerning and features are identical. The only change is which compressor was used, and therefore the file size.
Because WOFF2 compresses better. It applies a font-specific preprocessing pass and then Brotli; WOFF applies zlib to the tables as they are. The same font typically comes out around thirty per cent larger in the older container.
Only if something refuses WOFF2. Every current browser reads WOFF2 and has for years. The genuine cases are validators and upload fields with old allow-lists, and locked-down corporate desktops running a browser version nobody chose.
Sometimes. Unwrapping produces whichever the font actually holds — a TTF if the outlines are TrueType, an OTF if they are PostScript — and asking for the wrong one is refused rather than answered with a mislabelled file.
It was already missing them. Web fonts are usually subset to the characters a site needed, and nothing in a container conversion can restore glyphs the file does not contain. The full character set exists only in the original desktop font.
Downloading it is easy and being licensed to use it is a separate matter. The file carries the same licence as the typeface it came from, and most commercial web licences cover one named domain.