File Extension File Extension Guide

What is a WOFF2 File?Web font

A WOFF2 file is a web font, a typeface packed down for fast loading on websites. It wraps ordinary TrueType or OpenType font data in Brotli compression, making it the smallest and most modern web font format. This page shows how to open one, use it and convert it.

Web font file 🅵 Web Open Font Format 2.0 🗜️ Brotli compressed ✓ Smallest web font
.WOFF2

WOFF2 File

Type:Web font file
Extension:.woff2
Full name:Web Open Font Format 2.0
Compression:Brotli
Wraps:TrueType or OpenType

🔤 What is a WOFF2 File?

A WOFF2 file, ending in .woff2, is a web font, a typeface saved in a form built for loading quickly on websites. Its full name is Web Open Font Format 2.0, and it is the format modern sites reach for when they want custom type without slowing the page down.

The trick behind it is compression. A WOFF2 takes an ordinary font, the same TrueType or OpenType typeface a designer might install on a computer, and squeezes it down using a method called Brotli so it travels across the internet as a much smaller download. Google created the format and it became a web standard, with the goal of shrinking fonts as far as possible while keeping every letter shape perfectly intact. The result is the smallest of the common web font formats, which is why nearly every website you visit today serves its fonts this way.

Where a WOFF2 differs from a font on your desktop is its purpose. You do not double-click it to install it into your system. Instead a website points to it in its code, the browser downloads it in the background and uses it to display the page's text in the chosen typeface. In short, a WOFF2 is a font dressed for the web, made compact for speed and meant to be delivered by a browser rather than installed by hand.

💡 In short: A WOFF2 file is a web font in Web Open Font Format 2.0. It wraps a normal TrueType or OpenType font in Brotli compression so it downloads fast, and websites load it through their code rather than you installing it.

📌 WOFF2 File Quick Facts

Full nameWeb Open Font Format 2.0
What it isA compressed web font file
Created byGoogle, a W3C web standard
CompressionBrotli, lossless
WrapsTrueType or OpenType font data
SizeAround 30% smaller than WOFF
Used viaCSS, the @font-face rule

🎁 A Font Wrapper, Not a New Font

It is easy to assume WOFF2 is a different kind of typeface, but that is not what it is. It is a package around a font you already know, not a new sort of lettering.

The actual letter shapes inside a WOFF2 come straight from a TrueType or OpenType font, the same outlines used on the desktop. WOFF2 simply wraps that data and compresses it for delivery, adding no new glyphs and changing none of the existing ones. Because the wrapping is lossless, unpacking a WOFF2 gives back exactly the original font, so every curve, spacing value and typographic feature survives the trip untouched. This is why turning a desktop font into a WOFF2, or a WOFF2 back into a desktop font, changes only the container and the file size, never how the type actually looks.

Understanding this clears up a lot. It explains why a WOFF2 cannot be installed like a normal font, since it is packaged for the web rather than the system. It explains why the format loads so fast, since the compression is doing real work. And it explains why converting to and from it is safe, because the type itself is never altered, only the way it is boxed up for the journey to a browser.

⚖️ WOFF2 vs WOFF

The format closest to WOFF2 is plain WOFF, its older sibling, and the two are best understood as two generations of the same idea, with WOFF2 being the newer and better one.

WOFF came first, arriving in 2010 as the web's first proper font format and using an older compression method related to the one behind ZIP files. WOFF2 followed in 2014 and swapped in Brotli, a stronger compression method, along with clever preprocessing that rearranges the font's data to squeeze it further. The payoff is size. A WOFF2 is typically around 30% smaller than the same font as a WOFF, and far smaller than the raw desktop font, which on a busy page adds up to a noticeably quicker load. Both hold the identical typeface, so the only real trade is compatibility with very old browsers.

For any site built today the guidance is simple. Serve WOFF2 as your main web font, since every current browser supports it, and keep WOFF only as an optional fallback if your visitors include people on genuinely ancient browsers, which in practice is now rare. Listing WOFF2 first and WOFF second in your styles covers both cases at almost no cost.

AspectWOFF2WOFF
Released20142010
CompressionBrotliOlder, zlib-based
File size Around 30% smallerLarger
Best useMain web font todayFallback for old browsers

🖥️ WOFF2 vs TTF and OTF

WOFF2 is also often set beside TTF and OTF, but these sit on the other side of a clear line, since they are desktop font formats while WOFF2 is a web one.

