Convert OTF to WOFF2

Converting OTF to WOFF2 takes the cubic PostScript outlines and every OpenType feature the designer built into the font and re-wraps them, compressed with Brotli, for delivery to a browser. Nothing about the typeface changes. Two things around it do: the features need CSS to switch them on, and a desktop licence rarely covers putting the file on a web server.

  • Where it runs On our server, because a browser cannot run the software this needs.
  • Lossless Nothing is discarded. The WOFF2 holds exactly what the OTF 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.

An OTF is PostScript curves, and the WOFF2 keeps them

The practical difference between an OTF and a TTF is which kind of outline sits inside: cubic Bézier curves in a CFF table for the OTF, quadratic ones in a glyf table for the TTF. Both are covered by the same ISO standard, both install identically, and neither is higher quality by virtue of its extension.

WOFF2 carries either without caring. The conversion sets a flavour on the container and compresses; the CFF table arrives at the browser byte-identical to the one in the OTF. This also decides what happens if the file is ever unwrapped again — a WOFF2 holding CFF curves becomes an OTF, never a TTF.

Your foundry may already supply the WOFF2

Buying a web licence from a commercial foundry usually comes with web files: WOFF2 already produced, frequently already subset into Latin, Latin Extended and other character-set packages, and sometimes hinted differently for screen rendering than the desktop release.

Those are better files than a conversion of the desktop OTF, and you have already paid for them. Check the account or the delivery email before converting anything. The conversion is the right route for open-licensed families, for a typeface commissioned as a one-off, and for the case where the foundry ships desktop files only.

OpenType features survive the wrap; the CSS to switch them on does not

Discretionary ligatures, true small capitals, stylistic alternates, swashes, old-style and tabular figures all live in feature tables inside the font, and every one of them is copied into the WOFF2 unaltered. Nothing is lost in transit.

What is easy to miss is that a browser applies almost none of them on its own. Standard ligatures are on by default and the rest wait for a declaration — font-variant-caps for small capitals, font-variant-numeric for figure styles, font-feature-settings for anything with only a four-letter tag. A brand that paid for a typeface because of its small caps and never wrote that line is not using them.

Small capitals and old-style figures on a brand site

These are the two that most often decide whether a website looks like the printed identity. True small capitals are drawn as their own glyphs with their own weight; the browser’s synthetic version simply scales the capitals down and comes out spindly and too tight. Old-style figures sit on the baseline with ascenders and descenders and read as text rather than as data.

Both are present in most serious OTF releases and both are invisible until requested. If a site is being compared against a brochure and something looks subtly wrong in headings and dates, this is usually where it is — not in the conversion, and not in the font.

A web licence is priced by page views, not by file

Foundries sell desktop and web separately, and a web licence is commonly banded by monthly page views: a portfolio and a national retailer pay differently for the same typeface. The file you upload is identical in both cases, so nothing about the conversion tells you which band you are in.

This matters because the technical step is thirty seconds and gives no warning. A converted desktop OTF sitting on a public server is the ordinary way a licence gets breached, and the party who signed the agreement is usually the designer rather than the developer who uploaded it. Open-licensed families under the SIL Open Font License are the clean case: convert, subset and self-host freely, provided the font is not sold on its own and reserved names are not reused.

Variable OTFs, and one file instead of six

A variable font stores one set of outlines plus the rules for interpolating between design extremes, so a single file covers a continuous weight range rather than six discrete cuts. Browsers reach it through ordinary font-weight values and through font-variation-settings for the less common axes.

It is the case where the WOFF2 wrapper earns most. The interpolation data compresses well, and a variable WOFF2 frequently comes in below two or three of the static weights it replaces, while also giving the design weights that were never cut. Check the licence separately — some foundries price variable releases as their own product.

What subsetting takes out of an OTF along with the glyphs

Subsetting is the step that actually reduces page weight, and on a feature-rich OTF it is also the step that can quietly undo the reason the font was chosen. A subsetter asked to keep only the characters found in the page content sees the small-capital and alternate glyphs as unused, because no ordinary text references them directly.

