Convert TTF to WOFF

Converting TTF to WOFF wraps the same font in the 2009 web container: identical outlines, zlib compression instead of Brotli, and roughly thirty per cent more bytes than the WOFF2 of the same TTF. Almost nobody chooses this today — they are told to, by a theme uploader or a build step that lists .woff and rejects the rest.

  • 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 TTF 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.

When a TTF to WOFF conversion is the right answer

Only when something downstream refuses the alternative. WordPress themes with a custom-font uploader, page builders with a font panel, older Sass and Gulp configurations, and internal style guides written when the fallback stack was still standard all name .woff explicitly and treat anything else as an invalid file.

That is a real constraint and it deserves a straight answer rather than a lecture. Convert, upload, move on. If you control the stylesheet and nothing is enforcing the choice, convert to WOFF2 instead and stop there — the older container has no advantage left to offer.

zlib against Brotli: what the older container costs you

WOFF and WOFF2 are the same idea implemented eight years apart. WOFF wraps the font tables and deflates them with zlib. WOFF2 rearranges the tables first, in a way specific to how font data is structured, and then compresses with Brotli. The second approach lands roughly thirty per cent below the first on the same font.

On a single 25 KB subset that is seven kilobytes, which is not worth an argument. On an unsubsetted family of six weights served to every visitor it is real, and it compounds with the fact that fonts block text rendering while they download. The size difference is the only difference: neither container touches a glyph.

Uploading a WOFF into a theme or a page builder

The upload fields almost always want one file per weight and style, with the weight declared beside it. A family uploaded as a single regular file and then used in bold produces synthesised bold — the browser smearing the regular outlines — which looks wrong in a way that is hard to name and easy to see side by side.

The other recurring trap is the family name. Many panels use the name you type rather than the name inside the font, and a mismatch between what the theme writes into the @font-face rule and what the CSS elsewhere references leaves the page silently on a system font. If the type did not change after upload, that is the first thing to check.

Do not add WOFF as a fallback to a WOFF2

A WOFF listed after a WOFF2 in the same @font-face rule is downloaded by nobody. Every current browser takes the first source it understands, and every current browser understands WOFF2, so the second entry is a file that exists to be forgotten.

It is worse than harmless. When the typeface is updated the WOFF2 gets replaced and the WOFF does not, and the stale copy sits on the server ready to be served the moment somebody reorders the rule or a tool rewrites it. If WOFF is required, serve WOFF alone; if it is not, delete it.

The licence does not care which container you chose

Putting a font on a web server is web use, whether the file has a .woff, .woff2 or .ttf extension. A desktop licence typically covers a stated number of machines and the work produced on them, and stops there. Web licences are sold separately and are commonly priced by monthly page views, which is why converting quietly is such a common and such an expensive mistake.

The SIL Open Font License is the well-marked exception and covers most of what the free font sites hand out: conversion, subsetting and self-hosting are all permitted, provided the font is not sold on its own and reserved names are not reused. The licence file ships in the download and is usually one page.

What a TTF carries into a WOFF unchanged

Everything. The quadratic outlines in the glyf table, the character map, the horizontal metrics, the kerning and every OpenType feature the designer defined are copied across without inspection. WOFF is a compression envelope, not a filter.

That includes the parts you might have wanted to lose. Hinting instructions, unused language coverage and any metadata the foundry embedded all travel with the font, and the WOFF is correspondingly larger than it needs to be. Stripping those is a subsetting job, done before this conversion rather than by it.

Caching, filenames and replacing a WOFF later

Web fonts are served with long cache lifetimes because they change almost never. That is right until the day the typeface is updated, at which point a visitor with the old file cached keeps it — sometimes for a year — and sees a version of the site nobody is looking at.

The fix is the same one used for stylesheets: put a hash or a version in the filename and change it when the font changes. A theme uploader that manages filenames for you usually handles this; a hand-written @font-face rule pointing at fonts/brand.woff does not, and that is the file that will still be stale next spring.

WOFF, WOFF2 and the browsers that justified the split

WOFF arrived in 2009 as a W3C specification and did something the earlier attempts had failed at: it gave foundries a container that was clearly a web font rather than a redistributable desktop file, and gave browsers one format instead of four. That is why web typography stopped being a novelty around 2011.

WOFF 2.0 became a recommendation in 2018 and took over completely, and the first version is now marked legacy for good reason. The browsers that could read WOFF and not WOFF2 have been out of support for years, and the fallback stacks written for them survive mainly in copied snippets and theme documentation.

Batching a font family, and where the files go

A family is rarely one file. Drop the whole folder and up to 100 fonts convert in one pass, returning as a ZIP with the names preserved, which is what makes the theme-upload job bearable — six weights is six uploads either way, but it is not six conversions.

The work is done by fontTools on our server rather than in your browser, so each file travels over an encrypted connection and the working directory is deleted when the job finishes. The free allowance is 100 server conversions a day and 25 MB per file; a font family uses a handful of the first and none of the second.

How to produce a WOFF file from a TTF

  1. Drop the TTF onto this page, or the whole family folder at once.
  2. Choose WOFF as the target and start the conversion.
  3. Download the WOFF, or the ZIP if you converted a batch.

TTF and WOFF: what the 2009 wrapper does

TTF compared with WOFF
TTFWOFF
Full nameTrueType FontWeb Open Font Format
File extension.ttf.woff
Media typefont/ttffont/woff
First published19912009
Published byAppleW3C
SpecificationTrueType Reference ManualWOFF 1.0
LicensingOpen standardOpen standard
Standing todayCurrentLegacy, still read everywhere
Opens in a browserEvery browserEvery browser
Considered insteadOTF, WOFF2WOFF2

What survives

Nothing is discarded. TTF 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

FontForge reads both TTF and WOFF, 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: TTF at typesetting, WOFF at the web. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

TTF is Apple's format, published in 1991. The specification is TrueType Reference Manual, 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.

TTF was published in 1991 and WOFF in 2009. The older one is generally the safer file to hand to somebody; the newer one usually does the job in fewer bytes.

TTF to WOFF: size, support and why anyone still asks

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

Why would I want WOFF rather than WOFF2?

Almost always because something else insists. Theme uploaders, page-builder font panels and older build configurations frequently list .woff and reject anything else. On technical grounds WOFF2 wins, and if you have a free choice you should take it.

How much bigger is a WOFF than a WOFF2?

Around thirty per cent. WOFF compresses the font tables with zlib; WOFF2 uses Brotli with a preprocessing pass tuned for font data. Both are lossless wrappers around the same TTF, so the difference is bytes on the wire and nothing else.

Should I serve both a WOFF and a WOFF2?

No. Every current browser reads WOFF2, so a WOFF listed after it in the same @font-face rule is downloaded by nobody and updated by nobody — it becomes a stale copy of the typeface waiting to be served by mistake.

Does the conversion change the font at all?

No. The outlines, the character map, the metrics, the kerning and the OpenType features are copied verbatim into a compressed container. Unwrapping the WOFF gives back the TTF that went in.

Can I convert my whole font folder at once?

Yes. Up to 100 files go through in one batch and come back as a ZIP, which is the usual shape of this job — a family is four or six TTFs and a theme wants all of them.

Is converting a purchased TTF for a website allowed?

Frequently not, and the container makes no difference. Desktop licences cover installing and designing with the font, not distributing it from a web server. Fonts under the SIL Open Font License permit it; commercial web use is normally a separate purchase.

More about these formats