TrueType, ending in .ttf, and OpenType, ending in .otf, are the fonts you install on a computer so that every program can use them. They hold the raw typeface with no compression, which is fine on your own machine but wasteful to send over the internet. WOFF2 takes exactly that TTF or OTF data and compresses it for the web, so rather than competing with them it builds on them. The rule of thumb is to use TTF or OTF when a font needs to be installed and used in desktop software, and WOFF2 when the same font needs to appear on a website. Since the outlines are shared, a single typeface commonly exists as an OTF for designers and a WOFF2 for the site, both showing identical letters.

💡 Good to know: TTF and OTF are for installing on a computer, while WOFF2 is for serving on a website. They carry the same letter shapes, so a font is simply saved as TTF or OTF for desktop use and as WOFF2 for the web.

▶️ How to Open a WOFF2 File

A WOFF2 is meant for browsers rather than people, so opening one to look at it takes a slightly different approach than double-clicking a normal document.

If you just want to see what the typeface looks like, the easiest route is a preview. Our online File Viewer opens a WOFF2 in your browser and shows the font, with no installation needed. Font editors such as the free FontForge can open a WOFF2 too, letting you inspect its letters and details closely, and the same is true of the developer tools built into every web browser, which show the fonts a page has loaded. What a WOFF2 will not do is install into your operating system by a double-click the way a desktop font does, because it is not built for that. If you actually want the typeface available across your computer's programs, the step is to convert it to a TTF or OTF first and install that, which the next sections cover.

💡 Good to know: A WOFF2 will not install as a system font on its own. To use the typeface in desktop programs, convert it to TTF or OTF and install that version instead.

🌐 Using WOFF2 in CSS

On a website a WOFF2 is brought in through a small piece of styling called an @font-face rule, which tells the browser where the font lives and what to call it.

You give the font a name, point to the WOFF2 file and, if you like, list a WOFF version after it as a fallback for older browsers. Once that is set up, you use the font's name anywhere in your styles just as you would a built-in typeface, and the browser fetches the WOFF2 and applies it. Listing the WOFF2 first means modern browsers grab the smaller, faster file and only fall back to WOFF where they have to.

A basic @font-face rule

@font-face {
  font-family: "My Web Font";
  src: url("myfont.woff2") format("woff2"),
       url("myfont.woff") format("woff");
}

/* Then use it anywhere */
body { font-family: "My Web Font", sans-serif; }

One thing worth remembering is licensing. A font you can install on your own machine is not automatically cleared for use on a public website, so before you serve a WOFF2 you should check that the font's licence allows web use, which is a separate permission from desktop installation.

✂️ Making WOFF2 Smaller with Subsetting

Even after Brotli compression, a WOFF2 can be trimmed a lot further, because most fonts carry far more characters than any one website actually shows, and subsetting strips out the ones you never use.

A typical font file contains thousands of glyphs covering many languages, symbols and scripts, yet an English-language site might only ever display basic Latin letters, digits and a little punctuation. Subsetting builds a new font that keeps just those characters and drops the rest, and the size difference is dramatic. A popular interface font that runs to about 110 kilobytes as a full WOFF2 can fall to roughly 30 to 40 kilobytes once cut down to a Latin subset, a reduction of around two thirds, and this saving comes on top of the compression WOFF2 already provides.

Building a subset is a step you do before or during conversion, using font tooling such as the widely used pyftsubset from the fontTools project or glyphhanger, or a web generator like the one from Font Squirrel. On the page you then tell the browser which characters each file covers using the unicode-range descriptor in your @font-face rule, so a browser only downloads a subset when the page actually needs those characters. For multilingual sites this lets you split a font into per-language pieces that load on demand, which is exactly the technique large font services use behind the scenes.

Subsetting: load only the characters you use Full WOFF2 every script and glyph ~110 KB Latin subset only the characters used ~35 KB Removing unused glyphs cuts about two thirds of the size, on top of the Brotli compression WOFF2 already applies.
💡 Good to know: Subsetting can cut a font by 50 to 80 percent on top of WOFF2's own compression. Keep the OpenType layout features you rely on, such as ligatures, when you subset, since aggressive trimming can otherwise remove them.

⚡ Loading WOFF2 for Speed

Choosing WOFF2 is only half of fast web type, since how you load it decides when visitors actually see readable text, and a couple of small settings make a real difference.

The first is the font-display setting in your @font-face rule. Adding font-display with the value swap tells the browser to show text right away in a fallback system font and then swap in the web font once it arrives, which avoids the frustrating spell of invisible text that can otherwise appear while a font loads. The second is preloading. Marking your single most important font with a preload hint tells the browser to start fetching it early, before it would normally discover the font through your styles, so the main text appears sooner. Preloading is best used sparingly, on just the one or two fonts a visitor sees first, since preloading everything cancels out the benefit.

