Convert WOFF2 to WOFF

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.

  • Where it runs On our server, because a browser cannot run the software this needs.
  • Lossless Nothing is discarded. The WOFF holds exactly what the WOFF2 held.
  • File size limit Up to 25 MB per file, free, without an account.
  • Worth knowing The outlines decide what an unwrapped font is: a WOFF holding PostScript curves becomes an OTF, one holding TrueType curves becomes a TTF. Asking for the other is refused rather than answered with a mislabelled file.

Up to 100 files at once. Mixed formats are fine.

The one font conversion here that makes a file bigger

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.

What the re-wrap actually does to the tables

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.

Who still asks for a WOFF, and whether to argue

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.

A web font you did not make is probably a subset

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.

The family name inside the file is not the name in your CSS

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.

Where this WOFF2 came from, and whether you may use it

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.

If a TTF or OTF exists, start from that instead

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.

Why this conversion never runs into the outline question

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.

What it costs to run, and where it happens

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.

How to convert a WOFF2 file into a WOFF

  1. Drop the WOFF2 onto this page, or a folder of them.
  2. Choose WOFF as the target and start the conversion.
  3. Download the WOFF and update the @font-face rule to point at it.

WOFF2 and WOFF: Brotli against zlib

WOFF2 compared with WOFF
WOFF2WOFF
Full nameWeb Open Font Format 2Web Open Font Format
File extension.woff2.woff
Media typefont/woff2font/woff
First published20182009
Published byW3CW3C
SpecificationWOFF 2.0WOFF 1.0
LicensingOpen standardOpen standard
Standing todayCurrentLegacy, still read everywhere
Opens in a browserEvery browserEvery browser
Considered insteadTTFTTF

What survives

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.

Opening the result

fonttools and FontForge read both WOFF2 and WOFF, so there is a way to check the result against the original without a second tool.

What each format is for

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.

WOFF2 to WOFF: size, support and when it is needed

Are my WOFF2 files uploaded anywhere?

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.

Is anything lost converting WOFF2 to WOFF?

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.

Why is the WOFF larger than the WOFF2 it came from?

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.

Do I actually need a WOFF in 2026?

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.

Can I get a TTF or OTF out of this file instead?

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.

The converted font is missing characters. What happened?

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.

Can I use a WOFF2 I downloaded from another website?

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.

More about these formats