They go, and the feature tables that pointed at them go with them, and the CSS switching on small caps then does nothing at all. Every serious subsetter has a flag to retain named features or a glyph list; use it, and proof the result before it replaces the file in production.

Proofing the WOFF2 against the printed specimen

A short proofing page is worth building once and reusing on every project: a paragraph of running text, a heading, a line of small capitals, a date in old-style figures, a currency amount, and any accented characters the languages on the site require.

Look at it in a browser at the sizes the design actually uses. Nearly every problem attributed to the conversion turns out to be a missing @font-face weight, a subsetter that removed something, or a feature that was never enabled — and all three are visible in ten seconds on a page like that.

Keep the OTF as the master, and where the copy is converted

The WOFF2 is a delivery artefact. The OTF is the font you licensed, the one that installs on a desktop for the print work, and the one every future web file should be generated from. Store it with the licence document beside it, because the licence is the part that gets lost.

The conversion itself runs on our server rather than in the browser, since fontTools has no browser build. The file goes over an encrypted connection, is converted in an isolated environment and the working directory is deleted when the job finishes. The free ceiling is 25 MB per file, which no ordinary typeface approaches.

How to convert an OTF into a WOFF2

  1. Drop the OTF onto this page, or click to choose one.
  2. Choose WOFF2 as the target and start the conversion.
  3. Download the WOFF2 and check a proofing page before it goes live.

OTF and WOFF2: cubic outlines in a web wrapper

OTF compared with WOFF2
OTFWOFF2
Full nameOpenType FontWeb Open Font Format 2
File extension.otf.woff2
Media typefont/otffont/woff2
First published19962018
Published byAdobeW3C
SpecificationISO/IEC 14496-22WOFF 2.0
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Opens in a browserEvery browserEvery browser
Considered insteadTTFWOFF, TTF

What survives

Nothing is discarded. OTF and WOFF2 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

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

What each format is for

The two are aimed at different work: OTF at typesetting and print, WOFF2 at the web. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

OTF is Adobe's format, published in 1996. The specification is ISO/IEC 14496-22, and it is worth reading if the file has to outlive the tool that wrote it.

WOFF2 comes from W3C and dates from 2018, specified as WOFF 2.0. fonttools and FontForge all read it.

OTF was published in 1996 and WOFF2 in 2018. The older one is generally the safer file to hand to somebody; the newer one usually does the job in fewer bytes.

OTF to WOFF2: features, licences and foundries

Are my OTF 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.

Do ligatures and small capitals survive the conversion?

Yes. The OpenType feature tables are copied into the WOFF2 untouched. What changes is that nothing switches them on by default in a browser — standard ligatures are automatic, everything else needs a CSS declaration such as font-variant-caps or font-feature-settings.

Should I ask the foundry for the WOFF2 instead of converting?

Usually yes. Most foundries supply web files with the web licence, already subset into character-set packages and often hinted for screen. If you are entitled to them, that is a better file than anything a conversion produces from the desktop OTF.

Does my desktop licence cover putting the font on my website?

Normally not. Desktop and web are separate licences from almost every foundry, and web is commonly priced in bands of monthly page views. The conversion is trivial and the entitlement is the actual question.

Can a variable OTF be converted to WOFF2?

Yes, and it is the case where WOFF2 pays off most: one file carries the whole weight axis, replacing six static files, and Brotli handles the shared outline data well. Browsers support variable fonts through font-weight and font-variation-settings.

Is anything about the letterforms altered?

No. The cubic PostScript curves in the CFF table are copied verbatim and compressed. The WOFF2 renders exactly what the OTF renders; any visible difference comes from the browser, the size or the CSS, not from the conversion.

Why is my WOFF2 still large after converting?

Because the OTF was not subset. A retail font carries Latin Extended, Cyrillic, Greek and hundreds of glyphs a brand site never uses, and compression cannot remove what is still there. Subsetting before conversion is where the saving lives.

More about these formats