There is also the question of where the font is served from. Loading fonts from a large hosted service is convenient, but self-hosting your WOFF2 files on your own server now performs just as well or better in modern browsers, and it avoids sending your visitors' details to a third party. That privacy point carries real weight, as a European court has held that quietly passing visitor data to an outside font service can breach the region's data-protection law, the GDPR. For many sites, keeping the WOFF2 files in-house is both the faster and the safer choice.

⚠️ A load-time note: When you preload a font, the hint needs the crossorigin attribute even if the file sits on your own site, because browsers always fetch fonts as cross-origin requests. Leaving it off makes the browser download the font twice.

🔄 Converting WOFF2 Files

Because WOFF2 sits between desktop fonts and the web, converting to and from it is a routine task, and it is a safe one since the type itself never changes.

The most common direction is turning a desktop font into a WOFF2 for a website. Taking a TTF or OTF and producing a WOFF2 simply compresses it for delivery, and because the process is lossless the web version shows exactly the same letters as the original. The reverse is just as useful, turning a WOFF2 back into a TTF or OTF when you need a version you can install and use in desktop programs, since a WOFF2 on its own cannot be installed. You might also convert an old WOFF to WOFF2 to shrink it further. Our File Converter handles these swaps in the browser, moving a font between WOFF2, WOFF, TTF and OTF without installing anything.

The one caution is again about rights rather than the technology. Converting a font you bought for desktop use into a WOFF2 and putting it on a server is a web-use question your licence has to permit, so it is worth confirming the font is cleared for the web before you publish it.

🛠️ Creating a WOFF2 and Variable Fonts

Producing a WOFF2 from a desktop font is quick, and the same tooling opens the door to variable fonts, a modern twist that WOFF2 handles neatly.

To make a WOFF2 you take a TTF or OTF and run it through a converter. A browser-based tool does this without any setup, and for a repeatable build developers reach for command-line utilities, chiefly the woff2 compressor from the format's own project or the fontTools library, which can both compress a font and subset it in one go. Whichever you use, the output is the same compact, lossless WOFF2 ready to drop onto a site.

Converting a font to WOFF2 on the command line

# The WOFF2 project's compressor makes myfont.woff2
woff2_compress myfont.ttf

# Or subset and compress in one step with fontTools
# (pip install fonttools brotli)
pyftsubset myfont.ttf --flavor=woff2 --unicodes=U+0000-00FF

Variable fonts are where this gets interesting. A variable font packs many styles, such as every weight from thin to black, into a single file instead of one file per style, and delivered as a WOFF2 that can replace eight to twenty separate font files with just one download. You declare the weight as a range in your @font-face rule and the browser can then use any weight in between. When a design genuinely uses several weights, a variable WOFF2 is a big saving, though for a site that needs only one weight a small static subset can still be the leaner choice.

❓ Frequently Asked Questions

Font formats: same letters, different sizes example font, size per format TTF / OTF desktop, uncompressed ~316 KB WOFF web, older compression ~184 KB WOFF2 web, Brotli, smallest ~132 KB Same letters throughout. WOFF and WOFF2 just compress the TTF or OTF data for the web.

A WOFF2 file, with the .woff2 extension, is a web font saved in Web Open Font Format 2.0. It takes an ordinary TrueType or OpenType typeface and compresses it with a method called Brotli so it downloads quickly on websites. Google created the format and it is now a web standard, chosen because it produces the smallest web font files while keeping every letter shape intact. You do not install a WOFF2 like a desktop font, instead a website loads it through its code and the browser uses it to display the page's text. It is the default web font format on the modern web.

Since a WOFF2 is meant for browsers, you open it to preview rather than to install. The simplest way is a web-based viewer that shows the typeface without any setup, and our online File Viewer does exactly that. Font editors like the free FontForge can also open a WOFF2 so you can inspect its letters and details, and a browser's built-in developer tools show the fonts a page has loaded. What you cannot do is install a WOFF2 as a system font by double-clicking it, because it is packaged for the web. To use the typeface across your computer's programs, convert it to a TTF or OTF and install that.

They are two versions of the same web font idea, with WOFF2 the newer and more efficient one. WOFF appeared in 2010 using an older compression method, and WOFF2 followed in 2014 with Brotli compression plus preprocessing that shrinks the font further. The result is that a WOFF2 is usually about 30% smaller than the same font as a WOFF, so pages load quicker. Both hold the identical typeface, so the only reason to keep WOFF around is as a fallback for very old browsers. On any modern site you serve WOFF2 first and treat WOFF as an optional backup.

