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 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.
Up to 100 files at once. Mixed formats are fine.
They convert one after another and download together as a ZIP.
OTF to WOFF2
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.
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.
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.
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.
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.
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.
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.
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.
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.
| OTF | WOFF2 | |
|---|---|---|
| Full name | OpenType Font | Web Open Font Format 2 |
| File extension | .otf | .woff2 |
| Media type | font/otf | font/woff2 |
| First published | 1996 | 2018 |
| Published by | Adobe | W3C |
| Specification | ISO/IEC 14496-22 | WOFF 2.0 |
| Licensing | Open standard | Open standard |
| Standing today | Current | Current |
| Opens in a browser | Every browser | Every browser |
| Considered instead | TTF | WOFF, TTF |
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.
FontForge reads both OTF and WOFF2, so there is a way to check the result against the original without a second tool.
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.
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.
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.
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.
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.
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.
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.
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.