Convert WOFF2 to TTF and install the font

A .woff2 is a web font wrapped in brotli, which is why no font manager will open one. Unwrapping it gives back the TrueType font inside, ready to install. Read the licence note first: a font served to a browser is often not licensed to be installed.

WOFF2
No WOFF2 selected
Drop a file to start
Drop WOFF2 files here

or browse your device. Everything is processed on this device

No WOFF2 to hand?

How to convert a WOFF2 to TTF

01
Drop the .woff2 in

The brotli is undone and the table directory read in this tab. Nothing is uploaded, and the font never touches a server of ours.

02
Read the family name in the result

The panel names the family the font declares. That name is what to search for if you would rather license a proper copy than install this one.

03
Check what the file came back as

Most web fonts unwrap to a .ttf. Some hold PostScript outlines and unwrap to a .otf instead, which the note explains. Both install the same way.

04
Install it and look at it

Double click on Windows or macOS, or drop it into ~/.fonts on Linux. Then type some accented characters and a bold weight, because a web font often has neither.

What you actually get out of a web font

WOFF2 is not a font format, it is a delivery wrapper. Inside every .woff2 is an ordinary sfnt, the same table directory a .ttf or .otf holds, compressed with brotli and given a small header. Taking it off is arithmetic rather than conversion: no outline is redrawn, no metric recalculated, nothing rounded. That is why this is safe to do to a font you cannot replace, and why the result is exactly the font the site was serving, for better and for worse.

For worse, because the font a site serves is usually not the font the foundry made. Subsetting is standard practice: the build strips everything outside the characters that site renders, drops hinting to save bytes, and splits a family into one file per weight and style. Install one of those and you have a single weight with no italic, often no Cyrillic or Greek, sometimes no curly quotes, and a font manager that shows one lonely face where the family should be. None of that can be recovered from the file, because it was thrown away before the file was published.

Then there is the outline question. A web font can hold TrueType outlines in a glyf table or PostScript outlines in a CFF table, and the wrapper does not care which. Unwrap the first and you have a TrueType font, which is a .ttf. Unwrap the second and you have an OpenType PostScript font, which is a .otf: the same font, perfectly installable, just not the extension the page promised. This tool reads the table directory and names the file after what is in it, rather than writing .ttf on a CFF font and letting your installer be the one to notice.

The licence is the part no converter can help with. Web font licences are commonly sold by page view or by domain and cover serving the file to browsers, not installing it to design with; some are explicit that the served file may not be extracted. Open families are the exception and are usually easier to get properly anyway: if the result panel says the family is one of the Google Fonts, the original TTF is a free download away and will be the complete family rather than one subsetted weight.

WOFF2 to TTF FAQ

Why will my computer not install a WOFF2?

Because it is not a font file as far as your operating system is concerned. WOFF2 was designed for browsers: an sfnt compressed with brotli and wrapped in a web specific header. Font managers on Windows, macOS and Linux read sfnt files directly and have no reason to implement brotli, so they see a container they do not recognise. Unwrapping it gives them the font they were always able to read.

Is it legal to convert a web font and install it?

Often not, and it is worth knowing before rather than after. Commercial web font licences typically cover serving the file to browsers on named domains and say nothing that permits installing it locally to set type in, and a few forbid extraction outright. Open licences such as the SIL OFL do allow it. The family name in the result panel is what to search for to check, and for open families it is usually also how to get the complete original.

Why does my converted font have so few characters?

Because the site subsetted it before publishing, which almost all of them do. A web build is cut down to the characters that site renders, so accented letters, Greek, Cyrillic, typographic punctuation and alternate figures are commonly gone, and each weight is usually a separate file. Nothing can restore them: they were removed before the .woff2 you have was written. What you have is the slice of the font that site needed.

Why did I get a .otf instead of the .ttf I asked for?

Because the font inside your .woff2 draws with PostScript CFF outlines rather than TrueType ones, and a file holding those is an OpenType font, not a TrueType one. Naming it .ttf would be writing something untrue on the file, and installers vary in how gracefully they refuse it. The .otf you have back installs exactly the same way on every desktop system. Turning CFF curves into TrueType ones is a redraw, not a repack, and FontForge or fonttools is where that is done.

Why is the TTF so much bigger than the WOFF2?

Because you have removed the compression, which was the entire point of the wrapper. A WOFF2 is brotli at maximum effort, so two to three times the size is normal and correct: our sample goes from 259KB to 760KB. An installed font is read from disk rather than downloaded, so the size stops mattering the moment it is on your machine.

Can I convert it back to WOFF2 afterwards?

Yes, and it will be the same font again, because both directions are wrapper work rather than re-encoding. The TTF to WOFF2 page here does it. Do bear in mind that the file will not shrink back to the byte count you started with unless you also subset it, since the original was probably cut down before it was published.

Are my WOFF2 files uploaded to convert them?

No. The WOFF2 is decoded and the TTF is written by your own browser, in this tab. There is no upload endpoint in the site for a file to go to, which you can check in your network tools: convert something and watch that no request carries it. Disconnect from the network after the page loads and it still works.

Drop more files

Same format joins the queue. Anything else re-routes to its own tool.