The main difference is what they are for. TTF and OTF are desktop font formats you install on a computer, holding the raw typeface with no compression. WOFF2 takes that same TrueType or OpenType data and compresses it for fast delivery on the web. So they are not rivals, since WOFF2 is built on top of TTF and OTF rather than replacing them. Use TTF or OTF when a font needs to be installed and used in desktop software, and WOFF2 when it needs to load on a website. The letter shapes are identical, so one typeface often exists as both an OTF for design work and a WOFF2 for the site.

Yes, and the conversion is safe because a WOFF2 is just a compressed wrapper around TTF or OTF data. Turning a WOFF2 back into a TTF or OTF gives you a version you can install and use in desktop programs, with the letters completely unchanged. Our File Converter does this in the browser, moving a font between WOFF2, WOFF, TTF and OTF without you installing anything. The one thing to keep in mind is licensing, since a font cleared for the web is not automatically cleared for other uses, so check the font's licence covers what you intend to do with the converted file.

You bring it in with an @font-face rule in your CSS. That rule gives the font a name and points to the WOFF2 file, and you can list a WOFF version after it as a fallback for older browsers. Once it is declared, you use the font's name in your styles just like any built-in typeface, and the browser downloads the WOFF2 and applies it. Listing the WOFF2 first ensures modern browsers get the smaller, faster file. Before publishing, make sure the font's licence permits web use, since that is a separate permission from installing it on a desktop.

The main technique is subsetting, which removes characters your site never displays. Most fonts include thousands of glyphs for many languages, so trimming a font down to just the characters you use, often basic Latin letters, digits and punctuation, shrinks it a lot. A font that is around 110 kilobytes as a full WOFF2 can drop to roughly 30 to 40 kilobytes as a Latin subset, a saving on top of WOFF2's own compression. You build a subset with font tools such as pyftsubset or a web generator, then tell the browser which characters each file holds using the unicode-range setting in your @font-face rule.

It is a setting in your @font-face rule that controls what visitors see while a web font is still loading. With font-display set to swap, the browser shows your text immediately in a fallback system font and then swaps in the web font once it arrives, so readers are never left staring at invisible text. Without it, some browsers hide the text until the font downloads, which can leave a blank spell on a slow connection. Adding swap is a simple, widely recommended way to keep text visible and improve how fast a page feels, and it pairs well with preloading your most important font.

Self-hosting is often the better choice today. Serving your own WOFF2 files from your server now performs as fast as or faster than a large hosted font service in modern browsers, and it keeps your visitors' data private, since loading fonts from an outside service can pass their details to that third party. A European court has ruled that doing so without consent can breach data-protection rules, which has pushed many sites to self-host. Hosted services still offer convenience and automatic subsetting, but if you want speed, privacy and full control, downloading the WOFF2 files and serving them yourself is a sound approach.

You run the TTF or OTF through a converter. The easiest way is a browser-based tool that produces a WOFF2 with no setup, which suits a one-off job. For a repeatable build, developers use command-line tools, chiefly the woff2 compressor from the format's own project or the fontTools library, which can compress and subset a font in a single step. All of them produce the same lossless WOFF2, since the conversion only changes the container and compression, not the letters. Just remember to confirm the font's licence allows web use before you publish the result.

A variable font packs many styles of a typeface, such as every weight from thin to bold, into one file rather than a separate file per style. Delivered as a WOFF2, a single variable font can replace eight to twenty individual font files with just one download, which can cut the total weight of your fonts significantly. In your @font-face rule you declare the weight as a range, and the browser can then render any weight within it. Variable fonts shine when a design uses several weights or widths, though for a site that needs only one weight, a small subset static WOFF2 may still end up smaller.

Effectively yes. Every modern browser, including Chrome, Firefox, Safari, Edge and Opera, supports WOFF2, giving it coverage well above 95% of users. The only gap is genuinely old browsers such as long-outdated versions of Internet Explorer, which is why some sites still list a WOFF file as a fallback after the WOFF2 in their @font-face rule. In 2026 that fallback is rarely needed, so for most projects you can serve WOFF2 alone. If your analytics show meaningful traffic from very old browsers, adding a WOFF fallback costs little and guarantees everyone sees your type.

Key Takeaways

A WOFF2 file is a web font in Web Open Font Format 2.0, a Brotli-compressed wrapper around a TrueType or OpenType typeface that loads fast on websites.

It holds the same letters as the original font, just compressed for the web, so it is around 30% smaller than WOFF and cannot be installed like a desktop font.

You load a WOFF2 on a site with an @font-face rule, preview it in a viewer or font editor, and convert it to or from TTF, OTF and WOFF without changing how the type looks.